【问题标题】:Meteor script ensured to be executed before everything else (on Client)Meteor 脚本确保在其他所有操作之前执行(在客户端上)
【发布时间】:2016-07-13 01:57:40
【问题描述】:

我猜 Meteor 强制对其用户执行顺序启发式而不是提供 import 语义的话题已经被讨论死了。

尽管如此,我认为至少应该有一种方法可以 100% 确保可以在其他任何事情之前运行一组特定的脚本。据我了解,由于加载顺序启发式在其他所有内容上都是深度优先的(即使您在不同的地方有多个 lib 文件夹,由于某种原因,更深的文件夹首先运行),基本上没有办法以确保某些脚本在其他所有内容之前执行,无论执行多深,除非您将其放入包中。

正确吗?在即将发布的版本中,有什么可以补救这种情况的吗?

目前,我正在考虑编写一个小的load-order-util 包,它至少允许将回调的执行推迟到startup 并且在一组给定的全局定义符号准备好之后,如下所示:

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

有更好的建议吗?

【问题讨论】:

  • 你到底想在这个脚本中做什么?流星相关的操作或只是通用的 javascript 来初始化一些东西?
  • @ravish.hacker 正如我刚刚评论的第一个答案,我有一大堆代码,其中一些代码太无礼地依赖于其他文件夹中可能或可能不如它本身更深入。

标签: javascript meteor initialization startup deferred-execution


【解决方案1】:

你可以通过阅读了解:

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 模块支持的问题。

【讨论】:

  • 当前框架没有为我的问题提供解决方案,我有一大堆文件夹,并且代码如此无礼地依赖于其他文件夹中可能存在或不存在的其他代码在比它本身更深的地方。我会尝试我的startup 注册实用程序并稍后分享结果:)
  • 好吧,如果你要编写自己的解决方案,你可能想看看一些现有的包:atmospherejs.com/?q=load%20order希望它有所帮助:)
  • 感谢您的提示。我检查了三个包: One 太重了,手动将整个阶段添加到流星管道(通过在镜像的子目录中以不同的文件顺序重新生成所有文件您的原始代码,但根据您配置的加载顺序首选项),另外两个不是我想要的。
猜你喜欢
  • 2020-11-20
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-07
  • 2018-07-01
  • 2018-05-25
  • 1970-01-01
相关资源
最近更新 更多