如何在客户端和服务器上使用代码加载到服务器/和客户端/文件夹中的所有代码之前?

时间:2015-04-10 07:26:03

标签: meteor

我有一些在客户端和服务器上都使用的代码,我需要在server/client/

中的所有代码之前加载

我尝试将公共代码放在lib/中,但是当我在client/libserver/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/

1 个答案:

答案 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/更深的文件夹。