生产与测试代理es6导入

时间:2018-03-13 19:24:32

标签: javascript node.js reactjs typescript ecmascript-6

所以我试图在我的react应用程序中基于boolean导入一个不同的javascript文件。

当我在开发模式下运行时,我想导入我的testProxy.js文件,该文件只返回json数据。

当我在生产中运行应用程序时,我想使用prodProxy.js,它通过ajax连接到我的生产应用程序并返回结果等。

我通过以下方式实现了这一点:

new webpack.ProvidePlugin({ api: isDevBuild ? "./dev/api" : "./prod/api" }),

然后在我的文件中我宣布api。 declare var api: any(使用打字稿)

我不是很喜欢这个,我不知道另一种方式。

我想要的是下面的内容

下面的伪代码:

let _api = isDev ? import('devApi') : import('prodApi'); let someObject = new MyClass(_api);

试过这个并且它失败了。

1 个答案:

答案 0 :(得分:0)

let _api = isDev ? import('devApi') : import('prodApi');
let someObject = new MyClass(_api);

这不可能:

您必须在JavaScript文件的顶层导入所有ES6模块。

您无法根据条件导入ES6模块。

你可以这样做:

let _api = isDev ? require('./devApi') : require('./prod/api');
let someObject = new MyClass(_api);

我不知道isDev是指什么。假设您有一些节点/浏览器设置,并且isDev基于process.env.DEVELOPMENT传递的环境变量,则客户端将无法使用此设置。

您需要使用webpack环境插件:https://webpack.js.org/plugins/environment-plugin/并将env变量添加到其中,以便您可以从客户端访问它。

旁注:增加了构建时间,而不是运行时间。

希望这有帮助。