国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Webpack多城市部署前端差異化配置實現

netmou / 2020人閱讀

摘要:公司的項目需要多城市部署,不同城市接口地址相關服務地址都會不同同時,還需要實現控制不同城市部分功能開啟關閉。所以,我們將不同城市差異化配置多帶帶使用一個配置文件整合,代碼中再通過讀取配置文件來實現上述需求。

公司的項目需要多城市部署,不同城市接口地址、相關服務地址都會不同;同時,還需要實現控制不同城市部分功能開啟/關閉。這樣一來,每次不同城市發包需要修改的地方就會比較多且分散,這樣就很容易出現疏漏。
所以,我們將不同城市差異化配置多帶帶使用一個配置文件整合,代碼中再通過讀取配置文件來實現上述需求。
項目使用vue-cli@2.9.6創建;node版本:v8.11.1;。我們一開始執行不同的腳本命令,配置不同的環境參數,來實現不同城市的區分。如下:

通過運行不同命令讀取不同配置 第一步,在package.jsonscripts添加腳本設置環境參數
...
"script": {
    ...
    "dev:changsha": "webpack-dev-server --inline --progress --env=changsha --config build/webpack.dev.conf.js",
    "build:changsha": "node build/build.js --env=changsha"
}
...
第二步,使用yargsbuild.jswebpack.dev.conf.js讀取環境參數并添加到process.env
// build/build.js
...
const argv = require("yargs").argv;
process.env.cityName = argv.env
...
// build/webpack.dev.conf.js
...
const argv = require("yargs").argv;
process.env.cityName = argv.env
...

注意: 這里因為build腳本是使用的node命令,而node命令是可自行添加任意參數的,即可以使用任意變量名做為環境參數;但webpack-dev-server命令卻只支持使用--env選項配置環境參數。這里build也使用了env變量來設置環境參數。但是你也可以這樣添加build腳本:

"build:changsha": "node build/build.js --cityName=changsha"

然后在build.js使用相應的變量讀?。?/p>

const argv = require("yargs").argv;
process.env.cityName = argv.cityName
...
第三步,通過webpack讀取不同城市的配置文件

./config文件夾下添加changsha,chengdu兩個文件夾,分別在兩個文件夾中添加dev.conf.js、prod.conf.js。例如:

// ./config/changsha/dev.conf.js
module.exports = {
    apisIp:""http://192.200.115.1:8080"",
    videoIp:""http://192.200.115.2:8080"",
    openFun1: true,
    openFun2: true
    ...
}
// ./config/changsha/prod.conf.js
module.exports = {
    apisIp:""http://192.200.141.1:8080"",
    videoIp:""http://192.200.141.2:8080"",
    openFun1: true,
    openFun2: false
    ...
}

然后./config下的prod.env.jsdev.env.js分別讀取prod.conf.jsdev.conf.js配置

// 修改./config/dev.env.js為
"use strict"
const prodEnv = require("./prod.env")
const cityConf = require(`./${process.env.cityName||"chengdu"}/dev.conf.js`)
module.exports = Object.assign(prodEnv, {NODE_ENV: ""development""}, cityConf)
// 修改./config/dev.env.js為
"use strict"
const cityConf = require(`./${process.env.cityName||"chengdu"}/prod.conf.js`)
module.exports = {
  NODE_ENV: ""production"",
  ...cityConf
}

注意:

prod.env.js、dev.env.js都默認加載chengdu文件下相應的配置;

之所以在prod.env.js、dev.env.js中加載相應配置就會生效,是因為在webpack.prod.conf.jswebpack.dev.conf.js兩個文件中分別讀取前兩個文件;webpack.dev.conf.js就是開發環境的入口文件;打包的入口文件build.js讀取了webpack.prod.conf.js

webpack.dev.conf.jswebpack.prod.conf.js都是使用DefinePlugin插件將環境配置寫入process.dev的。所以,你也可以使用其它變量名保存配置;同時,你也可以不通過prod.env.js、dev.env.js讀取配置,可以直接在webpack.dev.conf.js、webpack.prod.conf.js中讀取;

Node.js有一個process全局變量,webpack也會生成一個process,這兩個只是名稱相同,但并不是同一個對象;前一個process只能webpack讀取,我們在具體的前端代碼中是無法讀取的;后一個為webpack供給前端代碼讀取的全局變量,打包后webpack會將所有調用prcess的代碼直接替換為具體的值;

最后,在具體前端代碼中讀取使用
// 例如,在./src/components/HelloWorld.vue中,我們可以這樣使用:



...
總結

最后,總結梳理一下思路,大概是以下幾步:

通過命令行參數寫入環境參數;

將環境參數保存全node全局變量process的env對象上;

webpack根據環境參數讀取相應配置并寫入一個全局變量供代碼讀取;

具體代碼中,通過讀取上一步定義的全局變量,實現相關功能;

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/102723.html

相關文章

  • 庫&插件&框架&工具

    摘要:一些有用的一些有用的,包括轉換小箭頭三角形媒體查詢等中文指南是當下最熱門的前端資源模塊化管理和打包工具。 nodejs 入門 nodejs 入門教程,大家可以在 github 上提交錯誤 2016 年最好用的表單驗證庫 SMValidator.js 前端表單驗證工具分享 淺談前端線上部署與運維 說到前端部署,可能大多數前端工程師在工作中都是使用的公司現成的部署系統,與SRE對接、一起完...

    Codeing_ls 評論0 收藏0
  • 庫&插件&框架&工具

    摘要:一些有用的一些有用的,包括轉換小箭頭三角形媒體查詢等中文指南是當下最熱門的前端資源模塊化管理和打包工具。 nodejs 入門 nodejs 入門教程,大家可以在 github 上提交錯誤 2016 年最好用的表單驗證庫 SMValidator.js 前端表單驗證工具分享 淺談前端線上部署與運維 說到前端部署,可能大多數前端工程師在工作中都是使用的公司現成的部署系統,與SRE對接、一起完...

    xiaowugui666 評論0 收藏0
  • 新鮮出爐的8月前端面試題

    摘要:前言最近參加了幾場面試,積累了一些高頻面試題,我把面試題分為兩類,一種是基礎試題主要考察前端技基礎是否扎實,是否能夠將前端知識體系串聯。 前言 最近參加了幾場面試,積累了一些高頻面試題,我把面試題分為兩類,一種是基礎試題: 主要考察前端技基礎是否扎實,是否能夠將前端知識體系串聯。一種是開放式問題: 考察業務積累,是否有自己的思考,思考問題的方式,這類問題沒有標準答案。 基礎題 題目的答...

    qingshanli1988 評論0 收藏0
  • Nginx

    摘要:此外,其也能夠提供強大的反向代理功能。是由為俄羅斯訪問量第二的站點開發的,第一個公開版本發布于年月日。 keepalived+nginx 實現高可用雙機熱備 + 負載均衡架構 1 準備4個ubuntu16.04虛擬機(啟用網卡二并使用橋接模式):A服務器:192.168.0.103 主B服務器:192.168.0.104 主(備) 前端工程師學習 Nginx ...

    syoya 評論0 收藏0

發表評論

0條評論

netmou

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<