0

我猜测流星强制执行命令启发式的用户而不是提供import语义的话题已经被讨论过了。尽管如此,我认为至少应该有一种方法可以100%确定某一组脚本可以在其他任何事情之前运行。据我所知,由于加载顺序启发式优先于其他所有内容(即使在不同位置有多个lib文件夹,由于某些原因,深度较大的文件夹会先运行),因此基本上无法确保某些脚本在所有其他内容之前执行,无论它有多深,除非将它放在一个包中。流星脚本确保在执行其他任何事情之前执行(在客户端)

这是正确的吗?在即将发布的版本中是否有什么可以补救的?

现在,我正在考虑写一个小load-order-util包,至少是允许推迟回调的执行,直到startup和一组给定的全局定义符号后都准备好了,就像这样:

Global.dependsOnSymbols = function(symbolNameOrNames, cb) { ... }; 

有更好的建议吗?

+0

你在这个脚本中究竟想做什么?流星相关的操作或只是通用的JavaScript来初始化一些东西? –

+0

@ ravish.hacker正如我刚才对第一个答案进行了评论,我有一大堆代码,其中一些代码非常依赖于其他文件夹中的其他代码,这些代码可能会或可能不会更深入本身。 – Domi

回答

0

你可以通过阅读实现:

How do I change the order in which Meteor loads Javascript files?

In Meteor JS, how to control Javascript load order in relation to DOM load order? For animations

的事情是正确的,现在,它可能是更好坚持使用由框架提供的装载公约本身。

无论如何,upcoming 1.3 release应该最终解决提供ES2015模块支持的问题。

+0

目前的框架没有提供解决我的问题,我有一大堆的文件夹,代码是如此无视依赖于其他文件夹中的其他文件夹,可能会或可能不在更深的本身。我会尝试我的'startup'注册实用程序并稍后分享结果:) – Domi

+1

那么,如果您要编写自己的解决方案,您可能需要查看一些现有的软件包:https://atmospherejs.com/?q =负载%20order 希望它有帮助:) –

+0

感谢您的提示。我检查了这三个软件包:* One *的重量太重了,手动将整个舞台添加到流星管道中(通过在子目录中以不同文件顺序重新生成所有文件以反映原始代码,但根据您配置的加载顺序首选项),其他两个不是我正在寻找的。 – Domi

相关问题