我有一些在客户端和服务器上都使用的代码,我需要在server/
和client/
我尝试将公共代码放在lib/
中,但是当我在client/lib
和server/lib
中的代码依赖于lib/
中的代码时,我遇到了问题在加载时定义。
以下是文件加载顺序
部分下the Meteor documentation的文件加载顺序示例nav.html
main.html
client/lib/methods.js
client/lib/styles.js
lib/feature/styles.js
lib/collections.js
client/feature-y.js
feature-x.js
client/main.js
根据此示例,client/lib/
中的文件在lib/
中的文件之前加载。
我需要lib/
中的文件在client/lib/
中的文件之前加载。有没有办法改变这个?
我将我的收藏定义放在lib/
中,我的客户订阅放在client/lib
中。像这样组织它是有道理的,因为client/helpers.js
中的助手依赖于client/lib/subscriptions.js
,我的订阅依赖于lib/collections.js
中定义的集合,客户端和服务器都需要集合定义,所以我将它们放在lib/
。
答案 0 :(得分:0)
我找到了一个聪明的解决方案。
我基本上将./client/lib/
重命名为./client/deps/
,这会将加载顺序更改为以下内容。
./lib/collections.js
./client/deps/subscriptions.js
./client/helpers.js
我需要这个订单,因为我的订阅取决于正在定义的集合,而我的帮助程序依赖于定义的订阅。
文件夹./client/lib/
将始终在./lib/
之前加载,但./client/deps/
将在./lib/
之后和./client/helpers.js
之前加载,因为./client/deps/
根据文件加载顺序上的Meteor文档,它是比./client/
更深的文件夹。