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

當(dāng)前位置:首頁(yè) > 科技  > 軟件

Vite 為什么快呢?快在哪?說(shuō)一下我自己的理解吧

來(lái)源: 責(zé)編: 時(shí)間:2024-03-25 17:36:49 214觀看
導(dǎo)讀由于這幾個(gè)月使用了Vue3 + TS + Vite進(jìn)行開發(fā),并且是真的被Vite強(qiáng)力吸粉了!!!Vite最大的優(yōu)點(diǎn)就是:快!!!非常快!!!說(shuō)實(shí)話,使用Vite開發(fā)之后,我都有點(diǎn)不想回到以前Webpack的項(xiàng)目開發(fā)了,因?yàn)橹暗捻?xiàng)目啟動(dòng)項(xiàng)目需要30s以上,修改代碼更新

由于這幾個(gè)月使用了Vue3 + TS + Vite進(jìn)行開發(fā),并且是真的被Vite強(qiáng)力吸粉了!!!Vite最大的優(yōu)點(diǎn)就是:快!!!非常快!!!XcS28資訊網(wǎng)——每日最新資訊28at.com

說(shuō)實(shí)話,使用Vite開發(fā)之后,我都有點(diǎn)不想回到以前Webpack的項(xiàng)目開發(fā)了,因?yàn)橹暗捻?xiàng)目啟動(dòng)項(xiàng)目需要30s以上,修改代碼更新也需要2s以上,但是現(xiàn)在使用Vite,差不多啟動(dòng)項(xiàng)目只需要1s,而修改代碼更新也是超級(jí)快!!!XcS28資訊網(wǎng)——每日最新資訊28at.com

那到底是為什么Vite可以做到這么快呢?官方給的解釋,真的很官方。。所以今天我想用比較通俗易懂的話來(lái)講講,希望大家能看一遍就懂。XcS28資訊網(wǎng)——每日最新資訊28at.com

XcS28資訊網(wǎng)——每日最新資訊28at.com

問題現(xiàn)狀

1.ES模塊化支持的問題

咱們都知道,以前的瀏覽器是不支持ES module的,比如:XcS28資訊網(wǎng)——每日最新資訊28at.com

// index.jsimport { add } from './add.js'import { sub } from './sub.js'console.log(add(1, 2))console.log(sub(1, 2))// add.jsexport const add = (a, b) => a + b // sub.jsexport const sub = (a, b) => a - b 

你覺得這樣的一段代碼,放到瀏覽器能直接運(yùn)行嗎?答案是不行的哦。那怎么解決呢?這時(shí)候打包工具出場(chǎng)了,他將index.js、add.js、sub.js這三個(gè)文件打包在一個(gè)bundle.js文件里,然后在項(xiàng)目index.html中直接引入bundle.js,從而達(dá)到代碼效果。一些打包工具,都是這么做的,例如webpack、Rollup、ParcelXcS28資訊網(wǎng)——每日最新資訊28at.com

2.項(xiàng)目啟動(dòng)與代碼更新的問題

這個(gè)不用說(shuō),大家都懂:XcS28資訊網(wǎng)——每日最新資訊28at.com

  • 項(xiàng)目啟動(dòng):隨著項(xiàng)目越來(lái)越大,啟動(dòng)個(gè)項(xiàng)目可能要幾分鐘
  • 代碼更新:隨著項(xiàng)目越來(lái)越大,修改一小段代碼,保存后都要等幾秒才更新

解決問題

1.解決啟動(dòng)項(xiàng)目緩慢

