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

如何在meteor中包含来自CDN的JavaScript?,meteor,Meteor,在包含我自己的客户端脚本之前,我希望在Meteor中包含来自CDN的JS,以便客户端脚本可以依赖它 ... <script type="text/javascript" src="https://ajax.googleapis.com/..."></script> ... <script type="text/javascript" src="/client/..."></script> ... 。。。 ... ... 我尝试通过*.html文

在包含我自己的客户端脚本之前,我希望在Meteor中包含来自CDN的JS,以便客户端脚本可以依赖它

...
<script type="text/javascript" src="https://ajax.googleapis.com/..."></script>
...
<script type="text/javascript" src="/client/..."></script>
...
。。。
...
...
我尝试通过*.html文件和
标记之间包含脚本。但是*.html文件的头内容似乎总是附加到html头的末尾,无论我将其放在文件层次结构中的什么位置(例如,将文件放在lib文件夹中,或者在客户端JS文件之前按字母顺序排序,都不会有帮助)


有没有想过如何在客户端脚本之前包含来自CDN的JS,而不必构建智能包?

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

var script=document.createElement('script');
script.setAttribute('type','text/javascript');//可选择的
setAttribute('src','url/to/the/cdn/script.js');
document.getElementsByTagName('head')[0].appendChild(脚本);
以下是一些从CDN加载脚本的真实Meteor软件包:

  • (CSS)

还有一个名为的废弃包,它给出了一个使用Stripe.js的示例。它从2013年9月起就没有维护过,所以请小心。

您可以在呈现模板后附加脚本。因此,您的脚本将仅在每隔一行加载后加载。例如,如果您直接将jquery插件添加到模板html文件中,您将得到“jquery未找到”错误。但这种方法防止:

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

});
Template.Main.onRendered(函数(){
$('head')。追加('');
});

也许在页面加载后执行代码可以防止代码依赖于加载的js库的特定顺序。这个答案中链接的博客文章中的解决方案的一个问题是,它不允许您告诉脚本何时执行。因为Meteor项目通常会有jQuery可用:$。getScript做得更优雅。如果我需要在Meteor包之前首先加载外部javascript文件,该怎么办?它说:ReferenceError:文档未定义永远不要调用文件
aa
,这是一个非常糟糕的做法,因为Meteor(在编写本文时)是按字母顺序加载文件的,所以将其命名为aa的全部目的是确保首先加载它。您的编辑会破坏解决方案。