繁体   English   中英

main。*中的Meteor JS javascript文件仍然无法正确加载。 加载顺序的最佳做法?

[英]Meteor JS javascript files in main.* still don't load correctly. Best practices for 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(){$('head')。append(''); }

这也不起作用。

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

无论如何,还有其他人遇到流星这样的重大问题吗? 还有最佳实践或变通办法吗?

通常,您不想在Meteor中使用脚本标签。 只需将.js文件添加到您的项目中,它们就会自动加载。 标准做法是将jQuery插件等放在lib文件夹中。 流星首先将内容加载到lib文件夹中。

在Meteor中思考这些事情的方式与其他框架不同。 将skrollr.min.js等内容放入项目后,您可以在任何地方调用它。 如果您使用链接标记,则css同样适用。

至于在加载DOM之后要做的事情,您正在寻找

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

第一次渲染DOM后,将调用一次。 .created在加载模板时发生,因此DOM尚不可用。

无需查看示例模板,您就可以进行过多的链接,似乎您希望将main.js中的登录名放入适当模板的呈现回调中。

因此,如果您尝试在实时演示中重新创建该页面,则将所有html放入模板中,在项目中拥有所有css和js资源,删除所有链接和脚本标签,并将main.js内容添加到渲染中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM