快樂Node程序員的10個習慣

jopen 10年前發布 | 10K 次閱讀 Node

JavaScript出現近二十年了,但由于其有些問題不能解決,使得像Python和Ruby這一類的語言很吸引人,這些問題包括命令行接 口、交互式開發環境、包的管理和沒有一個有組織開源社區等。幸虧Node.js和npm,使得JavaScript的現狀有了明顯改善。網絡程序員正使用 強大的新工具,這使他們可以做他們想到的任何事情。


下面是一個讓你的快樂和讓你程序很好工作的小技巧清單。


1、用npm init開始你的程序

npm包括一個用init命令創建一個package.json文件的過程。盡管你也許很熟悉package.json極其屬性,但是npm init仍然是一個很方便的方法讓你的新的節點應用程序(node app)或模塊開始走上正軌。它為你智能地進行默認設置,就像從其父目錄推斷模塊名稱,從~/.npmrc中讀取作者信息,或者是使用你的git設置來確 定repository。

mkdir my-node-app
cd my-node-app
npm init

2、聲明所有的依賴關系

每次你在本地安裝一個模塊,使用--save或者是--save-dev是一個很好的習慣。這些標記把給定的模塊增加到你的package.json的dependencies或devDependencies的列表中,并且它會使用一個合理的默認的semver range

npm install domready --save
注意現在npm使用的caret-style semver ranges :

"dependencies": {
  "domready": "^1.0.4"
}

3、指定一個啟動腳本

在package.json中為scripts.start設置一個值以便允許你在命令行中用npm start來打開你的app。這是一個很好的要去遵守的慣例,這樣這可以讓任何的節點開發人員來拷貝你的app并沒有任何問題地運行。

Bonus:如果你在你的package.json中定義了scripts.start,那么你就不需要Procfile了。正如web process使用npm start時Procfile將自動地被創建出來。

這有一個打開script的例子

"scripts": {
  "start": "node index.js"
}

4、指定一個測試腳本

就像你團隊中任何人都應該能運行你的程序一樣,他們也應該都能測試它。在package.json 中的scripts.test字段是用來指定一個腳本來運行測試的。如果你正在使用如mocha一類的東西來進行測試,請確保在package.json 中包含它,并且要指明這是你本地項目的字節文件而不是已經發布的mocha。

"scripts": {
  "test": "mocha"
}

5、避免代碼的依賴關系

許多節點app使用依賴于C的npm模式,像bson、ws、和hiredis,他們必須為HeroKu的64位Linux系統架構重新編譯。這個編輯編 譯過程很費時。為了使這個過程盡可能快,下載過和編譯后HeroKu在節點建立緩存以便在后續使用中被重復使用。這個緩存意味著占用更少的網絡流量進行更 少的編譯。忽略node_modules也是npm模塊作者推薦的做法。</div>

echo node_modules >> .gitignore

6、使用環境變量配置npm

來自npm配置文檔

任何以npm_config_開始的環境變量將被解釋成一個配置參數。例如,把npm_config_foo=bar放在你的環境變量中將把foo放到 bar的配置參數中。任何沒有被初始化的環境變量將被設置成true。配置值不區分大小寫,因此NPM_CONFIG_FOO=bar也能同樣的工作。</div>

正如最近被改變的一樣,在所有的HeroKu框架中app環境變量設置都是有效地。這種改變使得HeroKu的節點使用者可以控制他們的npm的配置,并且不需要改變他們的程序代碼。第七個習慣是一個極好的實例。


7、帶著你自己的npm注冊表

最近幾年公開的npm注冊增長的很快,但這伴隨著一些不穩定因素。結果很多的節點使用者正尋找可替換的辦法,為了同時提高開發周期開發穩定性,或者是為了建立自己的私人節點模塊。NodejitsuGemfury提供付過費的私人注冊表,并且有一些免費的替代品,例如Mozilla's read-only S3/CloudFront mirrorMaciej Ma?ecki's European mirror.配置你的Heroku節點應用程序來使用一個自定義注冊中心是很容易的:

heroku config:set npm_config_registry=http://registry.npmjs

8、跟蹤過時的依賴關系

如果你已經從事編程很久了,你可能是dedependency hell。幸運的是Node.js和npm都會對改變進行說明,通過Semantic Versioning Specification。在這種情況下,版本號和他們改變了的實現方式能傳達出從一個版本到另一個版本底層是如何實現的。

npm有一個鮮為人知的命令outdated。使用npmupdate,這是一個很好的工具來檢測你的app的依賴關系是否已經過時并且需要升級。

cd my-node-app
npm outdated
Package            Current  Wanted     Latest  Location
-------            -------  ------     ------  --------
express              3.4.8   3.4.8  4.0.0-rc2  express
jade                 1.1.5   1.1.5      1.3.0  jade
cors                 2.1.1   2.1.1      2.2.0  cors
jade                0.26.3  0.26.3      1.3.0  mocha > jade
diff                 1.0.7   1.0.7      1.0.8  mocha > diff
glob                 3.2.3   3.2.3      3.2.9  mocha > glob
commander            2.0.0   2.0.0      2.1.0  mocha > commander

如果你工作在開源的節點app或模式上,檢查david-dmNodeICO、和shields.io這三大服務,它提供圖形包,你能使用它們顯示你的工程的README或者是website。


9、使用npm腳本運行自定義構建步驟

隨著npm的發展,出現了自動開發構建過程。Grunt是迄今為止世界上最流行的構建工具,但是新工具如gulp.jsplain old npm scripts也同樣吸引具有吸引力。

當你部署一個節點qpp到HeroKu上,執行npm install --production命令來確保你的app的npm 依賴包被下載和安裝。這個命令有時也可以做其他的事情。它運行你在package.json文件中定義的npm script hooks,例如preinstall和postintall。下面是一個例子:

{
  "name": "my-node-app",
  "version": "1.2.3",
  "scripts": {
    "preinstall": "echo here it comes!",
    "postinstall": "echo there it goes!",
    "start": "node index.js",
    "test": "tap test/*.js"
  }
}
這些腳本可以內聯bash命令,或者是參考command-line executables。你也可以參考其他的npm 腳本:

{
  "scripts": {
    "postinstall": "npm run build && npm run rejoice",
    "build": "grunt",
    "rejoice": "echo yay!",
    "start": "node index.js"
  }
}

10、嘗試新的東西

Harmony是ES6工作集名字,下一個ECMAScript語言的版本就是人們熟知的JavaScript。Harmony給JavaScript帶來了大量的令人興奮的功能,其中有許多在新一點的版本中已經可以使用了。

Harmony實現了許多新功能像block scopinggeneratorsproxiesweak maps等。

為了在你的節點app中實現新功能,尤其是一個新版本像0.11.x,在你的啟動腳本中加入--harmony吧:

{
  "scripts": {
    "start": "node --harmony index.js"
  },
  "engines": {
    "node": "0.11.x"
  }
}

11、Browserify

客戶端的JavaScript有一個“面條式代碼”的遺留問題,但語言本身不是這樣的。缺乏正當的依賴管理使得我們陷入jQuery-plugin copy-pasta這種狀態長達數年。多虧了npm,我們正在進入前端復興:npm注冊的瘋狂,在瀏覽器中模式設計的盛行是驚人的。

Browserify是一個了不起的工具,使得節點設計模式能在瀏覽器中工作。如果你是一個前端開發人員,browserify可以改變你的生活。也許不是今天,也許不是明天,但就在不遠的將來了。開始使用browserify吧,查看文章

你的習慣是什么呢?

無論你是否已經在node上編程一段時間了或者是僅僅剛剛開始,都希望你找到有用的方法。如果你有什么好的note習慣要分享,用#node_habits作為標簽寫文章吧。happy hacking!

來自:http://ourjs.com/detail/53272b83cc7e181509000003

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!