成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Webpack原理與實戰之如何使用DevServer提升你的開發效率?

開發 前端
我們知道在開發中需要先將源代碼進行打包后,再進行運行而后在瀏覽器打開,每次修改都要遵循這個步驟。那么,有沒有什么方法可以省略這么多的繁瑣步驟呢?

 [[441416]]

寫在前面

我們知道在開發中需要先將源代碼進行打包后,再進行運行而后在瀏覽器打開,每次修改都要遵循這個步驟。那么,有沒有什么方法可以省略這么多的繁瑣步驟呢?有,但是必須遵守下面的要求:

  • 必須能夠使用HTTP服務運行而不是以文件形式預覽。這樣可以更加接近生產環境狀態,而且項目中可能需要使用ajax類的api,以文件訪問會產生諸多問題
  • 在我們修改代碼后,webpack能夠實現自動完成構建,然后瀏覽器可以即時顯示最新的運行結果,這樣可以減少開發過程中額外的重復操作,同時可以讓我們更加專注,效率得到提升
  • 需要能夠提供Source Map支持。這樣,運行過程中出現的錯誤可以快速定位到源代碼中的位置,而不是打包后結果中的位置,更便于我們快速定位錯誤、調試應用

Webpack自動編譯

關于webpack自動編譯可以完全符合以上要求,具體的用法是:啟動webpack時,添加一個--watch的cli參數,webpack就會以監視模式啟動運行,打包完成后cli不會立即退出,而是等待文件變化再次工作,知道我們手動結束它或出現不可控的異常。

  1. # 我們可以先npm 全局安裝browser-sync模塊,然后使用這個模塊 
  2. $ npm i browser-sync -g 
  3. $ browser-sync dist --watch 
  4.  
  5. #或者使用npx直接使用遠端模塊 
  6. $ npx browser-sync dist --watch 

我們看到運行終端后的顯示:

  1. npx browser-sync dist --watch 
  2. [Browsersync] Access URLs: 
  3.  --------------------------------------- 
  4.        Local: http://localhost:3000 
  5.     External: http://192.168.99.161:3000 
  6.  --------------------------------------- 
  7.           UI: http://localhost:3001 
  8.  UI External: http://localhost:3001 

我們看到這種webpack+browser-sync模式雖然實現了我們的需求,但是方法有很多的弊端:

  • 操作繁瑣,我們需要同時使用兩個工具,需要了解內容更多、學習成本提高
  • 效率低下,因為整個過程中webpack會將文件寫入磁盤,browser-sync再進行讀取,過程會設計到大量磁盤讀寫操作,導效率低下

對此,webpack官方推出了開發工具,能夠提供一個開發服務器,并且自動編譯和自動刷新瀏覽器等一系列對開發友好的功能全部集成在一起。推出初衷就是為了提高開發者日常的開發效率,使用這個工具就可以解決前面的問題。

  1. $ npm i webpack-dev-server -D 
  2. $ npx webpack-dev-server 

運行webpack-dev-server命令時,wbepack內部會自動啟動http-server服務,為我們生成的靜態文件提供server服務,并且為我們生成的文件提供打包服務。其工作流程大概是:

  • 執行webpack-dev-server命令
  • 啟動http服務
  • webpack構建
  • 監視文件變化,有變化則進入新一輪webpack構建

要注意的是,webpack-dev-server為了提升打包效率,并未將文件寫入磁盤中,而是將文件暫存到內存中,再通過http-server進行獲取文件,減少了不必要的磁盤讀寫操作。

靜態資源訪問

webpack-dev-server會默認將構建結果和輸出文件全部作為開發服務器的資源文件,只要通過webpack打包能夠輸出的文件就可以直接被訪問使用。

在實際使用webpack時,一般會將copy-webpack-plugin這種插件留在上線前的那次打包使用,而在開發過程中一般不會使用。因為在開發過程中,我們會頻繁執行打包任務,假設此目錄文件需要拷貝的文件比較多、比較大,如果我們每次構建都需要執行插件的話,那么打包的開銷就會比較大,構建速度會下降。

