最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

webpack5之devServer的常用配置詳解

 更新時(shí)間:2022年12月22日 16:26:46   作者:想賺點(diǎn)零花錢  
這篇文章主要為大家介紹了webpack5之devServer的常用配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

devServer是為開發(fā)過(guò)程中, 開啟的一個(gè)本地服務(wù),在此總結(jié)一些常用的配置。供大家學(xué)習(xí),相互成長(zhǎng),相互進(jìn)步!

一. contentBase

devServercontentBase對(duì)于我們直接訪問打包后的資源其實(shí)并沒有太大的作用,但如果我們打包后的資源,又依賴于其他的一些資源,那么就需要指定從哪里來(lái)查找這個(gè)內(nèi)容,這時(shí)候就需要配置contentBase

舉例:

module.exports = {
  mode: "development",
  entry: "./src/index.js",
  output: {
    filename: "bundle.js",
    // 打包后的文件的輸出目錄
    path: path.resolve(__dirname, "./build"),
    publicPath: "/abc",
  },
  // 專門為webpack-dev-server
  // devServer為開發(fā)過(guò)程中, 開啟一個(gè)本地服務(wù)
  devServer: {
    publicPath: "/abc",
    }
  }

如上方圖所示設(shè)置"./why/abc.js",但是這樣webpack serve打包后瀏覽器是無(wú)法通過(guò)相對(duì)路徑去找到這個(gè)文件夾的

所以應(yīng)設(shè)置為如下:

module.exports = {
  mode: "development",
  entry: "./src/index.js",
  output: {
    filename: "bundle.js",
    // 打包后的文件的輸出目錄
    path: path.resolve(__dirname, "./build"),
    publicPath: "/abc",
  },
  // 專門為webpack-dev-server
  // devServer為開發(fā)過(guò)程中, 開啟一個(gè)本地服務(wù)
  devServer: {
**    contentBase: path.resolve(__dirname, "./why"),
**    watchContentBase: true, //實(shí)時(shí)監(jiān)聽contentBase文件變化
    publicPath: "/abc",
   }
  }

二. hotOnly、hot、host配置

1. hotOnly、hot

hot 啟用 webpack 的 熱模塊替換 特性:

module.exports = {
  //...
  devServer: {
    hot: true,
  },
};

啟用熱模塊替換功能,在構(gòu)建失敗時(shí)不刷新頁(yè)面作為回退,使用 hot: 'only' 或hotOnly:true

module.exports = {
  //...
  devServer: {
    hot: 'only', //hotOnly: true,
  },
};

2. host設(shè)置主機(jī)地址

默認(rèn)值是localhost; 如果希望其他地方也可以訪問,可以設(shè)置為 0.0.0.0;

提示: localhost 和 0.0.0.0 的區(qū)別:

localhost:本質(zhì)上是一個(gè)域名,通常情況下會(huì)被解析成127.0.0.1;

127.0.0.1:回環(huán)地址(Loop Back Address),表達(dá)的意思其實(shí)是我們主機(jī)自己發(fā)出去的包,直接被自己接收;

  • 正常的數(shù)據(jù)庫(kù)包經(jīng)常 應(yīng)用層 - 傳輸層 - 網(wǎng)絡(luò)層 - 數(shù)據(jù)鏈路層 - 物理層 ;
  • 而回環(huán)地址,是在網(wǎng)絡(luò)層直接就被獲取到了,是不會(huì)經(jīng)常數(shù)據(jù)鏈路層和物理層的;
  • 比如我們監(jiān)聽 127.0.0.1時(shí),在同一個(gè)網(wǎng)段下的主機(jī)中,通過(guò)ip地址是不能訪問的;

0.0.0.0:監(jiān)聽I(yíng)PV4上所有的地址,再根據(jù)端口找到不同的應(yīng)用程序;

  • 比如我們監(jiān)聽 0.0.0.0時(shí),在同一個(gè)網(wǎng)段下的主機(jī)中,通過(guò)ip地址是可以訪問的

三. port、open、compress

port:設(shè)置監(jiān)聽的端口,默認(rèn)情況下是8080,不能設(shè)置為null,可以設(shè)置自動(dòng)為auto

module.exports = {
  //...
  devServer: {
    port: 8080, 
  },
};

open:告訴 dev-server 在服務(wù)器已經(jīng)啟動(dòng)后打開瀏覽器。設(shè)置其為 true 以打開你的默認(rèn)瀏覽器。

module.exports = {
  //...
  devServer: {
    open: true,
    //在瀏覽器中打開指定頁(yè)面:open: ['/my-page']
    //提供要使用的瀏覽器名稱,而不是默認(rèn)名稱
  // open: {
      //   app: {
      //  name: 'google-chrome',
    //  },
   // },
  },
};

compress:是否為靜態(tài)文件開啟gzip compression

module.exports = {
  //...
  devServer: {
    compress: true,
  },
};

四. Proxy代理

Proxy是我們開發(fā)中非常常用的一個(gè)配置選項(xiàng),它的目的設(shè)置代理來(lái)解決跨域訪問的問題。

舉例:

我們的一個(gè)api請(qǐng)求是 http://localhost:8888,但是本地啟動(dòng)服務(wù)器的域名是 http://localhost:8000, 這個(gè)時(shí)候發(fā)送網(wǎng)絡(luò)請(qǐng)求就會(huì)出現(xiàn)跨域的問題。 所以將請(qǐng)求先發(fā)送到一個(gè)代理服務(wù)器,代理服務(wù)器和API服務(wù)器沒有跨域的問題,就可以解決我們的跨域問題了。

module.exports = {
  //...
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:8888',
         pathRewrite: {
          "^/api": ""
        },
        secure: false,
        changeOrigin: true,
      },
    },
  },
};

target:表示的是代理到的目標(biāo)地址,比如 /api會(huì)被代理到 http://localhost:8888/api

pathRewrite:默認(rèn)情況下,我們的 /api 也會(huì)被寫入到URL中,即:http://localhost:8888/api, 如果希望刪除,可以使用pathRewrite;

secure: 默認(rèn)情況下,將不接受在 HTTPS 上運(yùn)行且證書無(wú)效的后端服務(wù)器。 如果希望支持,可以設(shè)置為false;

changeOrigin:它表示是否更新代理后請(qǐng)求的headers中host地址,一般設(shè)置為true

五. historyApiFallback

historyApiFallback是開發(fā)中一個(gè)非常常見的屬性,它主要的作用是解決SPA頁(yè)面在路由跳轉(zhuǎn)之后,進(jìn)行頁(yè)面刷新 時(shí),返回404的錯(cuò)誤。

  • 配置 boolean值:默認(rèn)是false
module.exports = {
  devServer: {
  //如果設(shè)置為true,那么在刷新時(shí),返回404錯(cuò)誤時(shí),會(huì)自動(dòng)返回 index.html 的內(nèi)容; 
    historyApiFallback: true,
  },
};
  • 配置 object類型的值,設(shè)置rewrites屬性: 可以配置from來(lái)匹配路徑,決定要跳轉(zhuǎn)到哪一個(gè)頁(yè)面;
module.exports = {
  //...
  devServer: {
    historyApiFallback: {
      rewrites: [
        { from: /^/$/, to: '/views/landing.html' },
        { from: /^/subpage/, to: '/views/subpage.html' },
        { from: /./, to: '/views/404.html' },
      ],
    },
  },
};

devServer中實(shí)現(xiàn)historyApiFallback功能是通過(guò)connect-history-api-fallback庫(kù)的: For more options and information,查看 connect-history-api-fallback 文檔

