Node.js 和 npm 簡介
本篇文章主要介紹 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 install
、npm 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
所提供的套件