Node.js包結構和小而美的哲學
寫這篇文章的原因是,jjc的駁《我不是很懂 Node.js 社區的 DRY 文化》,我對這篇文章還是比較認可的,做一個小小的補充。
Node出現之前,JavaScript是缺少包結構的。CommonJS致力於改變這種現狀,於是定義了包的結構規範(Packages/1.0 - CommonJS Spec Wiki )。而NPM的出現則是為了在CommonJS規範的基礎上,實現解決包的安裝卸載,依賴管理,版本管理等問題。require的查找機制明了之後,我們來看一下包的細節。
一個符合CommonJS規範的包應該是如下這種結構:
- 一個package.json文件應該存在於包頂級目錄下
- 二進位文件應該包含在bin目錄下(可選)
- JavaScript代碼入庫是index.js,其他包含在lib目錄下
- 文檔應該在doc目錄下(可選)
- 單元測試應該在test目錄下(可選)
保持模塊足夠小(內聚),模塊應該只做一件事!"Small is beautiful"是Unix哲學9條里的第一條,但對Node.js來說,它實在是再合適不過了。
使用Unix的方式:
> Developers should build a program out of simple parts connected by well defined interfaces, so problems are local, and parts of the program can be replaced in future versions to support new features.
知名 Node.js 程序員 [Sindre Sorhus ](One-line node modules · Issue #10 · sindresorhus/ama)說過
。
> Sometimes code is complex because it has to be. It might handle more edge cases which are found over time and makes the code more durable.
對於Node.js這種新生平台來說,採用小而美哲學發展社區生態,是非常明智的選擇的。至於npm包的質量問題,並非node獨有的問題,相信讀者自可甄別。
推薦閱讀:
※redis怎麼做消息隊列?
※為什麼nodejs的module.js里用了readFileSync而不用readFile?
※Object.create Reflect.setPrototypeOf 哪個比較好?
※js中什麼技術能合併多個前端請求,並生成一個json文件發送?
※對普通的WEB項目,NODEJS跟傳統的PHP相比,有哪些優勢?