vue-cli3抽離配置文件,動態修改打包后配置


  由於項目有外部部署需求,對不同的環境前端調用后台的地址不一樣,且不能提前預知必須到部署現場后才能確定后端地址,故需要將調用后端相關的配置抽離到文件中,打包后部署人員在方便現場修改。

思路如下:

  1.由於項目中vue初始化部分有很多網絡請求,所以必須在加載vue的內容之前引入配置,為解決異步請求問題直接在public/index.html的head中引入配置(vue在body后注入)。

  2.配置放在js文件中,js文件中將配置對象放到localStorage中。有方法是將配置對象賦值給window頂級對象,感覺這樣不安全,故采用放到localStorage的方式。

  3.在需要使用配置的地方,反序列化localStorage,取出其中的配置項使用。

 

操作方法:

 1.在public目錄下新建目錄config,config目錄下新建dynamicConfig.js文件,內容如下

let dynamicConfig = {
  server_url: "http://127.0.0.1"
  //自行加配置項
}
let jsonStr = JSON.stringify(dynamicConfig)
localStorage.dynamicConfig = jsonStr

 2.修改public下index.html,引入dynamicConfig.js。使用config相對路徑為了方便開發環境和生產環境都能調用到。

 <head></head>內增加如下一行

<script src="config/dynamicConfig.js"></script> <!-- 讀入抽離的配置 -->

 3.配置webpack,使用copy-webpack-plugin插件將js文件打包到dist/config目錄下。

 1)安裝插件

npm install -save copy-webpack-plugin

 2)在vue.config.js中配置

const CopyWebpackPlugin = require("copy-webpack-plugin") //引入插件

module.exports = {
  //...
  configureWebpack: {
    plugins: [
      new CopyWebpackPlugin([ //打包時執行拷貝
        {
          from: __dirname + "/public/config/dynamicConfig.js",
          to:   __dirname + "/dist/config/dynamicConfig.js"
        }
      ])
    ]
  }
}

 4.在js文件中讀取配置

let endpoint = "http://127.0.0.1:8080"
//開發環境使用js中定義的配置,生產環境使用config/dynamicConfig.js中配置
if(process.env.NODE_ENV === "developement"){
  endpoint = "XXX" //自定義
}else{
  if(localStorage.dynamicConfig){ //使用從dist/config/dynamicConfig.js中讀取的配置
    let config = JSON.parse(localStorage.dynamicConfig)

    if(config.server_url) endpoint = config.server_url
  }
}

 

  動態修改配置方法:修改dist/config/dynamicConfig.js中server_url對應的值,修改后瀏覽器可能會有緩存哦~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM