22

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

4

3 回答 3

10

假设您不需要在 Meteor 包之前加载这些文件,请创建一个在其他任何文件之前加载的 JS 文件。Meteor 按字母顺序加载文件,因此它必须是第一个加载的文件。为此,命名它就aaLoadCDN.js足够了。script src通过向文档添加元素来动态加载 CDN 脚本head

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 包:

于 2013-01-07T14:51:47.903 回答
3

您可以在呈现模板后附加脚本。所以你的脚本只会在每行加载后加载。例如,如果您直接将 jquery 插件添加到模板 html 文件中,您将收到“jquery not found”错误。但是这种方法可以防止:

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>');

});
于 2016-10-27T03:16:12.040 回答
0

还有一个名为meteor-external-fileloader的废弃包,它给出了一个使用 Stripe.js 的示例。它自 2013 年 9 月以来就没有维护过,所以要小心。

于 2015-02-18T21:20:03.513 回答