日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

深入了解Vite:依賴預構建原理

來源: 責編: 時間:2024-07-01 08:33:39 214觀看
導讀前言前面我們有提到Vite在開發階段,提倡的是一個no-bundle的理念,不必與webpack那樣需要先將整個項目進行打包構建。但是no-bundle的理念只適合源代碼部分(我們自己寫的代碼),vite會將項目中的所有模塊分為依賴與源碼兩部

前言

前面我們有提到Vite在開發階段,提倡的是一個no-bundle的理念,不必與webpack那樣需要先將整個項目進行打包構建。但是no-bundle的理念只適合源代碼部分(我們自己寫的代碼),vite會將項目中的所有模塊分為依賴與源碼兩部分。qhQ28資訊網——每日最新資訊28at.com

依賴:指的是一些不會變動的一些模塊,如:node_modules中的第三方依賴,這部分代碼vite會在啟動本地服務之前使用esbuild進行預構建。esbuild 使用 Go 編寫,比使用 JavaScript 編寫的打包器預構建依賴快 10-100 倍。qhQ28資訊網——每日最新資訊28at.com

源碼:指的是我們自己開發時寫的那部分代碼,這部分代碼可能會經常變動,并且一般不會同時加載所有源代碼。qhQ28資訊網——每日最新資訊28at.com

所以總結來說:no-bundle是針對源碼的,而預構建是針對第三方依賴的qhQ28資訊網——每日最新資訊28at.com

使用預構建的原因

主要有以下兩點:qhQ28資訊網——每日最新資訊28at.com

  • commonJS 與 UMD兼容:因為Vite在開發階段主要是依賴瀏覽器原生ES模塊化規范,所以無論是我們的源代碼還是第三方依賴都得符合ESM的規范,但是目前并不是所有第三方依賴都有ESM的版本,所以需要對第三方依賴進行預編譯,將它們轉換成EMS規范的產物。

比如React,它就沒有ESM的版本,所以在使用Vite時需要預構建qhQ28資訊網——每日最新資訊28at.com

圖片圖片qhQ28資訊網——每日最新資訊28at.com

  • 性能:為了提高后續頁面的加載性能,Vite將那些具有許多內部模塊的 ESM 依賴項轉換為單個模塊。

比如常用的loads-esqhQ28資訊網——每日最新資訊28at.com

我們引入lodash-es工具包中的debounce方法,此時它理想狀態應該是只發出一個請求qhQ28資訊網——每日最新資訊28at.com

import  { debounce }  from 'lodash-es'

事實也是這樣:qhQ28資訊網——每日最新資訊28at.com

圖片圖片qhQ28資訊網——每日最新資訊28at.com

但這是預構建的功勞,如果我們對lodash-es關閉預構建呢?qhQ28資訊網——每日最新資訊28at.com

vite配置文件加上如下代碼,再來試試:qhQ28資訊網——每日最新資訊28at.com

// vite.config.jsoptimizeDeps: {    exclude: ['lodash-es']  }

圖片圖片qhQ28資訊網——每日最新資訊28at.com

可以看到,此時發起了600多個請求,這是因為lodash-es 有超過 600 個內置模塊!qhQ28資訊網——每日最新資訊28at.com

vite通過將 lodash-es 預構建成單個模塊,只需要發起一個HTTP請求!可以很大程度地提高加載性能qhQ28資訊網——每日最新資訊28at.com

由于Vite的預構建是基于性能優異的Esbuild來完成的,所以并不會造成明顯的打包性能問題qhQ28資訊網——每日最新資訊28at.com

開啟預構建

默認配置

一般來說,Vite幫我們默認開啟了預構建qhQ28資訊網——每日最新資訊28at.com

圖片圖片qhQ28資訊網——每日最新資訊28at.com

預構建產物會存放在:node_modules/.vite/depsqhQ28資訊網——每日最新資訊28at.com

圖片圖片qhQ28資訊網——每日最新資訊28at.com

里面會有一個_metadata.json的文件,這里保存著已經預構建過的依賴信息qhQ28資訊網——每日最新資訊28at.com

對于預構建產物的請求,Vite會設置為強緩存,有效時間為1年,對于有效期內的請求,會直接使用緩存內容qhQ28資訊網——每日最新資訊28at.com

圖片圖片qhQ28資訊網——每日最新資訊28at.com

如果只有HTTP強緩存肯定也不行,如果用戶更新了依賴版本,在緩存過期之前,瀏覽器拿到的一直是舊版本的內容。qhQ28資訊網——每日最新資訊28at.com

所以Vite對本地文件也設置了緩存判斷,如果下面幾個地方任意一個地方有變動,Vite將會對依賴進行重新預構建:qhQ28資訊網——每日最新資訊28at.com

  • 項目依賴dependencies變更

圖片圖片qhQ28資訊網——每日最新資訊28at.com

  • 各種包管理器的lock文件變更

