[英]In which order Meteor include my js files
我有一個js文件:
function library_f() {
}
function some_f() {
library_f();
}
function another_f() {
library_f();
}
但代碼看起來很難看,我決定將我的js文件拆分為三個:
one.js:
function library_f() {
}
two.js:
function some_f() {
library_f();
}
three.js所:
function another_f() {
library_f();
}
但現在我得到了錯誤
library_f() is not defined
如何設置包含我的js文件的順序?
來自文檔 :
首先加載應用程序根目錄下的lib目錄中的文件。 匹配main。*的文件將在其他所有內容之后加載。
子目錄中的文件在父目錄中的文件之前加載,以便最先加載最深子目錄中的文件(在lib之后),並且最后加載根目錄中的文件(除了main。*之外)。
在目錄中,文件按文件名的字母順序加載。
這些規則堆棧,因此在lib中,例如,文件仍然按字母順序加載; 如果有多個名為main.js的文件,則子目錄中的文件會先加載。
但看起來無法訪問這些功能,因為它們不是全局的。 在meteor中,除非變量或函數是全局的,否則每個文件的變量/函數都不能被另一個文件訪問。
所以你需要以這種方式聲明你的函數:
library_f = library_f() {
...
}
這樣它就可以被其他文件訪問了。 變量也是如此:
var x = true; //Not accessible by other files
x = true; //Accessible by other files
var dothis = function () {...} //Not accessible by other files
dothis = function() {..} //Not accessible by other files
function dothis() {..} //Not accessible ny other files
Meteor挖掘你所有的JS文件並將它們放在一個文件中,而且順序不是你可以控制的東西。
我認為這里的問題是:你從哪里調用函數? 如果他們馬上自行執行,那么訂單可能很重要。 但是,Meteor通常會將函數加載到DOM中,然后運行它們以響應某些事件,如Meteor.startup(callback)
或Template.page.rendered(callback)
。 在這些示例中執行時,您的所有JS文件都已加載,您的所有函數都應該准備就緒,無論您喜歡什么順序。
如果您不是在創建它們之后立即嘗試運行它們,那么值得在瀏覽器控制台中檢查,您可以看到在頁面加載后這些函數都存在於DOM中。 輸入library_f
並查看返回的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.