在實際生產環境中能夠直接訪問的api,回到開發環境后哦,再次訪問這些api就會產生跨域請求問題。當然我們可以使用cors,但是必須后端支持。

為了解決這種開發階段跨域請求問題最好的方法,就是在開發服務器中配置一個后端api的代理服務,把后端接口服務代理到本地的開發服務地址。我們可以添加pathRewrite屬性來實現代理路徑重寫,重寫規則就是把路徑開頭的/api替換為空。這樣當我們請求代理接口http://localhost:9000/api/users就會代理請求目標接口http://api.github.com/users。

  1. devServer:{ 
  2.   proxy:{ 
  3.     "/api":{ 
  4.       target:"http://api.github.com"
  5.       pathRewrite:{ 
  6.         "^/api":""//替換掉代理地址中的/api 
  7.       } 
  8.     } 
  9.   }, 
  10.   contentBase:path.join(__dirname,"dist"), 
  11.   compress:true
  12.   port:9000 

參考文章

《webpack原理與實踐》

《webpack中文文檔》

寫在最后

本文主要說明了如何配置DevServer提升我們的本地開發效率,其實就是使用了webpack的代理模式,在請求目標接口時通過本地代理請求,能夠避免開發階段的跨域問題。

 

責任編輯:武曉燕 來源: 前端萬有引力
相關推薦

2021-12-24 08:01:44

Webpack優化打包

2021-04-18 18:58:16

JRebelJVM插件

2021-12-16 22:02:28

webpack原理模塊化

2021-12-22 22:44:49

Webpack熱替換模塊

2021-06-09 06:05:40

WebpackdevServer 前端開發

2021-12-20 00:03:38

Webpack運行機制

2021-09-27 08:16:38

Webpack 前端Cache

2021-07-04 22:22:23

Webpack5前端工具

2021-12-15 23:42:56

Webpack原理實踐

2022-07-18 08:08:16

Go?語言技巧

2025-01-10 11:28:58

2009-06-05 15:04:36

Eclipse代碼模版

2021-12-17 00:02:28

Webpack資源加載

2015-07-28 10:42:34

DevOpsIT效率

2010-08-12 17:56:58

ibmdwRational

2018-03-06 17:24:57

2021-12-25 22:29:04

WebpackRollup 前端

2024-02-27 11:17:38

前端自動化測試開發

2020-03-12 09:19:55

前端開發Chrome

2020-08-09 18:06:57

Linux系統工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区三区四 | 亚洲精品久久久一区二区三区 | 一区视频在线免费观看 | 日韩一区二区三区在线视频 | 国产亚洲精品91 | 激情国产 | 高清欧美性猛交xxxx黑人猛交 | 成人视屏在线观看 | 中文字幕av亚洲精品一部二部 | 国产精品成人一区 | 亚洲欧美一区二区三区在线 | 久久亚洲国产精品 | 99爱免费 | 国产精品二区三区 | 精品久久一区 | 成人性视频在线播放 | 国产成人精品免高潮在线观看 | 国产亚洲精品久久久久动 | 精品欧美一区二区三区久久久 | 婷婷成人在线 | 91精品国产乱码麻豆白嫩 | 四虎影音| 国产午夜精品一区二区三区在线观看 | 亚洲国产黄色av | 精品久| 在线观看www| 国产午夜视频 | 久久久久久a | 国产露脸国语对白在线 | 精品av| 亚洲一区二区三区免费视频 | 久久久成人动漫 | 精品九九九 | 国产成人高清视频 | 狠狠干影院 | 国产精品色 | 久久久高清 | 羞羞视频在线观看网站 | 欧美成人精品一区二区三区 | 久久伊人亚洲 | 中文字幕1区2区3区 日韩在线视频免费观看 |