圖片圖片qhQ28資訊網——每日最新資訊28at.com

  • optimizeDeps配置內容變更

圖片圖片qhQ28資訊網——每日最新資訊28at.com

自定義配置

entries

默認情況下,Vite會抓取項目中的index.html來檢測需要預構建的依賴qhQ28資訊網——每日最新資訊28at.com

optimizeDeps: {  entries: ['index.html']}

如果指定了 build.rollupOptions.input,Vite 將轉而去抓取這些入口點。qhQ28資訊網——每日最新資訊28at.com

exclude

排除需要預構建的依賴項qhQ28資訊網——每日最新資訊28at.com

optimizeDeps: {  exclude: ['lodash-es']}

include

默認情況下,不在 node_modules 中的依賴不會被預構建。使用此選項可強制選擇預構建的依賴項。qhQ28資訊網——每日最新資訊28at.com

optimizeDeps: {  include: ['lodash-es']}

預構建流程

還是從源碼入手,在啟動服務的過程中會執行一個initDepsOptimizer表示初始化依賴優化qhQ28資訊網——每日最新資訊28at.com

圖片圖片qhQ28資訊網——每日最新資訊28at.com

接著找到定義initDepsOptimizer方法的地方qhQ28資訊網——每日最新資訊28at.com

圖片圖片qhQ28資訊網——每日最新資訊28at.com

在這里會執行createDepsOptimizer方法,再接著找到定義createDepsOptimizer的地方qhQ28資訊網——每日最新資訊28at.com

圖片圖片qhQ28資訊網——每日最新資訊28at.com

這里首先會去執行loadCachedDepOptimizationMetadata用于獲取本地緩存中的metadata數據qhQ28資訊網——每日最新資訊28at.com

圖片圖片qhQ28資訊網——每日最新資訊28at.com

該函數會在獲取到_metadata.json文件內容之后去對比lock文件hash以及配置文件optimizeDeps內容,如果一樣說明預構建緩存沒有任何改變,無需重新預構建,直接使用上次預構建緩存即可。qhQ28資訊網——每日最新資訊28at.com

如果沒有緩存時則需要進行依賴掃描:qhQ28資訊網——每日最新資訊28at.com

圖片圖片qhQ28資訊網——每日最新資訊28at.com

這里主要是會調用scanImport方法,從名字也能看出該方法應該是通過掃描項目中的import語句來得到需要預編譯的依賴qhQ28資訊網——每日最新資訊28at.com

圖片圖片qhQ28資訊網——每日最新資訊28at.com

最終會返回一個prepareEsbuildScanner方法:qhQ28資訊網——每日最新資訊28at.com

圖片圖片qhQ28資訊網——每日最新資訊28at.com

最后該方法中會使用esbuild對掃描出來的依賴項進行預編譯。qhQ28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-97753-0.html深入了解Vite:依賴預構建原理

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: ASP.NET Core在Web開發中的應用與實踐

