如何将Global Variables放入Globals.js模块并在其他模块中访问它们?

时间:2016-03-23 19:10:26

标签: javascript node.js global-variables

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

  1. 如何创建包含所有全局变量的模块?
  2. 如何导出或导入或我需要做什么才能在另一个js模块中使用这些全局变量?
  3. 我正在创建一个包含大约6个变量的小应用程序,这些变量必须具有我的应用程序的全局范围。有人可以给我看一个例子吗?

    全局变量:

    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文件中。所有似乎都工作正常,但有一个浏览器级变量认为它是错误的。所以现在我想确保全局变量可以按预期访问。

    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;
    

    我没有获得要求以及如何设置它。

2 个答案:

答案 0 :(得分:1)

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

例如,您可以创建包含以下内容的文件globals.js

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

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

如果您想要更结构化的方法,请查看webpack等项目。它们很棒,但设置起来有点复杂。

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

答案 1 :(得分:1)

在浏览器中,在函数作用域外声明的任何变量都是全局变量(在窗口对象上设置)。确保你的&#39;&lt;脚本&gt;&#39;标签的顺序正确(在尝试访问它们之前声明你的全局变量)。