Meteor,将脚本移动到页面底部

时间:2014-06-19 22:17:11

标签: javascript meteor

是否可以将脚本包括移动到页面底部?如果是这样,我怎么能完成它?

这是head元素的一部分,其中包含一些js。

<head>
    <link rel="stylesheet" href="/2cc614b628d110d743e8e0b72c52ea2ce7c90f9d.css?meteor_css_resource=true">

    <script async="" src="//www.google-analytics.com/analytics.js"></script>

    <script type="text/javascript" src="/43f99073f97b9a8a6279cb0eb0f7e5b32dc2b4ab.js"></script>

    <script type="text/javascript">
        if (typeof Package === 'undefined' ||
        ! Package.webapp ||
        ! Package.webapp.WebApp ||
        ! Package.webapp.WebApp._isCssLoaded())
        document.location.reload(); 
    </script>

3 个答案:

答案 0 :(得分:1)

我找到了一种方法,使用inject-initial包(https://atmospherejs.com/meteorhacks/inject-initial

在身体结束标记之前从头部开始的所有javascript文件

以下代码段在服务器上运行时,会在结束</body>标记之前将所有脚本从头部移动到底部。除了流星__meteor_runtime_config脚本标记。

Inject.rawModHtml('moveScriptsToBottom', function(html) {
    // get all scripts
    var scripts = html.match(/<script type="text\/javascript" src.*"><\/script>\n/g);
    // remove all scripts
    html = html.replace(/<script type="text\/javascript" src.*"><\/script>\n/g, '');
    // add scripts to the bottom
    return html.replace(/<\/body>/, scripts.join('') + '\n</body>');
});

答案 1 :(得分:0)

Meteor将您的所有文件打包成一个大文件,所有文件都用JavaScript闭包分隔。

现在,Meteor优先在/lib文件夹中加载文件,然后按字母方式加载文件,并以递归方式工作。所以加载的第一个文件位于文件中最深的/lib/lib....文件夹中(虽然我没有看到为什么你需要比1-2级更深的东西)。 Meteor还会加载main.*个文件最后

现在,如果您真的希望Meteor最后加载您的文件,您必须将它们放在/lib文件夹中,并为其指定一个与main.*匹配的文件名

参考文献:http://docs.meteor.com/

  

子目录中的文件在父目录中的文件之前加载,   以便首先加载最深子目录中的文件和文件   在根目录中最后加载。

     

在目录中,文件按字母顺序加载   文件名。

     

如上所述排序后,所有文件都在名为的目录下   lib先于其他一切移动(保留其顺序)。

     

最后,所有匹配main。*的文件都会在其他所有文件之后移动   (保留他们的命令)。

答案 2 :(得分:-1)

我已经在html的末尾包含了脚本,但是之前我看到你正在调用google等的引用我认为那些应该总是在页面的顶部,因为它们必须在页面显示之前加载这样可确保在需要时可用。 :) 我对网络不太专业,但我现在正在使用html和js,我放在底部的脚本是我用于动画的,或者当我在一个完全加载的html元素中使用它时。