主要的meteor JS javascript文件。*仍然没有正确加载。加载订单的最佳做法?

时间:2014-05-13 13:34:06

标签: javascript meteor load-order

在过去的两周里,我一直在建造一个Meteor项目,我想对那些曾经使用过Meteor的人们的负载顺序有所了解。

拿这个模板:

http://bootstraptaste.com/free-one-page-bootstrap-template-amoeba/

所有重要的javascript文件都在index.html的底部引用。如果您尝试将其移植到Meteor项目中,祝您好运,让所有效果和动画发挥作用,尤其是那些main.js

  • 简单地将脚本标签留在底部意味着大量的javascript和jQuery动画将无法正常工作,因为在Meteor中,完全可能在整个DOM加载之前加载JS文件。这打破了很多事情。

  • 使用Meteor,任何名为main。*的文件都将在其他所有文件后加载。

请注意,这似乎只表示main。* 在其他所有内容后启动。它没有说明文件何时完成加载。 main.js中的脚本仍无效。

如果我将所有脚本标记放入他们自己的main.html中,然后将其作为模板附加到index.html,则动画仍无效。

  • 我试过

    Template.layout.created = function(){   $( '头')追加( '')。 }

这也行不通。

  • 使用Meteor.startup(func)非常不可靠,因为即使“在客户端上,该函数将在DOM准备就绪后立即运行”,Meteor对“DOM ready”的定义并不等于“DOM中的所有内容”之后装了。“因此,在DOM未完全加载后,该函数仍然可以运行。

无论如何,其他任何人都有像Meteor这样的重大问题?还有任何最佳实践或解决方法吗?

1 个答案:

答案 0 :(得分:2)

通常,您不希望在Meteor中使用脚本标记。只需将.js文件添加到项目中,它们就会自行加载。标准做法是将jQuery插件等放在lib文件夹中。 Meteor首先在lib文件夹中加载东西。

在Meteor中思考这些事情的方式与其他框架不同。一旦你把skrollr.min.js等东西放到项目中,你就可以在任何地方调用它。如果您使用链接标记,则同样的协议适用于css。

在加载DOM之后做一些事情,你正在寻找

Template.myTemplate.rendered = function ( ) { ... }

第一次渲染DOM后调用此方法。 .created发生在加载模板的位置,因此DOM还不可用。

如果没有查看链接过多的示例模板,您似乎希望将main.js中的登录信息放入适当模板的渲染回调中。

因此,如果您尝试在实时演示中重新创建该页面,我会将所有html放在模板中,在项目中包含所有css和js资源,删除所有链接和脚本标记并添加main.js要渲染的东西。