今天延續上一篇繼續講下去~
2.process.env:環境變數
有些東西不適合直接寫死像是:
const password = "123456";
const apiKey = "abc123";
通常會放到環境變數,
例如 .env:
PORT=3000
DB_HOST=localhost
DB_PASSWORD=123456
程式則透過以下取得:
process.env.PORT
process.env.DB_HOST
process.env.DB_PASSWORD
概念就是:
.env / 系統環境變數
↓
process.env
↓
Node.js 程式
像是可以這樣設計:
開發環境
DB_HOST=localhost
正式環境
DB_HOST=production-db
程式碼不用改,只需要換環境設定,這樣設計起來也方便管理維護。
3.Node 單線程 + fs/promises
Node.js 執行 JavaScript 時,核心概念可以先理解成:JavaScript 主執行緒一次處理一件事情。
假設讀一個超大的檔案,如果使用同步版本:
const fs = require("fs");
const data = fs.readFileSync("./users.json", "utf8");
console.log(data);
可以想像成:
開始讀 users.json
↓
主程式:等……
↓
主程式:還在等……
↓
讀取完成
↓
繼續執行
這叫 Blocking(阻塞)。
如果是 Callback 版本,Node.js 可以改成:
const fs = require("fs");
fs.readFile("./users.json", "utf8", (err, data) => {
if (err) {
console.log(err);
return;
}
console.log(data);
});
console.log("繼續做其他事情");
這時候:
開始讀檔
↓
不用等
↓
繼續執行其他程式
↓
檔案讀好了
↓
callback 執行
這就是非同步(Asynchronous)。