使用 NVM 管理 Node.js 版本
雖然 Vue 3 並不太挑 Node.js 版本,只要符合最低需求 Node.js 18.0 以上即可,但其所使用的 NPM Package 則可能會挑版本,因此實務上還是建議使用 NVM (Node Version Manager) 管理 Node.js 版本。
失くすものさえない今が強くなるチャンスよ
雖然 Vue 3 並不太挑 Node.js 版本,只要符合最低需求 Node.js 18.0 以上即可,但其所使用的 NPM Package 則可能會挑版本,因此實務上還是建議使用 NVM (Node Version Manager) 管理 Node.js 版本。
藉由 NVM 安裝與管理 Node,可讓我們在本機安裝與管理多個版本的 Node,非常方便。
If we want to test the final build result of Vue or Hugo, we don’t have to use Nginx or Apache. Just install Serve
as a simple web server by NPM.
We often use JSON files to store configuration. For example, host
、port
、login
、password
and database
settings for the database server. Since Node supports ES module, we can just use import
statement to import JSON files synchronously.
Environment Variable is essential for Node. We can both read environment variables at the development phase or production phase.
As long as we install Docker and Docker Compose on AWS EC2, we can run Node by Docker on AWS EC2.
在 Microservice 架構下,理論上 Nginx 與 Node 應該各自放在不同 Container 下,但有時 API 就是要控制 Nginx 或其他執行檔如 FFmpeg,此時將 Node 與 Nginx 包在同一個 Image 會更方便。
GraphQL 本質只能算是 Middleware,因此也能如 Node + Express 般包進 Docker,本文將介紹使用 Babel 後 Apollo GraphQL 如何打包成 Docker Image。
Docker image 一般都沒處理 Time Zone,因此都維持 UTC 時間,若有特殊需求要手動調整 Time Zone。
Node 本身已提供 HTTP 服務,可用來開發 API,可自行擴充 NPM Script,最後只要下 yarn docker
就可一鍵建立 Docker Image。
可將 DELETE
Statement 直接傳入 Node-mssql,並且支援 Template String 實現 Parameter 避免湊字串而造成 SQL Injection。
可將 UPDATE
Statement 直接傳入 Node-mssql,並且支援 Template String 實現 Parameter 避免湊字串而造成 SQL Injection。
可將 INSERT
Statement 直接傳入 Node-mssql,並且支援 Template String 實現 Parameter 避免湊字串而造成 SQL Injection。
可將 SELECT
Statement 直接傳入 Node-mssql,並且支援 Template String 實現 Parameter 避免湊字串而造成 SQL Injection。
可將 DELETE
Statement 直接傳入 Node-postgres,並且支援 Parameter 方式避免湊字串而造成 SQL Injection。
可將 UPDATE
Statement 直接傳入 Node-postgres,並且支援 Parameter 方式避免湊字串而造成 SQL Injection。
可將 INSERT
Statement 直接傳入 Node-postgres,並且支援 Parameter 方式避免湊字串而造成 SQL Injection。
可將 SELECT
Statement 直接傳入 Node-postgres,並且支援 Parameter 方式避免湊字串而造成 SQL Injection。
有時在下 yarn install
時,會出現 Your current version of Yarn is out of date.
的警告訊息,該如何更新 Yarn 到最新版呢 ?
我們知道 Yarn 的 Local Package 都存在 Project 的 node_modules
目錄下,必要時我們可以自行刪除 node_modules
目錄,再重新 yarn install
重新安裝;但 Global Package 到底存在什麼目錄下呢 ?
Yarn 速度比 NPM 快,且 Command 也比較精簡,但不少文件仍使用 NPM,特別記下常用 Command 對照表。
NPM Script 是很好用的工具,可自行將需要自動化部分整理成 NPM Script,由於 package.json
本身就是 JSON 格式,因此 NPM Script 也可以讀取到其 Property 加以應用。
ECMAScript 最迷人的地方除了 First Class Function 外,可以前後端共用相同語言與 Package 也是一大特色,本文將使用 ECMAScript 2015+ 建立 ES Module,並透過 Babel 轉譯成 CommonJS Module,讓前後端都能使用相同 。
ES Module 是 ECMAScript 2015 最重要發明,而從 Node 12 開始也正式支援 ES Module,甚至還可將 Import 語法用在原本 CommonJS Module。
當升級到 macOS Catalina 之後,每當 yarn install
或由 Yarn 安裝新的 Package 時,都會看到 No Xcode or CLT Version Detected
錯誤訊息,明明 Xcode Command Line Tools 已經成功安裝,為什麼還是會錯誤呢 ?
實務上常會有獨立 Service 需要每幾分鐘或每小時執行特定工作,如呼叫 API 抓資料並寫進其他資料庫,在後端可使用 Node Cron 完成。
Node 無論 LTS 版或 Current 版都進版快速,使用 NVM 目的就是希望在本機能安裝多個 Node 版本供測試,該如何安裝 Current 版 Node,並同時設定為預設版本,且將 Global Package 也一併安裝好呢 ?
實務上常在 docker-compose.yml
設定環境變數給 Container,Node 該如何讀取這些環境變數呢 ?
在 NPM script 中,有時會使用 NODE_ENV
設定環境變數,但會發會在 macOS 可執行,在 Windows 卻無法執行,可安裝 cross-env
解決。
Node 在後端除了可提供 GraphQL API,如傳統 REST API、Cron Job 也可以由 Node 開發,本文使用 Babel + Node + Docker 打造開發環境。
Node 14.18.0 總算直接支援 Top Level Await,這使得 await
更加實用,不必再使用 Async Function 配合 IIFE。
一個完整 Node 環境包含 NVM、Node、NPM 與 Yarn,本文將介紹其安裝方法。
使用了 Yarn 之後,npm 重要性不若以往,但偶而還是會有使用 npm 的時候。
NVM 是 Node 版本管理程式,可用來安裝/移除不同版本的 Node,還可以切換 Node 版本,若你大量依賴 Node 生態系,NVM 一定要安裝。
Node 的一大特色就是需依賴大量的 Package,但有些 Package 只是開發或編譯使用,如 Babel、Nodemon 只會安裝在 devDependencies
,像這類 Package 就不須安裝在發布的 Docker Image 內,可大幅降低 Image Size。
雖然 GraphQL 主要是給前端使用,但有時在 Microservice 架構下,後端也會需要呼叫其他 Service 所提供 GraphQL,此時可在 Node 使用 graphql-request
。
若要使用 Microservice 架構,則會各自將 Vue 與 Node 包成 Docker Image,然後使用 Docker Compose 一次啟動 Vue 與 Node,此時 Node 會包在 Docker 內部網路,Vue 所需的 HTTP Service 與 Reverse Proxy 也能繼續由 Node 提供。
若要使用 Microservice 架構,則會各自將 Vue 與 Node 包成 Docker Image,然後使用 Docker Compose 一次啟動 Vue 與 Node,此時 Node 會包在 Docker 內部網路,Vue 需使用 Nginx 的 Reverse Proxy 才能連上 Node。