有時候咱們在代碼裏須要根據環境變量來決定一些邏輯。常見的好比,在測試環境訪問的後端url跟正式環境是不同的。webpack
不依賴框架的話,應當是基於webpack的define-plugin實現。如文檔中所示的:git
new webpack.DefinePlugin({ PRODUCTION: JSON.stringify(true), VERSION: JSON.stringify('5fa3b9'), BROWSER_SUPPORTS_HTML5: true, TWO: '1+1', 'typeof window': JSON.stringify('object') });
回到dva。
dva核心是個基於redux封裝的數據流方案,也能夠當成一個輕量級框架。從框架的角度來說,它其實很輕很輕,幾乎沒怎麼管數據流以外的事情,只是簡單地集成了少量幾個庫造成一個框架。github
roadhog是個服務於框架的命令行工具,主要就是提供dev、build 和 test 等命令,屏蔽了webpack的複雜配置,提供了本身的相對簡單的配置能力。web
顯然,這裏的變量配置應當由roadhog來處理。不要像我當初同樣以爲dva是個框架就應該有相關功能_(:зゝ∠)_redux
善用搜索引擎,從roadhog文檔 - define和相關討論容易找到方案。roadhog提供了define
選項作DefinePlugin
的事情。
具體使用:編輯.webpacrc.js
後端
export default { define: { 'process.env': {}, 'process.env.NODE_ENV': process.env.NODE_ENV, 'process.env.API_ENV': process.env.API_ENV, }, }