以上就是webpack5之devServer的常用配置詳解的詳細(xì)內(nèi)容,更多關(guān)于webpack5 devServer配置的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文了解什么是TypeScript?

    一文了解什么是TypeScript?

    這篇文章主要介紹了什么是TypeScript,TypeScript是JavaScript的超集,它可以編譯成純JavaScript代碼,TypeScript可以運(yùn)行在瀏覽器環(huán)境、Node.js環(huán)境或者ECMAScript3或者更高的JavaScript的引擎中,下面我們就進(jìn)入文章一起學(xué)習(xí)TypeScript的詳細(xì)內(nèi)容吧
    2021-12-12
  • Web Worker線程解決方案electron踩坑記錄

    Web Worker線程解決方案electron踩坑記錄

    這篇文章主要為大家介紹了Web Worker線程解決方案electron踩坑記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • JavaScript?ES新特性塊級(jí)作用域

    JavaScript?ES新特性塊級(jí)作用域

    這篇文章主要介紹了JavaScript?ES新特性塊級(jí)作用域,所謂的塊級(jí)作用域,就是該變量只能在聲明時(shí)的代碼塊或者子代碼塊中使用,使JavaScript出現(xiàn)了塊級(jí)作用域,具體詳細(xì)內(nèi)容請(qǐng)參考下面文章內(nèi)容
    2021-12-12
  • JavaScript選擇器函數(shù)querySelector和querySelectorAll

    JavaScript選擇器函數(shù)querySelector和querySelectorAll

    這篇文章主要介紹了?JavaScript選擇器函數(shù)querySelector和querySelectorAll,下面文章圍繞querySelector和querySelectorAll的相關(guān)資料展開詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • WebAssembly增強(qiáng)前端應(yīng)用技巧詳解

    WebAssembly增強(qiáng)前端應(yīng)用技巧詳解

    這篇文章主要為大家介紹了WebAssembly增強(qiáng)前端應(yīng)用技巧示例詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • AngularJS 表達(dá)式詳細(xì)講解及實(shí)例代碼

    AngularJS 表達(dá)式詳細(xì)講解及實(shí)例代碼

    本文主要介紹AngularJS 表達(dá)式,這里對(duì)AngularJS 表達(dá)式詳細(xì)介紹和實(shí)例代碼,有需要的小伙伴可以參考下
    2016-07-07
  • 微信小程序 Audio API詳解及實(shí)例代碼

    微信小程序 Audio API詳解及實(shí)例代碼

    這篇文章主要介紹了 微信小程序 Audio API詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • JavaScript實(shí)現(xiàn)隊(duì)列結(jié)構(gòu)過(guò)程

    JavaScript實(shí)現(xiàn)隊(duì)列結(jié)構(gòu)過(guò)程

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)隊(duì)列結(jié)構(gòu)的過(guò)程,隊(duì)列即Queue,它是受限的線性表,先進(jìn)先出,受限之處在于它只允許在表的前端進(jìn)行刪除操作,下面我們一起進(jìn)入文章學(xué)習(xí)更加詳細(xì)內(nèi)容,需要的朋友也可以參考一下
    2021-12-12
  • JS遞歸遍歷查詢是否有權(quán)限示例詳解

    JS遞歸遍歷查詢是否有權(quán)限示例詳解

    這篇文章主要為大家介紹了JS遞歸遍歷查詢是否有權(quán)限示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • JavaScript?DOM操作之獲取元素方式全解析

    JavaScript?DOM操作之獲取元素方式全解析

    這篇文章主要為大家介紹了JavaScript全解析之DOM操作及獲取元素的方法全面解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評(píng)論

噶尔县| 临湘市| 黄冈市| 潮安县| 渝中区| 承德县| 洛扎县| 泽库县| 长武县| 酉阳| 海宁市| 富民县| 白玉县| 东兴市| 鹤岗市| 华池县| 邻水| 西乌珠穆沁旗| 武乡县| 安岳县| 乌兰县| 大冶市| 类乌齐县| 阜平县| 庆元县| 开江县| 张家港市| 贞丰县| 游戏| 白沙| 新疆| 西乡县| 交城县| 沛县| 溧阳市| 尤溪县| 绿春县| 丹巴县| 改则县| 鹤壁市| 盖州市|