Vite在打包的時(shí)候,將模塊分成兩個(gè)區(qū)域依賴和源碼:XcS28資訊網(wǎng)——每日最新資訊28at.com

  • 依賴:一般是那種在開發(fā)中不會(huì)改變的JavaScript,比如組件庫(kù),或者一些較大的依賴(可能有上百個(gè)模塊的庫(kù)),這一部分使用esbuild來(lái)進(jìn)行預(yù)構(gòu)建依賴,esbuild使用的是 Go 進(jìn)行編寫,比 JavaScript 編寫的打包器預(yù)構(gòu)建依賴快 10-100倍
  • 源碼:一般是哪種好修改幾率比較大的文件,例如JSX、CSS、vue這些需要轉(zhuǎn)換且時(shí)常會(huì)被修改編輯的文件。同時(shí),這些文件并不是一股腦全部加載,而是可以按需加載(例如路由懶加載)。Vite會(huì)將文件轉(zhuǎn)換后,以es module的方式直接交給瀏覽器,因?yàn)楝F(xiàn)在的瀏覽器大多數(shù)都直接支持es module,這使性能提高了很多,為什么呢?

咱們看下面兩張圖:XcS28資訊網(wǎng)——每日最新資訊28at.com

第一張圖,是以前的打包模式,就像之前舉的index.js、add.js、sub.js的例子,項(xiàng)目啟動(dòng)時(shí),需要先將所有文件打包成一個(gè)文件bundle.js,然后在html引入,這個(gè)多文件 -> bundle.js的過程是非常耗時(shí)間的。XcS28資訊網(wǎng)——每日最新資訊28at.com

XcS28資訊網(wǎng)——每日最新資訊28at.com

第二張圖,是Vite的打包方式,剛剛說(shuō)了,Vite是直接把轉(zhuǎn)換后的es module的JavaScript代碼,扔給支持es module的瀏覽器,讓瀏覽器自己去加載依賴,也就是把壓力丟給了瀏覽器,從而達(dá)到了項(xiàng)目啟動(dòng)速度快的效果。XcS28資訊網(wǎng)——每日最新資訊28at.com

XcS28資訊網(wǎng)——每日最新資訊28at.com

2.解決更新緩慢

剛剛說(shuō)了,項(xiàng)目啟動(dòng)時(shí),將模塊分成依賴和源碼,當(dāng)你更新代碼時(shí),依賴就不需要重新加載,只需要精準(zhǔn)地找到是哪個(gè)源碼的文件更新了,更新相對(duì)應(yīng)的文件就行了。這樣做使得更新速度非常快。XcS28資訊網(wǎng)——每日最新資訊28at.com

Vite 同時(shí)利用 HTTP 頭來(lái)加速整個(gè)頁(yè)面的重新加載(再次讓瀏覽器為我們做更多事情):源碼模塊的請(qǐng)求會(huì)根據(jù) 304 Not Modified 進(jìn)行協(xié)商緩存,而依賴模塊請(qǐng)求則會(huì)通過 Cache-Control: max-age=31536000,immutable 進(jìn)行強(qiáng)緩存,因此一旦被緩存它們將不需要再次請(qǐng)求。XcS28資訊網(wǎng)——每日最新資訊28at.com

生產(chǎn)環(huán)境

剛剛咱們說(shuō)的都是開發(fā)環(huán)境,也說(shuō)了,Vite在是直接把轉(zhuǎn)化后的es module的JavaScript,扔給瀏覽器,讓瀏覽器根據(jù)依賴關(guān)系,自己去加載依賴。XcS28資訊網(wǎng)——每日最新資訊28at.com

那有人就會(huì)說(shuō)了,那放到生產(chǎn)環(huán)境時(shí),是不是可以不打包,直接在開個(gè)Vite服務(wù)就行,反正瀏覽器會(huì)自己去根據(jù)依賴關(guān)系去自己加載依賴。答案是不行的,為啥呢:XcS28資訊網(wǎng)——每日最新資訊28at.com

  • 你代碼是放在服務(wù)器的,過多的瀏覽器加載依賴肯定會(huì)引起更多的網(wǎng)絡(luò)請(qǐng)求
  • 為了在生產(chǎn)環(huán)境中獲得最佳的加載性能,最好還是將代碼進(jìn)行tree-shaking、懶加載和 chunk 分割、CSS處理,這些優(yōu)化操作,目前esbuild還不怎么完善

