背景信息
我亲眼目睹了 Meteor 将每个文件包装到一个匿名函数中以防止填满全局命名空间。
假设我有一个类似的文件结构:
- 客户/
- index.html
- 样式.css
- 客户端.js
- 帮助者/
- somehelper.js
- 服务器/
- server.js
- 模特/
- ...
我的问题
我如何使用 somehelper.js 文件中的对象 client.js?
如何创建自己的命名空间?例如:
client
、client.helpers
、models
和server
。
最佳答案
你是对的!每个文件都有自己的本地命名空间。要定义全局变量,您需要删除前导 var
。防止污染全局命名空间的常见做法是使用单个全局对象,例如App
,用于托管所有全局范围的符号。该对象可以在顶级 lib
文件夹中定义,以解决一些与文件加载顺序相关的问题。
如果出于某种原因您的代码取决于文件加载顺序,您可以将它的某些部分包装在 Meteor.startup
例程中以防止未定义类型错误。
另一种可能的解决方案 - 如果喜欢模块和类似的东西 - 将使用一些类似 AMD 的 Meteor 工具,如 this one例如。
关于javascript - Meteor 0.8.x 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25168288/