天天看點

【青訓營】- Node.js基礎入門筆記2

這是我參與8月更文挑戰的第20天,活動詳情檢視: 8月更文挑戰

子產品化機制

CommonJS規範

  • 加載方式
  1. 加載内置子產品require('fs')
  2. 加載相對或絕對路徑的檔案子產品require('/User/...')
  3. 加載npm包 require('lodash')
  • npm包查找原則
  1. 目前目錄的node_modules檔案夾
  2. 如果沒有,沿着路徑向上遞歸,直到根目錄下的node_modules
  3. 找到之後會加載package.json 中main屬性指向的檔案,如果沒有package.json則依次查找index.js、index.json、index.node
  • require.cache
require.cache中緩存着加載過的子產品,緩存的原因:同步加載。
  1. 檔案子產品查找比較耗時,如果每次require都需要重新周遊查找,性能會比較差。
  2. 在實際開發中子產品可能包含副作用代碼。

其他子產品化規範

  • 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上的内容

繼續閱讀