Meteor 我应该把流星中的常数放在哪里
我通常会按照下面的说明来构造代码库,但我不知道应该将全局常量放在哪里 举个例子:我有一些带有常量GUID的数据库条目,我需要在我的应用程序的许多点中引用它们。到目前为止,我只是将常量附加到相关集合中,因此在Meteor 我应该把流星中的常数放在哪里,meteor,Meteor,我通常会按照下面的说明来构造代码库,但我不知道应该将全局常量放在哪里 举个例子:我有一些带有常量GUID的数据库条目,我需要在我的应用程序的许多点中引用它们。到目前为止,我只是将常量附加到相关集合中,因此在collections/myCollectionWithGuids.coffee中,它会说: @MyCollectionWithGuids = new Meteor.Collection "myCollectionWithGuids" @MyCollectionWithGuids.CONST
collections/myCollectionWithGuids.coffee
中,它会说:
@MyCollectionWithGuids = new Meteor.Collection "myCollectionWithGuids"
@MyCollectionWithGuids.CONSTANT_ID = "8e7c2fe3-6644-42ea-b114-df8c5211b842"
这种方法工作得很好,直到我需要在以下代码片段中使用它,位于client/views/myCollectionWithGuidsView.coffee
,其中写道:
Session.setDefault "selectedOption", MyCollectionWithGuids.CONSTANT_ID
…不可用,因为在创建集合之前正在加载文件
那么,我应该把我的常量放在哪里,这样它们总是先加载,而不会在一堆子目录中进行黑客攻击呢?我会把你的集合定义放在
lib
目录中。说明lib
目录下的所有文件都是在加载任何其他文件之前加载的,这意味着当您尝试在客户端代码中访问变量时,将定义该变量
一般来说,您总是希望在加载或执行应用程序中的任何其他内容之前定义集合,因为应用程序很可能严重依赖于集合游标的使用 您可以依赖这样一个事实,即当涉及到加载顺序时,总是首先处理目录名
lib
因此,我可能会建议您按如下方式组织代码:
lib/collections/collection.js
client/views/view.js
在您的特定用例中,这是可以的,但是您可能会发现当您必须在客户机目录中使用lib
以及加载顺序规则堆栈(首先加载子目录)时,它将在项目根目录中的lib
文件夹之前加载
目前,完全控制加载顺序的唯一方法是依赖包API,因此您必须使您的代码片段成为应用程序的本地包(位于项目根目录的packages
目录中)
这是有意义的,因为你似乎有一个集合和一个视图以某种方式相关,再加上将你的项目拼接成一堆协作的本地包,这毕竟是一种优雅的设计模式
由于Meteor 0.9提供了package.js
API的文档,因此创建本地包非常容易