1. 程式人生 > >Node學習筆記(二)

Node學習筆記(二)

1.package.json詳解Node.js 在呼叫某個包時,會首先檢查包中 package.json 檔案的 main 欄位,將其作為包的介面模組,如果 package.json 或 main 欄位不存在,會嘗試尋找 index.js 或 index.node 作為包的介面。

package.json 是 CommonJS 規定的用來描述包的檔案,完全符合規範的 package.json 檔案應該含有以下欄位。

name:包的名稱,必須是唯一的,由小寫英文字母、數字和下劃線組成,不能包含空格。

description:包的簡要說明。

version:符合語義化版本識別①規範的版本字串。

keywords:關鍵字陣列,通常用於搜尋。

maintainers:維護者陣列,每個元素要包含 name、email(可選)、web(可選)欄位。

contributors:貢獻者陣列,格式與maintainers相同。包的作者應該是貢獻者陣列的第一個元素。

bugs:提交bug的地址,可以是網址或者電子郵件地址。

licenses:許可證陣列,每個元素要包含 type (許可證的名稱)和 url (連結到許可證文字的地址)欄位。

repositories:倉庫託管地址陣列,每個元素要包含 type (倉庫的型別,如 git )、url (倉庫的地址)和 path (相對於倉庫的路徑,可選)欄位。

dependencies:包的依賴,一個關聯陣列,由包名稱和版本號組成。

 

例項:

{
"name": "mypackage",
"description": "Sample package for CommonJS. This package demonstrates the required
elements of a CommonJS package.",
"version": "0.7.0",
"keywords": [
"package",
"example"

],
"maintainers": [
{
"name": "Bill Smith",
"email": "

[email protected]",
}
],
"contributors": [
{
"name": "BYVoid",
"web": "http://www.byvoid.com/"
}
],

"bugs": {
"mail": "[email protected]",
"web": "http://www.example.com/bugs"
},
"licenses": [
{
"type": "GPLv2",
"url": "http://www.example.org/licenses/gpl.html"
}
],
"repositories": [
{

"type": "git",
"url": "http://github.com/BYVoid/mypackage.git"
}
],

"dependencies": {
"webkit": "1.2",
"ssl": {
"gnutls": ["1.0", "2.0"],
"openssl": "0.9.8"
}
}
}

2.本地模式與全域性模式相比的特點

模 式                    可通過 require 使用                     註冊PATH
本地模式                         是                                           否
全域性模式                         否                                           是

 

3. 如何在npm上釋出自己的包在釋出之前,首先需要讓我們的包符合 npm 的規範,npm 有一套以 CommonJS 為基礎包規範,但與 CommonJS 並不完全一致,其主要差別在於必填欄位的不同。通過使用 npm init 可以根據互動式問答產生一個符合標準的 package.json,例如建立一個名為 byvoidmodule 的目錄,然後在這個目錄中執行npm init:

這樣就在 byvoidmodule 目錄中生成一個符合 npm 規範的 package.json 檔案。建立一個index.js 作為包的介面,一個簡單的包就製作完成了。在釋出前,我們還需要獲得一個賬號用於今後維護自己的包,使用 npm adduser 根據提示輸入使用者名稱、密碼、郵箱,等待賬號建立完成。完成後可以使用 npm whoami 測驗是否已經取得了賬號。

接下來,在 package.json 所在目錄下執行 npm publish,稍等片刻就可以完成釋出了。開啟瀏覽器,訪問 http://search.npmjs.org/ 就可以找到自己剛剛釋出的包了。現在我們可以在

世界的任意一臺計算機上使用 npm install byvoidmodule 命令來安裝它。如果你的包將來有更新,只需要在 package.json 檔案中修改 version 欄位,然後重新使用 npm publish 命令就行了。如果你對已釋出的包不滿意(比如我們釋出的這個毫無意義的包),可以使用 npm unpublish 命令來取消釋出。

4.除錯

一.Node.js 支援命令列下的單步除錯。

二.使用 Eclipse 除錯 Node.js 

三.使用 node-inspector 除錯 Node.js 

在命令列下執行 node debug xx.js,將會啟動除錯工具:

                        命 令                                                          功 能

                         run                                         執行指令碼,在第一行暫停

                      restart                                                 重新執行指令碼
                      cont, c                                   繼續執行,直到遇到下一個斷點
                      next, n                                                        單步執行
                      step, s                                               單步執行並進入函式
                       out, o                                                    從函式中步出
             setBreakpoint(), sb()                                   在當前行設定斷點
          setBreakpoint(‘f()’), sb(...)                         在函式f的第一行設定斷點

      setBreakpoint(‘script.js’, 20), sb(...)              在 script.js 的第20行設定斷點
            clearBreakpoint, cb(...)                                  清除所有斷點
                   backtrace, bt                                         顯示當前的呼叫棧
                      list(5)                                         顯示當前執行到的前後5行程式碼
                 watch(expr)                                       把表示式 expr 加入監視列表
              unwatch(expr)                                     把表示式 expr 從監視列表移除

                watchers                                        顯示監視列表中所有的表示式和值

                   repl                                                在當前上下文開啟即時求值環境
                    kill                                                       終止當前執行的指令碼
                scripts                                                 顯示當前已載入的所有指令碼
                version                                                      顯示 V8 的版本

下面是一個簡單的例子:
$ node debug debug.js
< debugger listening on port 5858
connecting... ok
break in /home/byvoid/debug.js:1
1 var a = 1;
2 var b = 'world';
3 var c = function (x) {
debug> n

break in /home/byvoid/debug.js:2
1 var a = 1;
2 var b = 'world';
3 var c = function (x) {
4 console.log('hello ' + x + a);
debug> sb('debug.js', 4)
1 var a = 1;
2 var b = 'world';
3 var c = function (x) {

* 4 console.log('hello ' + x + a);
5 };
6 c(b);
7 });
debug> c
break in /home/byvoid/debug.js:4
2 var b = 'world';
3 var c = function (x) {
* 4 console.log('hello ' + x + a);
5 };
6 c(b);

debug> repl
Press Ctrl + C to leave debug repl
> x
'world'
> a + 1
2
debug> c
< hello world1
program terminated