我有
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
}
});
在一个文件中
var Collections = {};
Meteor.isClient && Template.registerHelper("Collections", Collections);
Persons = Collections.Persons = new Mongo.Collection("Persons");
Persons.attachSchema(Schemas.Person);
在另一个文件中。
我得到了错误ReferenceError: Schemas is not defined
。很明显,我必须Schemas
在collections.js
文件中定义而不是将它们分开。但是Meteor如何处理单独文件中的代码?我可以访问某些对象和变量,而另一些则无法访问。
当您以经典的JavaScript方式定义变量时:
var someVar = 'someValue';
在.js
文件的根目录,Meteor使用IIFE将其范围限定为文件。
如果要定义全局变量,只需不写var
,就可以了:
someVar = 'someValue';
这将定义默认情况下,所有应用程序中的变量,虽然你可以通过写在该声明限制其特定的认可文件夹(client
或server
例如文件夹)。
但是,不会首先绝对定义此变量。当Meteor运行定义它的实际代码时,将定义它。因此,这可能不是最佳实践,因为您将难以处理加载顺序,这将使您的代码取决于Meteor加载文件的方式:将文件放入哪个文件夹,文件名...如果稍微触摸一下体系结构,则代码很容易出现混乱的错误。
正如我在另一篇相关文章中所建议的那样,您应该直接购买包装!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句