1

在过去的两周里,我一直在构建一个 Meteor 项目,我想从使用过 Meteor 并与之斗争的人那里得到一些关于加载顺序的想法。

拿这个模板:

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

所有重要的 javascript 文件都在 index.html 的底部引用。如果您尝试将其移植到 Meteor 项目中,祝所有效果和动画都能正常工作,尤其是在main.js

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

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

请注意,这似乎仅意味着 main.*在其他所有内容之后开始加载。它没有说明文件何时完成加载。里面的脚本main.js仍然不起作用。

如果我将所有脚本标签放入它们自己的标签中main.html,然后将其index.html作为模板附加,动画仍然不起作用。

  • 我试过了

    Template.layout.created = function() { $('head').append(''); }

这也不起作用。

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

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

4

1 回答 1

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 内容以呈现.

于 2014-05-13T14:03:28.440 回答