下一篇: CSS 將會推出 if() 語句,一次大膽的嘗試!

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产女同一区二区 | 99re视频这里只有精品| 亚洲黄色av一区| 99精品视频一区| 亚洲综合精品| 久久久久国色av免费看影院| 欧美 日韩 国产一区二区在线视频| 久久久一二三| 欧美日韩国产在线| 国产日韩精品视频一区二区三区| 精品999久久久| 日韩午夜激情| 欧美一区二区视频免费观看| 另类av一区二区| 欧美日韩在线直播| 狠狠色丁香婷婷综合| 亚洲免费观看在线视频| 性欧美xxxx视频在线观看| 免费欧美视频| 国产精品美女黄网| 亚洲国语精品自产拍在线观看| 亚洲一区二区少妇| 免费成人黄色片| 国产女人aaa级久久久级| 最新国产精品拍自在线播放| 午夜一区二区三视频在线观看| 欧美成人国产| 国产亚洲制服色| 一本色道久久综合亚洲二区三区| 久久精品欧洲| 国产精品高清在线观看| 亚洲电影成人| 欧美中文字幕视频| 欧美日韩在线观看视频| 在线不卡中文字幕| 亚洲欧美中日韩| 欧美日韩久久精品| 亚洲国产精品久久91精品| 性欧美暴力猛交69hd| 欧美日韩精品在线观看| 在线观看国产精品淫| 午夜一区二区三区不卡视频| 欧美激情精品久久久| 韩国av一区二区三区在线观看| 亚洲一区二区在线播放| 欧美福利一区二区| 尤物yw午夜国产精品视频| 欧美亚洲一区二区在线| 欧美视频日韩| 日韩午夜高潮| 欧美国产日韩视频| 亚洲大胆美女视频| 久久精品人人做人人爽电影蜜月| 国产精品久久久久久久久久尿 | 亚洲欧美日韩中文播放| 欧美久久久久久久久久| 亚洲大胆在线| 久久精品国产综合精品| 国产精品主播| 亚洲嫩草精品久久| 欧美性片在线观看| 日韩视频免费观看高清完整版| 蜜桃久久精品一区二区| 禁断一区二区三区在线| 久久国内精品自在自线400部| 国产精品美女999| 亚洲午夜国产成人av电影男同| 欧美日韩mv| 日韩视频一区| 欧美日韩国产麻豆| 99国产精品| 欧美三级黄美女| 一区二区三区四区蜜桃| 欧美日韩在线一区二区三区| 99国产一区| 欧美日韩久久不卡| 一区二区三区四区蜜桃| 欧美三级在线播放| 亚洲一区二区三区色| 国产精品久久久久影院亚瑟| 亚洲婷婷在线| 国产精品九九| 午夜在线播放视频欧美| 国产一区二区高清视频| 久久国产夜色精品鲁鲁99| 国产一区二区三区电影在线观看| 欧美一区二区精品| 国产一区二区三区在线观看免费视频| 香港久久久电影| 国产亚洲精品自拍| 久久久99爱| 在线免费观看日本一区| 免费欧美日韩| 亚洲卡通欧美制服中文| 欧美日韩一区二区三区在线| 亚洲午夜精品网| 国产美女诱惑一区二区| 欧美主播一区二区三区美女 久久精品人 | 欧美日韩精品一区二区| 亚洲少妇自拍| 国产女人aaa级久久久级| 久久九九久精品国产免费直播| 国一区二区在线观看| 蜜桃av综合| 9i看片成人免费高清| 国产精品久久久久av免费| 欧美一区二粉嫩精品国产一线天| 国产一区欧美日韩| 欧美**字幕| 在线亚洲+欧美+日本专区| 国产欧美二区| 噜噜噜91成人网| 一区二区毛片| 国产性猛交xxxx免费看久久| 久久躁日日躁aaaaxxxx| 99视频+国产日韩欧美| 国产精品一区一区| 免费h精品视频在线播放| 一区二区三区产品免费精品久久75| 国产精品嫩草久久久久| 久久中文字幕一区二区三区| 日韩一区二区高清| 国产欧美一区二区精品性色| 麻豆成人在线观看| 亚洲视频在线看| 精品二区久久| 欧美日韩在线看| 久久精品国产一区二区三区免费看 | 欧美福利视频一区| 亚洲欧美日韩国产成人精品影院 | 香蕉尹人综合在线观看| 亚洲国产高清一区| 国产精品久久福利| 美女精品在线观看| 亚洲永久免费av| 亚洲高清在线观看一区| 国产精品二区影院| 狼人天天伊人久久| 亚洲综合另类| 亚洲欧洲日本在线| 国产日韩精品视频一区| 欧美精品电影| 久久亚洲精品一区| 亚洲欧美国产精品va在线观看 | 亚洲一区影音先锋| 91久久久久久久久| 国产欧美日韩在线视频| 欧美精品久久久久久久| 久久国产精品99久久久久久老狼| 亚洲第一福利社区| 国产麻豆9l精品三级站| 欧美久久久久久| 久久亚洲二区| 欧美一级视频一区二区| 一本到高清视频免费精品| 在线看不卡av| 国产农村妇女精品一区二区| 欧美激情黄色片| 久久另类ts人妖一区二区| 亚洲综合视频一区| 日韩午夜在线电影| 亚洲高清自拍| 国内精品久久久久伊人av| 国产精品久久激情| 欧美日韩大片| 免费一区二区三区| 久久久99久久精品女同性| 亚洲午夜精品一区二区三区他趣| 亚洲国语精品自产拍在线观看| 国产视频一区二区在线观看 | 亚洲精品国产精品国产自| 黑人极品videos精品欧美裸| 国产精品嫩草影院av蜜臀| 欧美精品电影| 美女诱惑一区| 久久久夜夜夜| 久久狠狠一本精品综合网| 亚洲欧美日韩精品在线| 在线亚洲精品福利网址导航| 亚洲人成77777在线观看网| 激情亚洲网站| 国内精品久久久| 国产欧美精品一区aⅴ影院| 欧美午夜精品久久久久久久| 欧美黄色影院| 欧美xart系列高清| 老司机aⅴ在线精品导航| 久久久久久久久蜜桃| 欧美专区18| 久久本道综合色狠狠五月| 性欧美暴力猛交69hd| 欧美亚洲一区二区三区| 亚洲欧美日韩高清| 亚洲女性裸体视频| 亚洲在线视频免费观看| 亚洲视频在线一区| 亚洲视频专区在线| 亚洲一级黄色av| 亚洲中字在线| 性欧美超级视频| 久久久久久亚洲精品不卡4k岛国| 久久成人免费电影| 久久国产精品久久久| 久久久精品久久久久|