【发布时间】:2015-03-15 18:10:19
【问题描述】:
我是 MeteorJs 的新手。现在我已经安装了 Iron-route。当我打开网页的源代码时。我看到meteor 在<head> 标签中注入了所有的JavaScript 文件和编码。我的问题是,在 MeteorJs 或 Blaze 中,是否可以将此 JavaScript 编码和文件放在文件末尾?
【问题讨论】:
标签: meteor meteor-blaze
我是 MeteorJs 的新手。现在我已经安装了 Iron-route。当我打开网页的源代码时。我看到meteor 在<head> 标签中注入了所有的JavaScript 文件和编码。我的问题是,在 MeteorJs 或 Blaze 中,是否可以将此 JavaScript 编码和文件放在文件末尾?
【问题讨论】:
标签: meteor meteor-blaze
我猜您想将 JS 文件和脚本标签放在页面底部,因为您希望它们最后加载(也就是在 DOM 完全加载之后)。
假设在一个普通的 html 文件的底部有这些脚本:
<script type="text/javascript" src="assets/js/slider_revolution.js"></script>
<script type="text/javascript" src="assets/js/more-animations.js"></script>
<script type="text/javascript" src="assets/js/animations.js"></script>
只有在上面的每一行都被加载后才会加载。
在 Meteor 中,我所做的是这样的:
Template.templateName.rendered = function() {
$('head').append('<script type="text/javascript" src="assets/js/slider_revolution.js"></script>');
$('head').append('<script type="text/javascript" src="assets/js/animations.js"></script>');
$('head').append('<script type="text/javascript" src="assets/js/more-animations.js"></script>');
}
所以在模板被渲染到页面后,Meteor 会去把这些脚本附加到头部。然后这些脚本将加载并运行。这大致相当于仅在每行加载完所有文件后才加载所有文件。
【讨论】:
/public/assets 中。你必须告诉它什么时候加载它。这就是/public 文件夹的意义所在。
您可以使用某些东西在文件末尾注入脚本代码。虽然我不确定这是为什么?
Meteor 通常在客户端呈现页面,因此无论您将文件放在 <head></head> 还是在 </body> 之前,您都可以实现相同的效果
您可以将您的代码放入<head>..</head> 或使用类似这样的代码注入它(可能在 Meteor.startup 中或当您知道您的身体已被绘制时):
var my_awesome_script = document.createElement('script');
my_awesome_script.setAttribute('src','http://example.com/site.js');
document.body.appendChild(my_awesome_script);
在 Meteor 中,如果您决定将其放在 </body> 结束之前,则所有内容都会在客户端呈现,因此一旦添加它,您就不必再次添加它(所有页面都呈现在客户端),因此您不会像使用 PHP 或其他服务器端呈现的页面那样只为一个页面执行此操作。
【讨论】:
我建议将它们包含在布局渲染函数中。这将仅在打印 html 后包含它们。并且您可以添加事件侦听器,当您的脚本中发生变化时会做出反应
【讨论】: