所以我试图在我的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);
试过这个并且它失败了。
答案 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变量添加到其中,以便您可以从客户端访问它。
旁注:增加了构建时间,而不是运行时间。
希望这有帮助。