關於環境變數
我在做前端的這段時間,遇過不少 Backend 和 SRE 對於一件事不太熟悉:前端在打包完成之後,環境變數其實就已經被固定,不會再改變。
因此,有時候會看到一些設計,要求前端在執行時去「動態介接環境變數」。
這種情況我並不是不能理解,但實務上往往需要反覆溝通,甚至要把整個機制從頭講清楚,才能釐清問題。
從前端的運作原理來看,環境變數通常是在 build 階段被注入。一旦打包完成,這些值就會被寫死在產出的檔案中。
也就是說,前端應用不像後端服務那樣,可以透過重啟來重新載入或切換環境變數——總不可能每次調整設定,就重新花幾十分鐘打包整個前端專案。
當然,並不是完全沒有解法。
其中一種做法是提供一份在 runtime 載入的設定檔(例如在 application 初始化前先抓取 config),再將設定注入到應用中。
但這種方式也會帶來額外的成本與風險,例如:
- 初始化流程變複雜
- 需要額外的設定管理機制
- 若處理不當,可能會暴露敏感資訊
先不討論框架或是否採用 SSR,不同技術棧會有各自的實作方式,但整體來說,這些都是前端在設計上既有且需要考量的限制。