如何在ES2015模块中使用全局变量
How can I make use of global variables in ES2015 modules
我正在使用Gulp、Babelify和Browserify将ES2015编译成ES5。
文件夹结构:
project
- js
- level.js
- main.js
如果我有以下定义的模块:
// level.js
var level = [];
level[0] = {
name: 'level1',
grid: {
width: GRID_WIDTH,
height: GRID_HEIGHT
}
};
export default level;
然后我有了我的主要JavaScript文件:
// main.js
import level from './level.js';
var siteGame = (function() {
var GRID_WIDTH = 50,
GRID_HEIGHT = 50;
console.log(level);
}());
如何确保GRID_WIDTH和GRID_HIGHT在level.js中可用?
目前我收到一个错误,建议GRID_WIDTH未定义(来自级别.js)
模块的全部意义在于每个模块都有自己的作用域。如果您想将数据"注入"到模块中,可以从level.js导出一个接受维度、构造数组/对象并返回它的函数,也可以将维度放在自己的模块中并导入level.js
您在函数中定义了这些变量-它们在该函数的btackets中生存和消亡,您不能在它们之外的任何地方访问它们。如果你想在全局范围内使用这些变量,你可以-
- 按照es5中的操作将它们写在全局窗口对象上,但由于各种原因,不太推荐使用
- 创建一个模块,该模块导出一个对象,其中包含您希望在应用程序中公开的所有变量,这样您就可以导入该模块并获得所需的所有变量
我真的推荐第二种选择而不是第一种。
相关文章:
- 带有全局变量、咖啡脚本和回调的模块 CSV
- 如何将全局变量放在Globals.js模块中,并在其他模块中访问它们
- 如何在 Node 中访问模块全局变量.js例如浏览器中的 window.variable
- TypeScript:从模块创建全局变量
- 可以在模块中运行.导出访问模块中的全局变量
- 对角度模块使用单个全局变量是否是一种反模式
- 什么被认为是在节点模块中共享“全局”变量的好方法
- 将模块安装为全局变量时遇到问题 -- /usr/bin/env 不是目录
- 在 TypeScript 中使用外部模块声明一个全局变量
- 节点模块包括数据文件作为全局变量
- Javascript Module 模式.如何访问模块内的全局变量
- 如何将代码包装到模块中以避免使用全局变量
- 使用 ES6 模块重新导出全局变量
- 如何从解析模块访问全局变量
- 对模块中全局变量的引用
- 如何在ES2015模块中使用全局变量
- Nodejs全局变量和模块
- 如何使用webpack将入口模块中的变量公开为全局变量
- 如何从requirejs模块访问全局变量
- 如果requireJS模块在$上设置了全局变量,我如何仅在全局变量被分配时执行模块代码