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

1234563这会破坏很多东西。

使用 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 文件仍然无法正确加载。加载顺序的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章

Meteor.js 模板块中的“或”条件

加快 Meteor.js 中的自动重新加载

使用 SimpleSchema 处理 Meteor.js 中的错误

如何从Meteor.js中的方法内部的方法返回错误

在 Meteor 中保存用户位置

如何在开发中禁用 Meteor JS 中的热代码推送?