如何在流星中包含来自CDN的JavaScript?

时间:2013-01-07 13:54:01

标签: meteor

我希望在包含我自己的客户端脚本之前在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,而无需构建智能包?

3 个答案:

答案 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月以来一直没有维护,所以要小心。