這是我參與8月更文挑戰的第20天,活動詳情檢視: 8月更文挑戰
子產品化機制
CommonJS規範
- 加載方式
- 加載内置子產品require('fs')
- 加載相對或絕對路徑的檔案子產品require('/User/...')
- 加載npm包 require('lodash')
- npm包查找原則
- 目前目錄的node_modules檔案夾
- 如果沒有,沿着路徑向上遞歸,直到根目錄下的node_modules
- 找到之後會加載package.json 中main屬性指向的檔案,如果沒有package.json則依次查找index.js、index.json、index.node
- require.cache
require.cache中緩存着加載過的子產品,緩存的原因:同步加載。
- 檔案子產品查找比較耗時,如果每次require都需要重新周遊查找,性能會比較差。
- 在實際開發中子產品可能包含副作用代碼。
其他子產品化規範
- AMD是RequireJS在推廣過程中規範化産出,異步加載,推崇依賴前置。
- CMD是SeaJS在推廣過程中規範化産出,異步加載,推崇就近依賴。
- UMD規範,相容AMD和CommonJS模式。
- ES Modules,語言層面的子產品化規範,與環境無關,可借助babel編譯。
包管理機制
npm是Node.js中的包管理其,提供了安裝、删除等其他指令來管理包。
- 常用指令
npm init
npm config
npm run
npm install
npm uninstall
npm update
npm publish
複制代碼
異步程式設計
Promise
Promise是一個具有四個狀态的有限狀态機,其中三個核心狀态為pending,fulfilled、rejected以及還有一個未開始的狀态。
Web應用開發
HTTP子產品
搭建一個最簡單的HTTP服務,可以通過Node.js内置的HTTP子產品。
KOA介紹
Koa是基于Node.js平台的下一代Web開發架構,Koa它僅僅提供了一個輕量優雅的函數庫,使得編寫Web應用變得得心應手,不在核心方法中綁定任何中間件。下面介紹下執行過程。
- 服務啟動
-
- 執行個體化application
- 注冊中間件
- 建立服務、監聽端口
- 接受/處理請求
-
- 擷取req/res對象
- 執行中間件
- 輸出設定到ctx.body上的内容