gpt4 book ai didi

javascript - 实现可设置模块作用域变量的最常见模式

转载 作者:行者123 更新时间:2023-12-02 23:56:04 25 4
gpt4 key购买 nike

我正在编写一个客户端来与 JavaScript 中的服务器 API 进行对话。我有 OOP 背景,但正在尝试接受现代 EcmaScript。

所以我从这个开始:

customerApi.js:

const baseUrl = "http://myapi";
export const getCustomers = () => { /* get customer code */ }
export const addCustomer = cust => {}
export const deleteCustomer = id => {}

所有函数都使用baseUrl。

现在我想重构,以便使用 customerApi.js 的代码在 baseUrl 中设置/传递,而我想出的唯一方法是 -

将其设置为一个类:

export default class customerApi {
constructor(baseUrl) {
this._baseUrl baseUrl;
}
}

将其传递到每个方法中:

export const getCustomers = (baseUrl) => { /* get customer code */ }
export const addCustomer = (baseUrl,cust) => {}
export const deleteCustomer = (baseUrl,id) => {}

封装在函数中:

const moduleFn = baseUrl => (
return {
getCustomers: () => { /* get customer code */ }
addCustomer: (cust) => {}
deleteCustomer: (id) => {}
}
)
export default moduleFn;

这些只是示例。在模块上实现“可设置”变量的最常见模式是什么?

最佳答案

我会采用函数方法

export default function(baseUrl){

return Object.freeze({
getCustomers: () => { /* get customer code */ }
addCustomer: (cust) => {}
deleteCustomer: (id) => {}
})

}

这是因为所有函数都在 baseUrl 上闭包,不需要额外的工作。

客户端代码可以简单地

import yourmodule from 'yourmodule';
var derp = yourmodule('www.derp.com')

关于javascript - 实现可设置模块作用域变量的最常见模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55387391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com