流星载入命令运行与文档和其他anamolies相反。包括完整的例子

时间:2015-01-06 00:48:38

标签: meteor

我仍然无法完全控制Meteor的加载顺序。当使用带有动画的Bootstrap模板时,我使用了很多第三方脚本,并且很多这些脚本都会中断,因为它们是为DOM节点创建的,具有传统的加载顺序。

Meteor不遵循这种传统的加载顺序,因此在脚本触发时很多时候DOM节点都没有准备好。

我制作了一个简单的Meteor应用程序,每次加载特定文件夹或template.rendered回调中的脚本时,控制台都会记录消息。

https://github.com/fuzzybabybunny/meteor-load-order-test

您可以在此处看到它的部署(打开Chrome控制台)

http://load-order-test.meteor.com/

有一些奇怪的事情发生。

  • main.js和main.html实际上很快就会加载,与文档说的相反:http://docs.meteor.com/#/full/structuringyourapp
  • 所有DOM节点实际上都是早于创建的
  • 有六个模板仍然没有触发它们的.rendered()回调,已经达到了最大DOM节点数。我们应该期望在每个.rendered()回调被添加时添加更多的DOM节点。

有人可以帮助解释为什么我会看到这些奇怪的事情吗?

此外,一旦创建了所有DOM节点,是否有可靠的方法来运行脚本?目前似乎使用jQuery在<script>内的DOM上的某处附加Template.Layout.rendered标签将是最简单的。

Template.Layout.rendered = function(){

    console.log('layout template rendered and the number of DOM nodes is ' + document.getElementsByTagName('*').length);
    $('head').append('<script src="/javascript/domCompleteScript.js"></script>');

};

1 个答案:

答案 0 :(得分:0)

根据文档,稍微向下一页:

  

client / lib / #首先加载客户端的代码

     

此文件夹用于兼容性JavaScript库,它依赖于在顶层使用var声明的变量作为全局变量导出。执行此目录中的文件而不包装在新的变量范围中。这些文件在其他客户端JavaScript文件之前执行。

我会尝试将第三方脚本放入以下位置,只是为了看看效果最好的方法:

  • 客户端/ lib中
  • 客户机/兼容性
  • LIB