DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> Node.js的包詳細介紹
Node.js的包詳細介紹
編輯:關於JavaScript     

在Node.js語言中,包和模塊並沒有本質的不同,包是在模塊的基礎上更深一步的抽象,包將某個獨立的功能封裝起來,用於發布、更新、依賴管理和進行版本控制。Node.js根據CommonJS規范實現了包機制,開發了npm來解決包的發布和獲取需求。

Node.js的包是一個目錄,其中包含JSON格式的包說明文件package.json。Node.js的包基本遵循CommonJS規范,因此具備以下特征:

CommonJS規范定義的包特性:

1)頂層目錄包含package.json文件;
2)bin目錄存放二進制文件;
3)lib目錄存放JavaScript文件;
4)doc目錄存放文檔;
5)test目錄存放單元測試。

Node.js的模塊與文件是一一對應的,文件不僅可以是JavaScript源碼文件或二進制文件,還可以是目錄。最簡單的包,就是一個目錄的模塊。

Node.js的包通常是一些模塊的集合,在模塊的基礎上提供了更高層的抽象,相當於提供了一些固定接口的函數庫。
通過定制package.json,我們可以創建更復雜、更完善、更符合規范的包用於發布。

Node.js在調用包時,首先會檢查包中的package.json文件的main字段,將其作為包的接口模塊,如果package.json文件的main字段不存在,那麼Node.js會嘗試尋找index.js或index.node作為包的接口。

package.json文件是CommonJS規范用於描述包的文件,完全符合規范的package.json文件應該包含以下字段:
1)name:包名。包名是唯一的,由小寫字母、數字和下劃線組成,不能含空格。
2)description:包說明。對包進行簡要描述。
3)version:版本號。滿足《語義化版本識別》規范的版本字符串。
4)keywords:關鍵字數組,通常用於搜索。
5)maintainers:維護者數組。每個元素包含name、email(可選)、web(可選)字段。
6)contributors:貢獻者數組。格式與maintainer數組相同。包作者應該是貢獻者數組的第一個元素。
7)bugs:提交bug的地址,可以是網址或電郵地址。
8)licenses:許可證數組。每個元素要包含type(許可證名稱)和url(鏈接到許可證文本的地址)字段。
9)repositories:倉庫托管地址數組。每個元素要包含type(倉庫的類型,如Git)、url(倉庫地址)和path(相對於倉庫的路徑,可選)字段。
10)dependencies:包依賴。是一個關聯數組,由包名和版本號組成。

注:《語義化版本識別》規范是國外提出的一套版本命名規范,最初目的是解決各種各樣的版本號大小比較的問題,目前被許多包管理系統所采用。

下面是一個完全符合CommonJS規范的package.json例子:
代碼如下:
{  
  "name": "testpackage", 
  "description": "My package for CommonJS.", 
  "version": "0.1.0", 
  "keywords": [ 
     "testpackage", 
     "liq" 
  ],  
  "maintainers": [ 
     { 
        "name": "liq", 
        "email": "liq@hotmail.com", 
     } 
  ], 
  "contributors": [ 
     { 
        "name": "liq", 
        "web": "http://blog.csdn.net/chszs" 
     } 
  ], 
  "bugs": { 
     "mail": "liq@hotmail.com", 
     "web": "http://blog.csdn.net/chszs" 
  }, 
  "licenses": [ 
     { 
        "type": "Apache License v2", 
        "url": "http://www.apache.org/licenses/apache2.html" 
     } 
  ], 
  "repositories": [ 
     { 
        "type": "git", 
        "url": "http://github.com/chszs/packagetest.git" 
     } 
  ], 
  "dependencies": {  
     "webkit": "1.2", 
     "ssl": {  
        "gnutls": ["1.0", "2.0"], 
        "openssl": "0.9.8" 
     } 
  } 
}

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved