如何在模块化项目中实现全局传递的数据对象
方案
由于export输出的接口与其对应的值是动态绑定关系,即通过该接口可以设置/获取模块内部实时的值,因此只需要直接使用模块导出一个对象即可,如下:
1 | |
然后在需要用到这些数据的模块中引入:
1 | |
注意别忘了大括号。
不要使用export default
因为如果使用export default,类似这样:
1 | |
由于该模块只对外暴露了default对象,那么在使用的地方,一旦你涉及修改这些属性的值,webpack就会报类似下面这样的黄色警告:

另外这样写,在打包压缩之后,会出现一个问题,就是无法修改这些属性的值。将import的该模块在控制台打印输出,可以看到只暴露了一个default对象的getter方法,没有default对象的setter方法,更没有其他属性的setter方法,自然无法修改属性了。