Meteor 0.8.x命名空间

时间:2014-08-06 19:09:25

标签: javascript node.js namespaces meteor directory-structure

背景资料

我目睹Meteor将每个文件包装成一个匿名函数,以防止填满全局命名空间。

假设我有类似的文件结构:

  • 的客户机/
    • 的index.html
    • 的style.css
    • client.js
    • 助手/
      • somehelper.js
  • 服务器/
    • server.js
  • 模型/
    • ...

我的问题

  1. 如何从 client.js somehelper.js 中的对象>?

  2. 如何创建自己的命名空间?例如:clientclient.helpersmodelsserver

1 个答案:

答案 0 :(得分:4)

你是对的!每个文件都有自己的本地命名空间。要定义全局变量,您需要删除前导var。防止污染全局命名空间的常见做法是拥有一个全局对象,例如App,用于托管所有全局范围的符号。此对象可以在顶级lib文件夹中定义,以克服一些与文件加载顺序相关的问题。

如果由于某种原因,您的代码依赖于文件加载顺序,您可以在Meteor.startup例程中包含它的某些部分,以防止未定义类型错误。

另一个可能的解决方案 - 如果像模块和类似的东西 - 将使用一些AMD模仿工具 Meteor ,例如this one