我使用了meteor-external-file-loader 和一些异步循环来加载一些脚本,这些脚本将按照您指定的顺序加载javascript(或样式表)。
确保有陨石并添加上面的包>> mrt add external-file-loader
这是我为使用这个包而编写的函数:
var loadFiles = function(files, callback) {
if (!callback) callback = function() {};
(function step(files, timeout, callback) {
if (!files.length) return callback();
var loader;
var file = files.shift();
var extension = file.split(".").pop();
if (extension === "js")
loader = Meteor.Loader.loadJs(file, function() {}, timeout);
else if (extension === "css") {
Meteor.Loader.loadCss(file);
loader = $.Deferred().resolve();
}
else {
return step(files, timeout, callback);
}
loader.done(function() {
console.log("Loaded: " + file);
step(files, timeout, callback);
}).fail(function() {
console.error("Failed to load: " + file);
step(files, timeout, callback);
});
})(files, 5000, callback);
}
然后使用它,添加到您为模板创建的方法之一,如下所示:
Template.yourpage.created = function() {
var files = [
"//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js",
"javascripts/bootstrap.min.js"
];
loadFiles(files, function() {
console.log("Scripts loaded!");
});
}
快速编辑:发现将 .created 方法中的功能放在 Meteor.startup() 的 /lib 文件夹中是个好主意;
Meteor.startup(function() {
if (Meteor.isClient) {
// Load files here.
}
});
警告:很多 javascript 文件 = 加载时间真的很长....不确定正常的流星 javascript 文件以及那里的加载顺序会如何影响它。我只是确保在用户在网站上采取行动之前没有冲突(或者如果有,他们首先被加载)。