Javascript Meteor 0.8.x名称空间 背景信息
我见过Meteor将每个文件包装成一个匿名函数,以防止填充全局名称空间 假设我有一个类似的文件结构:Javascript Meteor 0.8.x名称空间 背景信息,javascript,node.js,namespaces,meteor,directory-structure,Javascript,Node.js,Namespaces,Meteor,Directory Structure,我见过Meteor将每个文件包装成一个匿名函数,以防止填充全局名称空间 假设我有一个类似的文件结构: 客户端/ index.html style.css client.js 助手/ somehelper.js 服务器/ server.js 型号/ 我的问题 如何使用文件client.js中somehelper.js中的对象 如何创建自己的名称空间?例如:客户端,客户端.助手,模型和服务器 你说得对!每个文件都有自己的本地名称空间。要定义全局变量,需要删除前导的var。防止
- 客户端/
- index.html
- style.css
- client.js
- 助手/
- somehelper.js
- 服务器/
- server.js
- 型号/
我的问题
客户端
,客户端.助手
,模型
和服务器
你说得对!每个文件都有自己的本地名称空间。要定义全局变量,需要删除前导的
var
。防止污染全局命名空间的常见做法是使用单个全局对象(例如,App
)承载所有全局范围的符号。可以在顶级lib
文件夹中定义此对象,以解决一些与文件加载顺序相关的问题
如果出于某种原因,您的代码取决于文件加载顺序,您可以将其某些部分包装在Meteor.startup
例程中,以防止出现未定义的类型错误
另一个可能的解决方案-如果喜欢模块和类似的东西-将使用一些AMD模仿工具来模仿流星,例如。关于,如果我有一个文件
helperA
和一个文件helperB
,我可以重用define()
在两个文件中都添加模块吗?我不认为可以将模块添加到多个文件中,如果这是您要问的。但这里肯定有办法实现你想要的。