nodejs的重要支柱

來源:互聯網
上載者:User

標籤:des   style   c   code   java   http   

 概念:模組(Module)和包(Package)是Node.js最重要的支柱。

   開發一個具有一定規模的程式不可能只用一個檔案,通常需要把各個功能拆分、分裝、然後組合起來。模組正式為了實現這種方式而誕生,在瀏覽器JavaScript中,指令碼模組的拆分和組合通常使用HTML的script標籤來實現,Node.js提供了require函數來調用其他模組,而且模組都是基於檔案,機制非常簡單,模組和包的區別是透明的,因此經常不作區分。

========== 模組 =============

 一、模組            1.什麼是模組                    Ryan                    模組和檔案是一一對應的。一個Node.js檔案就是一個模組,這個檔案可能是JavaScript代碼、JSON或者編譯過的C/C++擴充。                    var http=require(‘http‘),其中http是Node.js的一個核心模組,通過require函數擷取這個模組,然後使用其中的對象            2.建立及載入模組                 (1)建立模組                      Node.js提供了exports和require兩個對象,其中exports是模組公開的介面,require用於從外部擷取一個模組的介面,即擷取模組的exports對象                  附件module.js和getModule.js的實現                (2)單次載入                      上面的例子有點類似建立一個對象,但實際上和對象又有本質的區別,因為require不會重複載入模組,也就是說無論調用多少次require,擷取的模組都是同一個                    getModule2.js                (3)覆蓋exports                    有時我們知識想把一個對象封裝到模組中,例如                    定義模組:singleobejct.js                    引入模組使用:getSingleObject.js                    繁瑣:exports.hello=hello;                      引入:require("./singleobject").hello;                    簡易:module.exports=hello;                 exports本身僅僅是一個普通的Null 物件,即{},它是專門用來聲明介面 ============ 包 ============1.包的概念     包是在模組基礎上更深一步的抽象,Node.js的包類似於C/C++的函數庫或者java的類庫,它講某個獨立的功能封裝起來,用於發布、更新、依賴管理的版本控制。開發了npm來解決包的發布和擷取需求。2.如何建立一個包     CommonJS規範的包應該具備一下特徵:          package.json必須在包的頂層目錄下          二進位檔案應該在bin目錄下          javaScript代碼應該在lib目錄下          文檔應該在doc目錄下          單元測試應該在test目錄下           Node.js對包要求並沒有那麼嚴格,只要頂層目錄下有package.json,並符合基本規範即可       (1)作為檔案夾的模組             somepackage檔案夾             最簡單的包,就是一個作為檔案夾的模組,             建立一個檔案夾 somepackage,裡面有一個index.js,裡面提供一個方法sayHello()             var somepackage=require(‘./somepackage‘);             somepackage.sayHello();        我們使用這種方法可以把檔案夾封裝成一個模組,即所謂的包。包通常是一些模組的集合,在模組的基礎上提供了更高層的抽象,相當於提供了一些固定介面的函數庫,通過定製package.json,我們可以建立更複雜、更完善、更符合規範的包用於發布。        (2)package.json            前面的例子,在somepackage檔案夾下,我們建立一個package.json的檔案,內容                {                    ‘main‘:‘./lib/index.js‘                 }             Node.js在調用某個包時,會檢查包中package.json檔案的main欄位,將其作為包的介面模組,如果package.json或main欄位不存在,會常事尋找index.js或index.code作為包的介面              package.json的規範屬性:                 name:包的名稱,必須是唯一                 description:包的簡要說明                 version:符合語義化版本識別規範的版本字串                 keywords:關鍵字資料,通常用於搜尋                 maintainers:維護者數組,每個元素要包含name、email、web可選欄位                 contributors:貢獻者數組,格式與maintainers相同。包的坐著應該是貢獻者資料的第一個元素                 bugs:提交bug的地址,可以是網址或者電子郵件地址                 licenses:許可證數組,每個元素要包含type和url欄位                 repositories:倉庫託管地址數組,每個元素要包含type、url和path欄位                 dependencies:包的依賴,一個關聯陣列,由包名稱和版本號碼組成。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.