亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

webpack配置文件外置的兩種實現(xiàn)方式

 更新時間:2023年12月13日 16:12:47   作者:yazhiShaw  
webpack配置環(huán)境變量文件,是根據(jù)打包命令尋找對應(yīng)的環(huán)境變量文件,從而獲取接口地址,本文就來介紹一下webpack配置文件外置的兩種實現(xiàn)方式,感興趣的可以了解一下

前言

眾所周知,webpack配置環(huán)境變量文件,是根據(jù)打包命令尋找對應(yīng)的環(huán)境變量文件,從而獲取接口地址。所以觸發(fā)時機(jī)是在每次打包的時候,接口地址才會被打包進(jìn)去,無法自由修改。
本次要求一次打包后,修改接口地址的文件,刷新頁面可達(dá)到更新接口地址。

有兩種方法,一是安裝generate-asset-webpack-plugin插件,二是把接口地址暴露在window成為全局變量

方法(一) 安裝generate-asset-webpack-plugin插件

首先安裝插件

npm install generate-asset-webpack-plugin -S -D

在build文件夾下,新建一個文件generate-asset.config.js

const GenerateAssetPlugin = require('generate-asset-webpack-plugin');
const config = require('../config/app.config');

function createServerConfig(compilation) {
    return JSON.stringify(
        Object.assign({
            _hash: compilation.hash,
        },config)
    )
}
//生成app-config.json文件
module.exports = () => {
    return new GenerateAssetPlugin({
        filename: 'config/app-config.json',
        fn: (compilation, cb) => {
            cb(null, createServerConfig(compilation));
        }
    })
}

在config文件夾下,創(chuàng)建app.conifg.js

module.exports = {
  env: 'prod',
  baseUrl: "http://xxx.com"
}

這里就是常用的配置文件,在開發(fā)環(huán)境下,可以直接引入使用變量。
在正式環(huán)境下,還需要在webpack.base.conf.js文件夾下配置下。先引入:

const packageConfig = require('../package.json')
const generateAssetAppConfig = require('./generate-asset.config')

再加入plugins的配置

module.exports = {
  context: path.resolve(__dirname, '../'),
  entry: {
    app: './src/main.js'
  },
  output: {
    path: config.build.assetsRoot,
    filename: '[name].js',
    publicPath: process.env.NODE_ENV === 'production'
      ? config.build.assetsPublicPath
      : config.dev.assetsPublicPath
  },
  plugins: [
    generateAssetAppConfig(packageConfig)
  ],

在axios請求封裝文件,抽離封裝了一個https.js的配置文件
開發(fā)環(huán)境直接根據(jù)路徑獲取變量,正式環(huán)境從請求app-config.json獲得

import * as g from '../config/app.config'
import $ from 'jquery'

if (process.env.NODE_ENV === 'production') {//打包正式環(huán)境使用app-config.json
    $.ajax({
        url: 'config/app-config.json',
        async: false,
        type: 'get',
        dataType: "json",
        success: function (rs) {
            if (rs.baseUrl) {
                axios.defaults.baseURL = rs.baseUrl;
            }
        }
    });
} else {//開發(fā)環(huán)境就直接使用app.config.js
    axios.defaults.baseURL = g.baseUrl;   //配置接口地址
}

以上
使用npm run dev,就直接用本機(jī)的config/app.config.js文件
使用npm run build 就用在服務(wù)器上的dist/config/app-config.json文件

方法(二) 暴露在window成為全局變量

在config目錄下創(chuàng)建app.config.js

let baseURL = "http://xxx.com";

window.httpConfig = {
  baseURL,
};

打包正式環(huán)境時,把a(bǔ)pp.config.js拷貝到static目錄下
build/webpack.prod.conf.js修改如下:

	new CopyWebpackPlugin([
      {
        from: "./config/app.config.js",
        to: 'static',
      },
    ]),

然后在index.html中引入

 <script src="/static/app.config.js"></script>

在axios的配置文件中,配置接口地址

import * as g from '../config/app.config'

// 如果是正式環(huán)境打包,去配置文件獲取,如果是開發(fā)環(huán)境,去獲取本機(jī)的app.config文件
axios.defaults.baseURL =
  process.env.NODE_ENV === "production"
    ? window.httpConfig.baseURL
    : g.baseURL;

 到此這篇關(guān)于webpack配置文件外置的兩種實現(xiàn)方式的文章就介紹到這了,更多相關(guān)webpack配置文件外置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js LZ77算法的實現(xiàn)代碼

    js LZ77算法的實現(xiàn)代碼

    JS操作二進(jìn)制很麻煩,而且一直沒有一個好的無損壓縮工具來實現(xiàn)純文本的壓縮。
    2010-04-04
  • js浮動圖片的動態(tài)效果

    js浮動圖片的動態(tài)效果

    這篇文章介紹了幾種JS的動態(tài)效果實例,有需要的朋友可以參考一下
    2013-07-07
  • js當(dāng)前頁面登錄注冊框,固定div,底層陰影的實例代碼

    js當(dāng)前頁面登錄注冊框,固定div,底層陰影的實例代碼

    下面小編就為大家?guī)硪黄猨s當(dāng)前頁面登錄注冊框,固定div,底層陰影的實例代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • codemirror6實現(xiàn)自定義代碼提示效果實例

    codemirror6實現(xiàn)自定義代碼提示效果實例

    這篇文章主要給大家介紹了關(guān)于codemirror6實現(xiàn)自定義代碼提示效果的相關(guān)資料,CodeMirror是一個網(wǎng)絡(luò)代碼編輯器組件,它可以在網(wǎng)站中用于實現(xiàn)支持多種編輯功能的文本輸入字段,并具有豐富的編程接口以允許進(jìn)一步擴(kuò)展,需要的朋友可以參考下
    2023-08-08
  • JS異步函數(shù)隊列功能實例分析

    JS異步函數(shù)隊列功能實例分析

    這篇文章主要介紹了JS異步函數(shù)隊列功能,結(jié)合實例形式分析了異步函數(shù)隊列的應(yīng)用場景、實現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • js+CSS實現(xiàn)彈出居中背景半透明div層的方法

    js+CSS實現(xiàn)彈出居中背景半透明div層的方法

    這篇文章主要介紹了js+CSS實現(xiàn)彈出居中背景半透明div層的方法,涉及javascript操作彈出div層的操作技巧,非常具有實用價值,需要的朋友可以參考下
    2015-02-02
  • js判斷IE6/IE7/FF的代碼[XMLHttpRequest]

    js判斷IE6/IE7/FF的代碼[XMLHttpRequest]

    js下通過XMLHttpRequest判斷IE6/IE7/FF的代碼,需要的朋友可以參考下。
    2011-02-02
  • 一個加載js文件的小腳本

    一個加載js文件的小腳本

    一個加載js文件的小腳本...
    2007-06-06
  • Js利用正則表達(dá)式去除字符串的中括號

    Js利用正則表達(dá)式去除字符串的中括號

    這篇文章主要給大家介紹了關(guān)于Js利用正則表達(dá)式去除字符串的中括號的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • js實現(xiàn)圖片上傳并預(yù)覽功能

    js實現(xiàn)圖片上傳并預(yù)覽功能

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)圖片上傳并預(yù)覽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08

最新評論