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

相關問題