我知道将外部库加载到meteor中的两种主要方法(如http://www.manuel-schoebel.com/blog/use-meteor-iron-router-waiton-to-load-external-javascript中所述)。
此外,还有一些流媒体套件可以全局加载three.js
。
有谁知道如何使用模板级方法让THREE
正常工作?我不希望three.js
加载所有路线,但我到目前为止尝试使用〜
Template.threeview.onRendered(function(){
Session.setDefault('threejs', false);
// is library already loaded?
if (Session.get('threejs') === false) {
console.log('Requesting threejs...')
$.getScript('/js/three.min.js', function() {
Session.set('threejs', true);
// the THREE object should now be accessible here
// as well as in the window environment...?
console.log(window.THREE);
console.log(THREE);
});
};
});
不起作用 - 我
undefined
Uncaught ReferenceError: THREE is not defined
在js控制台窗口中。
有什么想法吗?
修改
发现这个类似的问题Can't find three.js after loading through Ajax遇到了同样的问题 - 我可以确认从CDN加载是有效的。有没有人有更好的解决方案?
答案 0 :(得分:1)
最后想出来 - 使这项工作的方法是编辑three.min.js
源文件。
在'use strict';
开头删除/评论three.min.js
可让其正确加载。
这似乎与meteor的以下特性/问题有关:https://github.com/meteor/meteor/issues/1380
CDN没有缩小,并且不包含'use strict;'
。为安全起见,'use strict;'
应该在声明全局THREE
命名空间后放置。