我希望在包含我自己的客户端脚本之前在Meteor中包含来自 CDN 的JS,以便客户端脚本可以依赖它。
...
<script type="text/javascript" src="https://ajax.googleapis.com/..."></script>
...
<script type="text/javascript" src="/client/..."></script>
...
我尝试通过* .html文件和<head>
标记之间包含脚本。但似乎* .html文件中的标题内容将始终附加到HTML标题的末尾,无论我将其放在文件层次结构中的哪个位置(例如,将文件放在lib文件夹中或在客户端JS文件之前按字母顺序排序)没有帮助)。
我是否可以在客户端脚本之前从CDN 中包含JS,而无需构建智能包?
答案 0 :(得分:9)
假设您不需要在Meteor包之前加载这些文件,请创建一个在任何其他文件之前加载的JS文件。 Meteor按字母顺序加载文件,因此它必须是第一个加载的文件。为此,命名为aaLoadCDN.js
就足够了。通过向文档script src
添加head
元素来动态加载CDN脚本:
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript'); // optional
script.setAttribute('src', 'url/to/the/cdn/script.js');
document.getElementsByTagName('head')[0].appendChild(script);
以下是从CDN加载脚本的一些真实世界的Meteor包:
答案 1 :(得分:3)
您可以在渲染模板后附加脚本。因此,只有在每个其他行加载后,您的脚本才会加载。例如,如果你直接在你的模板html文件中添加一个jquery插件,你就会得到&#34; jquery not found&#34;错误。但这种方法可以防止:
Template.Main.onRendered(function () {
$('head').append('<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-formhelpers/2.3.0/js/bootstrap-formhelpers.js"></script>');
});
答案 2 :(得分:0)
还有一个名为meteor-external-fileloader的废弃软件包,它使用Stripe.js提供了一个示例。它自2013年9月以来一直没有维护,所以要小心。