main.* 中的 Meteor JS javascript 文件仍然无法正确加载。加载顺序的最佳实践?
Posted
技术标签:
【中文标题】main.* 中的 Meteor JS javascript 文件仍然无法正确加载。加载顺序的最佳实践?【英文标题】:Meteor JS javascript files in main.* still don't load correctly. Best practices for load order? 【发布时间】:2014-07-01 05:10:23 【问题描述】:在过去的 2 周里,我一直在构建一个 Meteor 项目,我想请教那些使用过 Meteor 并与之斗争的人对加载顺序的一些想法。
拿这个模板:
http://bootstraptaste.com/free-one-page-bootstrap-template-amoeba/
所有重要的 javascript 文件都在 index.html 的底部引用。如果您尝试将其移植到 Meteor 项目中,祝所有效果和动画都能正常工作,尤其是 main.js
使用 Meteor,任何名为 main.* 的文件都将在其他所有文件之后加载。
请注意,这似乎仅意味着 main.* 开始 在其他所有内容之后加载。它没有说明文件何时完成加载。 main.js
中的脚本仍然不起作用。
如果我把所有脚本标签都放到自己的main.html
中,然后作为模板附加到index.html
,动画还是不行。
我试过了
Template.layout.created = function() $('head').append('');
这也不行。
使用 Meteor.startup( func ) 非常不可靠,因为即使“在客户端上,只要 DOM 准备好,该函数就会运行”,Meteor 对“DOM 准备好”的定义不等于“在 DOM 中的所有内容之后”已加载。”所以在 DOM 未完全加载后,该函数仍然可以运行。无论如何,还有其他人对 Meteor 有类似的重大问题吗?以及任何最佳做法或变通方法?
【问题讨论】:
【参考方案1】:通常你不想在 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要渲染的东西。
【讨论】:
以上是关于main.* 中的 Meteor JS javascript 文件仍然无法正确加载。加载顺序的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章