所以Vite最后的打包是使用了Rollup。XcS28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-79148-0.htmlVite 為什么快呢?快在哪?說(shuō)一下我自己的理解吧

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: .NET6中的await原理淺析

下一篇: 關(guān)于 JSON.stringify,你不知道的六件事

標(biāo)簽:
  • 熱門焦點(diǎn)
  • K60 Pro官方停產(chǎn) 第三方瞬間漲價(jià)

    雖然沒有官方宣布,但Redmi的一些高管也已經(jīng)透露了,Redmi K60 Pro已經(jīng)停產(chǎn)且不會(huì)補(bǔ)貨,這一切都是為了即將到來(lái)的K60 Ultra鋪路,屬于廠家的正常操作。但有意思的是該機(jī)在停產(chǎn)之后
  • 影音體驗(yàn)是真的強(qiáng) 簡(jiǎn)單聊聊iQOO Pad

    大公司的好處就是產(chǎn)品線豐富,非常細(xì)分化的東西也能給你做出來(lái),例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發(fā)布會(huì)上看到了iQOO的首款平板產(chǎn)品iQOO Pad。雖
  • 6月iOS設(shè)備好評(píng)榜:第一蟬聯(lián)榜首近一年

    作為安兔兔各種榜單里變化最小的那個(gè),2023年6月的iOS好評(píng)榜和上個(gè)月相比沒有任何排名上的變化,僅僅是部分設(shè)備好評(píng)率的下降,長(zhǎng)年累月的用戶評(píng)價(jià)和逐漸退出市場(chǎng)的老款機(jī)器讓這
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 講故事上個(gè)月我寫過一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,當(dāng)時(shí)用的是 GDIView + WinDbg 把問題搞定,前者用來(lái)定位泄露資源,后者用來(lái)定位泄露代碼,后面有朋友反
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會(huì)涉及各種各樣的安全任務(wù),包括但不限于:開發(fā)某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 小米汽車電池信息疑似曝光:容量101kWh,支持800V高壓快充

    7月14日消息,今日一名博主在社交媒體發(fā)布了一張疑似小米汽車電池信息的照片,顯示該電池包正是寧德時(shí)代麒麟電池,容量為101kWh,電壓為726.7V,可以預(yù)測(cè)小
  • iQOO Neo8系列今日官宣:首發(fā)天璣9200+ 全球安卓最強(qiáng)芯!

    在昨日舉行的的聯(lián)發(fā)科新一代旗艦芯片天璣9200+的發(fā)布會(huì)上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品將全球首發(fā)搭載這款當(dāng)前性能最強(qiáng)大的移動(dòng)平臺(tái)
  • 聯(lián)想YOGA 16s 2022筆記本將要推出,屏幕支持觸控功能

    聯(lián)想此前宣布,將于11月2日19:30召開聯(lián)想秋季輕薄新品發(fā)布會(huì),推出聯(lián)想 YOGA 16s 2022 筆記本等新品。官方稱,YOGA 16s 2022 筆記本將搭載 16 英寸屏幕,并且是一
  • 聯(lián)想小新Pad Pro 12.6將要推出,搭載高通驍龍 870 處理器

    聯(lián)想小新Pad Pro 12.6將于秋季新品會(huì)上推出,官方按照慣例直接在發(fā)布會(huì)前給出了機(jī)型的所有參數(shù)。聯(lián)想小新 Pad Pro 12.6 將搭載高通驍龍 870 處理器,重量為 5
Top 主站蜘蛛池模板: 大英县| 双城市| 隆安县| 南岸区| 永济市| 宁海县| 营山县| 增城市| 海原县| 洛浦县| 博客| 新民市| 奈曼旗| 诸暨市| 茂名市| 顺平县| 偃师市| 萍乡市| 陈巴尔虎旗| 社旗县| 白玉县| 孝感市| 法库县| 新建县| 忻城县| 锡林郭勒盟| 鄯善县| 任丘市| 和硕县| 新河县| 法库县| 康定县| 西充县| 安远县| 梁平县| 靖安县| 永丰县| 陆良县| 新蔡县| 海门市| 绿春县|