Meteor 我应该把流星中的常数放在哪里

Meteor 我应该把流星中的常数放在哪里,meteor,Meteor,我通常会按照下面的说明来构造代码库,但我不知道应该将全局常量放在哪里 举个例子:我有一些带有常量GUID的数据库条目,我需要在我的应用程序的许多点中引用它们。到目前为止,我只是将常量附加到相关集合中,因此在collections/myCollectionWithGuids.coffee中,它会说: @MyCollectionWithGuids = new Meteor.Collection "myCollectionWithGuids" @MyCollectionWithGuids.CONST

我通常会按照下面的说明来构造代码库,但我不知道应该将全局常量放在哪里

举个例子:我有一些带有常量GUID的数据库条目,我需要在我的应用程序的许多点中引用它们。到目前为止,我只是将常量附加到相关集合中,因此在
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的文档,因此创建本地包非常容易