我是 MeteorJs 的新手。现在我已经安装了 Iron-route。当我打开网页的源代码时。我看到meteor注入了所有JavaScript文件并在<head>
标签中编码。我的问题是,在 MeteorJs 或 Blaze 中,是否可以将此 JavaScript 编码和文件放在文件末尾?
3 回答
我猜您想将 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 会去把这些脚本附加到头部。然后这些脚本将加载并运行。这大致相当于仅在加载了所有其他行之后才加载所有文件。
您可以使用某些东西在文件末尾注入脚本代码。虽然我不确定这是什么原因?
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 或其他服务器端呈现的页面那样只为一个页面执行此操作。
我建议将它们包含在 Layout 渲染函数中。这将仅在打印 html 后包含它们。并且您可以添加事件侦听器,当脚本中的某些内容发生变化时它们会做出反应