1. 程式人生 > >Node.js入門:包結構

Node.js入門:包結構

    JavaScript缺少包結構。CommonJS致力於改變這種現狀,於是定義了包的結構規範(http://wiki.commonjs.org/wiki/Packages/1.0 )。而NPM的出現則是為了在CommonJS規範的基礎上,實現解決包的安裝解除安裝,依賴管理,版本管理等問題。require的查詢機制明瞭之後,我們來看一下包的細節。     一個符合CommonJS規範的包應該是如下這種結構:
  • 一個package.json檔案應該存在於包頂級目錄下 
  • 二進位制檔案應該包含在bin目錄下。 
  • JavaScript程式碼應該包含在lib目錄下。 
  • 文件應該在doc目錄下。 
  • 單元測試應該在test目錄下。
    Node.js在沒有找到目標檔案時,會將當前目錄當作一個包來嘗試載入,所以在package.json檔案中最重要的一個欄位就是main。而實際上,這一處是Node.js的擴充套件,標準定義中並不包含此欄位,對於require,只需要main屬性即可。但是在除此之外包需要接受安裝、解除安裝、依賴管理,版本管理等流程,所以CommonJS為package.json檔案定義瞭如下一些必須的欄位:
  • name:包名,需要在NPM上是唯一的。不能帶有空格。 
  • description:包簡介。通常會顯示在一些列表中。 
  • version:版本號。一個語義化的版本號(http://semver.org/ ),通常為x.y.z。該版本號十分重要,常常用於一些版本控制的場合。 
  • keywords:關鍵字陣列。用於NPM中的分類搜尋。 
  • maintainers:包維護者的陣列。陣列元素是一個包含name、email、web三個屬性的JSON物件。 
  • contributors:包貢獻者的陣列。第一個就是包的作者本人。在開源社群,如果提交的patch被merge進master分支的話,就應當加上這個貢獻patch的人。格式包含name和email。
  • bugs:一個可以提交bug的URL地址。可以是郵件地址(mailto:
    [email protected]
    ),也可以是網頁地址(http://url)。 
  • licenses:包所使用的許可證。
  • repositories:託管原始碼的地址陣列。 
  • dependencies:當前包需要的依賴。這個屬性十分重要,NPM會通過這個屬性,幫你自動載入依賴的包。
    以下是Express框架的package.json檔案,值得參考。
1 "name": "express", 
2 "description": "Sinatra inspired web development framework", 
3 "version": "3.0.0alpha1-pre", 
4 "author": "TJ Holowaychuk",

    除了前面提到的幾個必選欄位外,我們還發現了一些額外的欄位,如bin、scripts、engines、devDependencies、author。這裡可以重點提及一下scripts欄位。包管理器(NPM)在對包進行安裝或者解除安裝的時候需要進行一些編譯或者清除的工作,scripts欄位的物件指明瞭在進行操作時執行哪個檔案,或者執行拿條命令。如下為一個較全面的scripts案例:

1 "scripts": { 
2     "install": "install.js", 
3     "uninstall": "uninstall.js", 
4     "build": "build.js", 
5     "doc": "make-doc.js", 
6     "test": "test.js", 
7 }

    如果你完善了自己的JavaScript庫,使之實現了CommonJS的包規範,那麼你可以通過NPM來發布自己的包。

npm publish <folder>
    命令十分簡單。但是在這之前你需要通過npm adduser命令在NPM上註冊一個帳戶,以便後續包的維護。NPM會分析該資料夾下的package.json檔案,然後上傳目錄到NPM的站點上。     使用者在使用你的包時,也十分簡明:
npm install <package>
    甚至對於NPM無法安裝的包(因為某些奇怪的網路原因),可以通過github手動下載其穩定版本,解壓之後通過以下命令進行安裝:
npm install <package.json folder>
    只需將路徑指向package.json存在的目錄即可。然後在程式碼中require('package')即可使用。     Node.js中的require內部流程之複雜,而方法呼叫之簡單,實在值得歎為觀止。

相關推薦

Node.js入門結構

    JavaScript缺少包結構。CommonJS致力於改變這種現狀,於是定義了包的結構規範(http://wiki.commonjs.org/wiki/Packages/1.0 )。而NPM的出現則是為了在CommonJS規範的基礎上,實現解決包的安裝解除安裝,依賴管理,版本管理等問題。require

Node.js入門模組機制

**CommonJS規範 ** 早在Netscape誕生不久後,JavaScript就一直在探索本地程式設計的路,Rhino是其代表產物。無奈那時服務端JavaScript走的路均是參考眾多伺服器端語言來實現的,在這樣的背景之下,一沒有特色,二沒有實用價值。但是隨著JavaScript在前端的應

Node.js入門前後端模組的異同

    通常有一些模組可以同時適用於前後端,但是在瀏覽器端通過script標籤的載入JavaScript檔案的方式與Node.js不同。Node.js在載入到最終的執行中,進行了包裝,使得每個檔案中的變數天然的形成在一個閉包之中,不會汙染全域性變數。而瀏覽器端則通常是裸露的JavaScript程式碼片段。所以

Node.js入門非同步IO

非同步IO     在作業系統中,程式執行的空間分為核心空間和使用者空間。我們常常提起的非同步I/O,其實質是使用者空間中的程式不用依賴核心空間中的I/O操作實際完成,即可進行後續任務。 同步IO的並行模式 多執行緒單程序     多執行緒的設計之處就是為了在共享的程式空間中,實現並行處理

Node.js入門Hello World

  馬上開始我們第一個Node.js應用:“Hello World”。開啟你的編輯器,建立一個hello.js檔案。編寫程式碼儲存該檔案,並通過Node.js來執行。 控制檯輸出 1 console.log('hello, nodejs.') ; Web輸出 1

Node.js入門Node.js&NPM的安裝與配置

Node.js安裝與配置      Node.js已經誕生兩年有餘,由於一直處於快速開發中,過去的一些安裝配置介紹多數針對0.4.x版本而言的,並非適合最新的0.6.x的版本情況了,對此,我們將在0.6.x的版本上介紹Node.js的安裝和配置。(本文一律以0.6.1為例,0.6的其餘版本,只需替換版本號即

Node.js入門事件機制

Evented I/O for V8 JavaScript     基於V8引擎實現的事件驅動IO。 事件機制的實現     Node.js中大部分的模組,都繼承自Event模組(http://nodejs.org/docs/latest/api/events.html )。Event模組(ev

Node.js入門檔案查詢機制

檔案查詢流程圖 從檔案模組快取中載入     儘管原生模組與檔案模組的優先順序不同,但是都不會優先於從檔案模組的快取中載入已經存在的模組。 從原生模組載入     原生模組的優先順序僅次於檔案模組快取的優先順序。require方法在解析檔名之後,優先檢查模組是否在原生模組列

(原創)node.js入門之一express簡單伺服器搭建-Mac環境開發

0:開篇廢話 好久沒來記錄點東西了,以前記錄的都是一些解決小問題的程式碼片段,只能算是當記事本來用的吧。 換了工作,好像沒那麼多程式碼要寫了,那就自己找點事做,於是重新翻出了nodejs,以前是在主程的搭建環境下,寫一些介面給我的iOS前

Node.js入門以及第一個helloworld程序

目錄 rip 工作 直播 需要 減少 web容器 用戶 長連接 1、概念:簡單的說 Node.js 就是運行在服務端的 JavaScript。學之前需要明白Node.js是無法挑戰jsp、php或者asp這種老牌網站的地位的,是永遠不會出現在證券、金融這種領域的。node.

Node.js入門》Windows 7下Node.js Web開發環境搭建筆記

基於 方法 一位 實時 ibm cal 項目 直觀 ear 近期想嘗試一下在IBM Bluemix上使用Node.js創建Web應用程序。所以須要在本地搭建Node.js Web的開發測試環境。這裏講的是Windows下的搭建方法,使用CentOS 的小夥伴請參考:《No

Node.js入門

js代碼 roc 簡單 本地 node span server -s host Node的安裝就不說了,流程見http://www.runoob.com/nodejs/nodejs-install-setup.html。直接來做一個簡單的web服務器 首先輸入並保存一個js

node js實戰帶數據庫,加密的註冊登錄表單

settings else input 是否 rip dig code setting 個人 demo 註冊效果: 登陸效果: 數據庫截圖: 數據庫操作 db.js //這個模塊裏面封裝了所有對數據庫的常用操作 var MongoClient =

Node.js入門到企業Web開發中的應用

實戰 tput 統一 sse 介紹 有用 enc oba 入門到 第1章 課程內容介紹主要介紹為什麽我們錄制本次課程、課程包含的主要內容。1-1 導學1-2 課程介紹 第2章 NodeJS 是什麽,為什麽偏愛NodeJS?在一切課程課程內容開始之前先了解一下 NodeJS

易學筆記-第2部分 Node.js入門指南/第5章 Node.js在幣圈流行麼

第2部分 Node.js入門指南/第5章 Node.js在幣圈流行麼/5.1 Node.js在開源社群很流行 Node.js在開源社群很流行 概念:JavaScript大部分專案都是建立在Node.js平臺之上的 在Github上專案採用的語言統計,JavaScr

Node.js入門學習筆記(1)

node.js筆記(1) 前端小白 自己打算做個微信小程式,剛好學習一下node.js,準備用node搭建一個簡單的後臺。寫部落格記錄一下學習進度,另一方面加強對新知識的理解。 主要學習途徑 一、node安裝 之前安裝過,這裡簡單記錄一下 安裝包地址 檢查n

Node js入門 Windows 7下Node js Web開發環境搭建筆記

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Node.js Streams你需要知道的一切

Node.js Streams:你需要知道的一切 影象來源 Node.js流以難以使用而聞名,甚至更難理解。好吧,我有個好訊息 - 不再是這樣了。 多年來,開發人員在那裡建立了許多軟體包,其唯一目的是簡化流程。但在本文中,我將重點介紹本機Node.js流API。 “Str

node.js自定義 的步驟

首先要自定義一個資料夾 資料夾裡面要放的目錄如下圖 lib目錄裡面放自己封裝的方法 然後在index.js(不一定要叫index.js,相當於一個集結很多方法的資料夾) 裡面引入全域性暴露的方法 在package.json裡面main屬性裡面把index.js路徑放進去 然後在需要用

原始碼--Node.js 探祕初識單執行緒的 Node.js

  -- 高階理解 Nodejs, 從原始碼方向理解   // Node.js 探祕:初識單執行緒的 Node.js http://taobaofed.org/blog/2015/10/29/deep-into-node-1/ // 深入理解 Nod