我目睹Meteor将每个文件包装成一个匿名函数,以防止填满全局命名空间。
假设我有类似的文件结构:
如何从 client.js somehelper.js 中的对象>?
如何创建自己的命名空间?例如:client
,client.helpers
,models
和server
。
答案 0 :(得分:4)
你是对的!每个文件都有自己的本地命名空间。要定义全局变量,您需要删除前导var
。防止污染全局命名空间的常见做法是拥有一个全局对象,例如App
,用于托管所有全局范围的符号。此对象可以在顶级lib
文件夹中定义,以克服一些与文件加载顺序相关的问题。
如果由于某种原因,您的代码依赖于文件加载顺序,您可以在Meteor.startup
例程中包含它的某些部分,以防止未定义类型错误。
另一个可能的解决方案 - 如果像模块和类似的东西 - 将使用一些AMD模仿工具 Meteor ,例如this one。