gpt4 book ai didi

javascript - ES6 运行时交换模块

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:12 25 4
gpt4 key购买 nike

我有 api.js,它加载mock.js 或server.js 并将其导出。结果是,根据服务器环境变量,我可以在后端之间交换。

问题是,我想在运行时执行此操作,而不影响已经使用mock.js 和 server.js 模块的“api”的所有代码。

我希望我的应用程序根据连接状态使用mock.js 或server.js。以下代码仅在初始化期间有效,在运行时无效。

import server from './server'
import mock from './mock'

let backend = null
if (process.env.NODE_ENV === 'development' && Math.random() > 0.5 ) {
backend = mock
} else {
backend = server
}

export default backend

最佳答案

如果需要,您可以利用 ES6 实时绑定(bind),例如

import server from './server';
import mock from './mock';

export { backend as default };

let backend = server;

setInterval(() => {
backend = Math.random() > 0.5 ? mock : server;
}, 1000);

每秒都会随机更改默认导出。

在 ES6 中,导入的变量是对导出值的模块中变量的实时引用,因此您只需

import backend from "./api";

并且后端值会随着时间的推移而改变。

特别是在你的情况下,改变

export default backend;

export { backend as default};

很关键,因为第一个不起作用,因为它是缩写

const uniqueTempVal = backend;
export { uniqueTempVal as default };

如您所见,这意味着稍后重新分配后端不会影响导出的值。

关于javascript - ES6 运行时交换模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45514424/

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