Meteor JS:使用外部脚本

新手上路,请多包涵

有一些服务(如 FB like 或 AddThis)提供了一段代码。看起来像

<div class="service-name" data-something="x"></div>
<script type="text/javascript" src="http://example.com/service-name.js"></script>

好的,很酷,所以通常你将它粘贴到你的 HTML 中并且它可以工作。不是流星。

这是我看到的:

  • <script> 模板/正文内部 未加载——我在资源中没有看到它,Meteor 中的某些东西实际上阻止浏览器将其识别为 JS 文件
  • 它从 <head> 开始工作

现在这里是问题和问题:

  1. 我不想从加载它 <head> 因为速度
  2. 即使我从那里加载它——我们有 QA 和 PROD 环境。他们 必须 从不同的域加载此脚本(例如 service-domain-qa.exampleexample.com

令人惊讶的是,您 不能<head> 中使用模板助手/变量。

对于传统框架,这根本不是问题——您可以在任何地方包含脚本,它们就会加载;您可以在 服务器 模板的任何部分使用逻辑/变量。

那么,我应该如何在 Meteor 中执行此操作?让我重复一遍:

  • 我需要将一些外部脚本(托管在第 3 方域上)加载到我的应用程序页面中
  • 无法将此 脚本保存到我的项目文件夹中
  • 脚本路径取决于环境(我们已经有了设置系统),所以渲染它的模板的位置应该从代码中传递一些数据

我知道通过在 Template.created 上从我的代码(使用 LAB.js 或其他)加载动态脚本来实现这一点,但这太过分了……

原文由 Guard 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 330
2 个回答

<script> 主体或模板中的标签不会被 Meteor 执行,它们被 Meteor 的模板系统解析然后处理。您不能指望其中任何一个中的脚本标记都能像在普通 HTML 页面中那样工作。

解决方案是使用模板事件(您可以在其中手动将脚本标记附加到正文或其他内容)或像您说的那样动态加载它。这并不过分,这就是 Meteor 的工作方式 - 请记住,没有传统的 HTML 页面或正文,只有 Meteor API,并且 Meteor API 指定为了加载和执行外部脚本,您必须使用适当的 API 方法。

原文由 Rahul 发布,翻译遵循 CC BY-SA 3.0 许可协议

我的解决方案是使用包。有关详细信息,请参阅 https://github.com/meteor/meteor/tree/master/packages/spiderable

 Package.describe({
  summary: "External script"
});

Package.on_use(function (api) {
  api.use(['templating'], 'client');

  api.add_files('external_script.html', 'client');
});

<head><script type="text/javascript" src=""//mc.yandex.ru/metrika/watch.js""></script></head>

原文由 vixh 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题