代碼的組織與部署


代碼的組織與部署

一、模塊路徑解析規則

1.1 內置模塊

內置模塊。使用

require("fs");

1.2 node_modules目錄

這個目錄是用來存放模塊的。例如某個模塊的絕對路徑是/home/user/hello.js,在該模塊中使用require(‘foo/bar’)方式加載模塊時,則NodeJS依次嘗試使用以下路徑。

 /home/user/node_modules/foo/bar
 /home/node_modules/foo/bar
 /node_modules/foo/bar

NODE_PATH環境變量

用於指定NodeJs額外的模塊搜索路徑。linux下用:分隔,windows下使用;分隔。例如定義了以下NODE_PATH環境變量:

 NODE_PATH=/home/user/lib:/home/lib

當使用require(‘foo/bar’)的方式加載模塊時,則NodeJS依次嘗試以下路徑。

 /home/user/lib/foo/bar
 /home/lib/foo/bar

二、包

2.1 index.js

我們可以把由多個子模塊組成的大模塊稱做,並把所有子模塊放在同一個目錄裏。

- /home/user/lib/
    - cat/
        head.js
        body.js
        main.js

require(’/home/user/lib/cat/main’)就能達到目的。如果把main.js改爲index.js可以像下面那樣寫。

// 感覺整個目錄被當做單個模塊使用
var cat = require('/home/user/lib/cat');
var cat = require('/home/user/lib/cat/index');

2.2 package.json

如果想自定義入口模塊的文件名和存放位置,就需要在包目錄下包含一個package.json文件,並在其中指定入口模塊的路徑。如路徑

- /home/user/lib/
    - cat/
        + doc/
        - lib/
            head.js
            body.js
            main.js
        + tests/
        package.json

它的package.json可以這麼寫。

{
    "name": "cat",
    "main": "./lib/main.js"
}

這樣,就可以通過下面語句獲取模塊了。

var cat = require('/home/user/lib/cat');

三、工程目錄

一個命令行程序爲例,一般我們會同時提供命令行模式和API模式兩種使用方式,並且我們會藉助三方包來編寫代碼。除了代碼外,一個完整的程序也應該有自己的文檔和測試用例。因此,一個標準的工程目錄都看起來像下邊這樣。

- /home/user/workspace/node-echo/   # 工程目錄
    - bin/                          # 存放命令行相關代碼
        node-echo
    + doc/                          # 存放文檔
    - lib/                          # 存放API相關代碼
        echo.js
    - node_modules/                 # 存放三方包
        + argv/
    + tests/                        # 存放測試用例
    package.json                    # 元數據文件
    README.md                       # 說明文件

記錄命令行程序
地址

四、NPM

npm的應用場景。

  • 允許用戶從NPM服務器下載別人編寫的三方包到本地使用。
  • 允許用戶從NPM服務器下載並安裝別人編寫的命令行程序到本地使用。
  • 允許用戶將自己編寫的包或命令行程序上傳到NPM服務器供別人使用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章