簡體   English   中英

Meteor的順序包括我的js文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM