Jam*_*een 28 javascript scope node.js meteor
我有
var Schemas = {};
Meteor.isClient && Template.registerHelper("Schemas", Schemas);
Schemas.Person = new SimpleSchema({
fullName: {
type: String,
index: 1,
optional: true,
},
email: {
type: String,
optional: true
},
address: {
type: String,
optional: true
},
isActive: {
type: Boolean,
},
age: {
type: Number,
optional: true
}
});
Run Code Online (Sandbox Code Playgroud)
在一个文件和
var Collections = {};
Meteor.isClient && Template.registerHelper("Collections", Collections);
Persons = Collections.Persons = new Mongo.Collection("Persons");
Persons.attachSchema(Schemas.Person);
Run Code Online (Sandbox Code Playgroud)
在另一个文件中.
我收到了错误ReferenceError: Schemas is not defined
.很明显,我必须Schemas
在我的collections.js
文件中定义而不是将它们分开.但Meteor如何在单独的文件中使用代码?我可以访问一些对象和变量,而其他对象和变量是无法访问的.
Kyl*_*yll 57
以经典JavaScript方式定义变量时:
var someVar = 'someValue';
Run Code Online (Sandbox Code Playgroud)
在您的.js
文件的根目录下,Meteor使用IIFE将其范围限定到文件.
如果要定义全局变量,只需不要编写var
,给出:
someVar = 'someValue';
Run Code Online (Sandbox Code Playgroud)
这将定义默认情况下,所有的应用程序中的变量,虽然你可以通过写在该声明限制其特定的认可文件夹(client
或server
文件夹为例).
但是,这个变量不会首先被绝对定义.它将在Meteor运行定义它的实际代码时定义.因此,它可能不是最好的做法,因为你将很难处理加载顺序,它会使你的代码依赖于Meteor如何加载文件:你把文件放在哪个文件夹,文件的名称......你的如果您稍微触摸您的架构,代码很容易出现混乱错误.
正如我在另一篇密切相关的帖子中建议的那样,你应该直接去找一个包!
Jos*_*eau 11
使用var
关键字声明的Meteor中的变量的范围限定在它们声明的文件中.
如果要创建全局变量,请执行此操作
Schemas = {}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
31123 次 |
最近记录: |