如何将全局variables放在Globals.js模块中并在其他模块中访问它们?

我感到很傻,但我找不到如何做到这一点的好例子。 我已经看到一些接近,也许他们是正确的目标,但我无法弄清楚。

  1. 如何创build一个包含我所有全局variables的模块?
  2. 如何导出或导入,或者我需要做什么来在另一个js模块中使用这些全局variables?

我正在创build一个包含大约6个必须具有全局范围的variables的小应用程序。 有人可以给我看一个例子吗?

全局variables:

var scene = viewer.scene; var ellipsoid = scene.globe.ellipsoid; var entity; var newPolygon; var newOutline; var canvas = document.getElementById("canvas"); var gl = canvas.getContext("webgl"); var extensions = gl.getSupportedExtensions(); 

我有一个名为globals.js文件中的上述

  <script src="Source/globals.js"></script> <script src="Source/index.js"></script> <script src="Source/positionHandler.js"></script> <script src="Source/polyCreate.js"></script> <script src="Source/polyUpdate.js"></script> 

它在html文件中列出。 所有似乎工作得很好,但有一个浏览器级别的variables,认为这是错误的。 所以现在我想确保全局variables可以按预期访问。

 Globals = { scene: require('scene'), ellipsoid: require('ellipsoid'), canvas: require('canvas') }; module.exports = Common; 

要么

 Globals = { scene: require('viewer.scene'), ellipsoid: require('scene.globe.ellipsoid'), canvas: require('document.getElementById("canvas")') }; module.exports = Common; 

要么

 Globals = { scene : viewer.scene, ellipsoid : scene.globe.ellipsoid, canvas : document.getElementById("canvas"), gl : canvas.getContext("webgl"), extensions : gl.getSupportedExtensions() }; module.exports = Common; 

我没有得到要求 ,如何设置它。

在浏览器中,在函数范围之外声明的任何variables都将是全局variables(在窗口对象上设置)。 确保你的'<script>'标签的顺序是正确的(在你尝试访问它们之前声明你的全局variables)。

这在JavaScript领域有点复杂,取决于你在说什么背景。 我假设你正在讨论在浏览器(vs节点)中运行的代码,如果是这种情况,最简单的方法是使用名称间隔对象。 并暗示将其导入其他代码之前进行回复。

例如,你可以使文件globals.js包含:

 MyAppGlobals = { property1: "some-value", anotherProperty2: "other-value" }; 

在html中,只要确保在任何依赖于全局variables的代码之前添加了<script src="path/to/globals.js"></script>

如果你想要一个更结构化的方法,请检查项目,如webpack 。 他们很棒,但是设置起来有点复杂。

基本上webpack或browserify让你编写正确的导入和导出语句(你可以在node.js中),然后执行一个依赖分析,将所有需要的代码“编译”成一个捆绑文件,然后包含在你的html中。 (粗略的描述,但我希望它可以帮助)