【问题标题】:MeteorJs: How to place javascript files at the end of body in layoutMeteorJs:如何在布局中将 javascript 文件放在正文的末尾
【发布时间】:2015-03-15 18:10:19
【问题描述】:

我是 MeteorJs 的新手。现在我已经安装了 Iron-route。当我打开网页的源代码时。我看到meteor 在<head> 标签中注入了所有的JavaScript 文件和编码。我的问题是,在 MeteorJs 或 Blaze 中,是否可以将此 JavaScript 编码和文件放在文件末尾?

【问题讨论】:

    标签: meteor meteor-blaze


    【解决方案1】:

    我猜您想将 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 会去把这些脚本附加到头部。然后这些脚本将加载并运行。这大致相当于仅在每行加载完所有文件后才加载所有文件。

    【讨论】:

    • 但是流星自动加载资产文件夹中的文件如何避免这种情况?
    • @Ankita Meteor 不会自动在资产中加载文件,假设它在 /public/assets 中。你必须告诉它什么时候加载它。这就是/public 文件夹的意义所在。
    • 其实我是meteor的新手。现在我已经了解了文件夹结构。
    • 我在使用 jquery CDN 时遇到了类似的问题,上述方法解决了我的问题。
    【解决方案2】:

    您可以使用某些东西在文件末尾注入脚本代码。虽然我不确定这是为什么?

    Meteor 通常在客户端呈现页面,因此无论您将文件放在 &lt;head&gt;&lt;/head&gt; 还是在 &lt;/body&gt; 之前,您都可以实现相同的效果

    您可以将您的代码放入&lt;head&gt;..&lt;/head&gt; 或使用类似这样的代码注入它(可能在 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 中,如果您决定将其放在 &lt;/body&gt; 结束之前,则所有内容都会在客户端呈现,因此一旦添加它,您就不必再次添加它(所有页面都呈现在客户端),因此您不会像使用 PHP 或其他服务器端呈现的页面那样只为一个页面执行此操作。

    【讨论】:

      【解决方案3】:

      我建议将它们包含在布局渲染函数中。这将仅在打印 html 后包含它们。并且您可以添加事件侦听器,当您的脚本中发生变化时会做出反应

      【讨论】:

        猜你喜欢
        • 2019-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-07
        • 1970-01-01
        相关资源
        最近更新 更多