正在研究一个系统,用于在文档特定的脚本呈现后异步加载到Meteor模板中:
Template.postPage.onRendered(function(){
var post = Template.currentData();
if(post.libs) post.libs.forEach(function(e){
console.log(e);
$.getScript(e, function(data, text, code){
console.log(text);
}).done(threejs);
function threejs(){
var scene = new THREE.Scene();
};
});
});
此模式适用于Chartist,Chart.js和d3,但似乎不适用于three.js - 所有其他库都可在全局使用,但我似乎找不到{{由任何地方的three.js构造的对象。
我是否遗漏了一些明显的东西,或者我只是需要在匿名函数中包装three.js的内容来初始化?如果是这样,有人可以提供一个关于如何最好的例子/文件吗?
更新:我很难过。通过切换到CDN,THREE
可以很好地加载。为了自给自足,我想从我自己的服务器上托管 - 如果有人可以推荐任何额外的测试,我很乐意听到它们。
答案 0 :(得分:0)
最后为我自己的项目想出了这一点 - 这项工作的方法是编辑three.min.js
源文件。
在'use strict';
开头删除/评论three.min.js
可让其正确加载。
这似乎与meteor的以下特性/问题有关:https://github.com/meteor/meteor/issues/1380
CDN很可能没有缩小,并且不包含'use strict;'
。为安全起见,'use strict;'
应该在声明全局THREE
命名空间后放置。