本篇文章主要介紹 Node.js、npm 和一些 npm 的套件

  • 什麼是 Node.js
  • Node.js 和 npm 是什麼關係
  • 常見 npm 套件
    • Babel
    • Typescript
    • Jest / TS-Jest
    • nodemon
    • ts-node
  • 為什麼有些套件有 @ 綴詞

什麼是 Node.js

Node.js 是一款 JavaScript 執行環境的軟體,讓編寫 Javascript 後,可以在瀏覽器以外的地方執行,透過 Command Line 執行 Javascript。他的運行引擎基於 Chrome V8,可以想像成用 Command Line 啟動瀏覽器運行 Javascript 的環境。Node.js 被設計來打造可擴充的網路應用程式,可以視為在伺服器端運行 JavaScript,更多詳細內容可參考官方網站或是維基百科

Node.js 和 npm 是什麼關係

提到 Node.js 時常會伴隨著 npm,npm 是 Node.js 預設的套件管理工具,其他 Node.js 的套件管理工具還有 yard。
npm 的完整名稱是 Node Package Manager,是由 NPM 這家公司進行維護與開發,在 2020 年被 GitHub 所收購。

  • npm CLI: CLI 全名是 Command-Line Interface,常見的指令像是 npm installnpm run
  • npm registry: 一個套件的登記的地方,會記錄套件名稱、套件版本等資訊,預設的登記位置是 https://registry.npmjs.org/,也就是說執行 npm install 會到該處搜尋並下載套件。當然也可以建立個人的 registry,就可以不用公開的情況下也能使用 npm 進行部屬安裝

常見 npm 套件

Babel

Babel 是一個 Javascript 的 compiler,讓開發者可以使用新的開發風格,並編譯成舊的 js 程式碼給瀏覽器執行。
原因是 JavaScript 定義新的標準 如 ES6 (ECMAScript 6),但是瀏覽器並不支援的話,如 IE、Chrome 61 版之前,就會讓使用者有機會運行不正確。
所以透過 Babel 轉換成固定風格,就可以讓開發者使用新規定,並向下支援舊版瀏覽器

Typescript

官方首頁的簡介 “TypeScript is JavaScript with syntax for types”,可以知道他是一個有型態的 Javascript。
型態讓開法者清楚知道還是定義,回傳值的內容,並且限定預期的型態,利用型態輔助可以開發的更安全,且更有閱讀性

Jest / TS-Jest

Jest 是一款 Javascript 的測試框架,測試框架可以讓我們關注要測試的內容就好,降低測試的難易度。
TS-Jest 是 Typescript 版本的 Jest。

nodemon

nodemon 是一款自動重新執行 Node.js 的套件,當他偵測到內容經過修改,或是路徑有不相同,它會自動重新啟動 Node.js。
而且 nodemon 不需要額外增加程式碼,只需要在啟動時,從 node 啟動更改為 nodemon 啟動

ts-node

ts-node 是一款整合 Typescript 編譯和執行 Javascript 的軟體,一般使用 Typescript 需要將 *.ts 編譯成 *.js,之後再用 node 去執行 js,但使用 ts-node 之後只需要給他 ts 他就直接編譯並執行

為什麼有些套件有 @ 綴詞

@ 是 npm 套件的作用域 scope,他將相關的套件放在同一個作用域。每個使用者或組織都有自己的作用域,而且其他人不能使用相同名稱的作用域做添加,換句話說,我們可以用作用域判斷是否是官方提供的套件。例如 npm install @myorg/mypackage一定是由 @myorg 所提供的套件

參考資料