Meteor工作目录的划分
現在說明一下Meteor的工作目錄是這樣劃分的,但是在說明之前 做個約定,以免后面造成混淆或錯誤。?
我們通過?meteor create API-002-Core創建meteor工程后,那么就會有一個API-002-Core的文件夾。從現在起我把這個文件夾的直接子目錄,稱之為應用根目錄,或者簡稱為更目錄,用符號/來表示。?
那么以上面的文件為例,他們的文件位置就是?/.meteor/,/API-002-Core.css /等。如果我在API-002-Core文件夾下創建了一個hello的文件夾。那么該文件用/hello/表示.約定就這些了。
在meteor工程目錄中有幾個目錄是特殊的。它會通過文件夾的名稱區別作用,默認創建應有后這些文件夾是不存在的,需要自己創建。具體如下:
/client/
該文件夾下的所有文件都會在瀏覽器訪問應用時加載。換就話說即使客戶端加載。它是自動加載的,無法進行控制。至于具體的加載順序我會在另外一篇博文中講述。
/server/
這個文件夾下的所有文件都會在meteor啟動時在服務端加載。加載順序另外一篇博文中進行描述。也就是V8虛擬機來加載,類似于一般的node.js文件,它是屬于后臺的。
/public/
這個文件里面的所有文件只能在瀏覽器端進行使用,通過文件夾的名稱也能夠看出來。區別于/client/,這里面的文件不會自動加載。里面主要存放的就是一些資源文件,如圖片,css,js插件如jquery之類的等。這些文件需要手動的寫引用,來使瀏覽器進行加載。如寫在
src=".."></script> <style href="..."></style> 這里又有一點需要注意,在標簽中引用文件時以“/public/“`為相對根目錄引用就可以。舉例說明。如果存在這樣的css文件?
/public/a.css或者/public/css/b.css?
那么他們在引用上這樣寫即可,不需要帶上public路徑:
/private/
這個文件夾是一個資源文件。用在服務端。一般存放一些配置文件。如json格式的配置文件等。區別于/server/?這里面的文件不會自動加載。更不會執行。哪怕里面存放了一個js文件,js文件里面聲明了全局變量。而不會執行。因為V8引擎根本就沒有加載它。這個文件夾下的文件僅是看作二進制的文件而已。你可以讀寫它。
/packages/
這個文件夾下主要放的是第三方擴展模塊。如router之類的擴展。這個里面的文件加載的位置(server或著client)主要看模塊內部的定義。這里不做討論。它配合/.meteor/packages文件使用。
以上這五種文件夾(嚴格來說是6個,還包括一個.meteor文件夾)是meteor工程里面比較特殊的幾個。你可以根據實際情況來創建它們。他們的基本介紹就介紹到這里。?
除這6個文件夾(包括其子目錄)以外的其他所有文件及其他文件夾下的文件都將同時在client和server端進行加載。當然里面有個特例就是.html和.css兩種文件,他們僅會放在Client端。
回到主題。?
在一開始meteor那自動創建的xxx.js,xxx.css,xxx,html三個文件(這三個文件沒有在上面提到的6種特殊文件夾里)。根據上面說 到的原則,那么xxx.csss,xxx.html 將加載在Client端,xxx.js將同時加載到Client和Server.
那么因為有這種同時加載js文件到Client和Server的規則。那么如同判斷當前的運行時環境到底是Client還是Server呢?答案就是這小節的標題了。我們通過?變量Meteor.isClient或者Meteor.isServer來判斷了。
?
看到自動生成的js文件內容:
};Template.hello.events({ 'click input' : function () { // template data, if any, is available in 'this' if (typeof console !== 'undefined') console.log("You pressed the button"); } }); } if (Meteor.isServer) { Meteor.startup(function () { // code to run on server at startup }); } 現在看兩個if部分。那么現在應該很容易理解了。如果這js文件在Client端執行。那么if(Meteor.isServer)里面的語句就不會執行了,反之,如果js文件是在Server端進行加載實行,那么if(Meteor.isClient)里面的就不會執行了。?
所以最后總結:
總結
以上是生活随笔為你收集整理的Meteor工作目录的划分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决ajax方法内部不能给外部变量赋值的
- 下一篇: python selenium webd