【发布时间】:2015-12-03 20:21:36
【问题描述】:
我需要基于现有的流星应用构建一个流星包。所以我创建了文件夹包,并在这个文件夹中创建了新包“package_anything”。
所以我现在的结构是:
.meteor
client
lib
helpers.js
utils.js
app.js
startup.js
lib
router.js
anything.js
packages
package_anything
lib
client
public
library_1
library_2
templates
template.html
router.js
subscription.js
server
publications.js
shared
collections.js
package.js
现在我在获取文件时遇到了问题,这些文件现在位于包文件夹之外的包中。我知道lib 中的所有文件都将首先加载。那么我该如何在包内做到这一点呢?
第二个问题是我不能把lib/router.js的内容放在package/package_anything/lib/client/router.js里面。如果我这样做,应用程序就会崩溃。但我不明白为什么。
package.js
Package.describe({
name: 'name:anything',
summary: 'example package',
version: '0.0.1',
documentation: "README.md"
});
Package.onUse(function(api){
api.versionsFrom('METEOR@1.1.0.3');
api.use(['templating', 'mongo']);
api.use(['iron:router@1.0.9'], 'client');
api.addFiles([
'lib/shared/collections.js'
], ['client', 'server']);
api.addFiles([
'lib/server/publications.js'
], ['server']);
api.addFiles([
'lib/client/router.js',
'lib/client/subscription.js'
], ['client']);
});
更新 举个例子:
lib/anything.js有内容
App = {}
App.Mode = {}
App.Mode._dep = new Tracker.Dependency()
现在我把这个简单的文件带到packages/package_anything/lib/client/anything.js。我在 package.js 中添加了 api.export('App')。
但这会给我带来错误Uncaught ReferenceError: Tracker is not defined,所以应用程序崩溃了。
【问题讨论】:
-
你写的不是太清楚。如果没有定义,那是因为您没有正确导出变量或添加文件。如果您不知道这一点,lib 只会在您的常规应用程序中首先加载。在包中,每个文件都根据您为其设置的顺序加载。此外,常规应用程序的 lib 会在所有包加载完毕后加载。
-
现在包文件夹之外的所有文件都首先加载,不是吗?之后,包文件按照 package.js 给出的顺序加载。对吗?
-
看我的回答。他们不是
标签: javascript meteor