精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

通俗的解釋下Vite能用來干嘛?是怎么回事?

系統 瀏覽器
很多人會從 ES Modules 、Dev Server 、Vue 集成度高、速度快啊各種方向來講解它,更像是在說它的優點,我覺得有點神話它了,所以才讓它變得那么神秘(迷惑)?

[[416494]]

本文轉載自微信公眾號「秋風的筆記」,作者藍色的秋風。轉載本文請聯系秋風的筆記公眾號。

最近在B乎看到了這么一個問題,能不能通俗地講 Vite 到底是用來干嘛的,一開始覺得這個問題沒什么意思,因為 Vite 這個話題有太多的人講了。

但是我看了看其他的回答,大部分都會從 Vite 的特性,ES Modules 去講整件事情,然后還是會時不時要和 webpack 去做比較。

而且我又仔細看了看題主的疑問。

我也陷入了深深的思考,到底是大家學習一些新知識的時候急迫了呢?還是說前端常常容易把一些簡單的東西復雜化,容易形成套娃式的知識?又或者是知識太零散了,分不清到底是哪些是有關系的?

探索Vite

我打開了 Vite 的官網,他的標語是 「 下一代前端開發與構建工具」,因為一般標語需要言簡意賅地表達出它的意思,所以會用最精簡的去概括(也是為了宣傳)。我認為確實也沒有啥毛病,但是對于一些新手而且,確實這句話不知所云,官網也沒有足夠清楚的圖,如果是一些不了解的人,確實也容易迷失。

那么這句話到底要表達出什么意思呢?我用通俗的話表述了一遍(可能不一定準確,僅代表個人的理解):

目前大部分瀏覽器已經支持了ESM(ES Modules)模塊的方式了,因此我寫了一個轉化工具,可以讓一些瀏覽器不支持的格式(.vue/.svelte/.ts)以及不支持的語法(最新的es語法/特性)讓瀏覽器支持,它將會成為趨勢。

很多人會從 ES Modules 、Dev Server 、Vue 集成度高、速度快啊各種方向來講解它,更像是在說它的優點,我覺得有點神話它了,所以才讓它變得那么神秘(迷惑)?

而在我看來 Vite 就是一個轉化器,而 Webpack 就是 模塊器 + 轉化器。

轉化器的用途就是,將一些瀏覽器無法解析的文件,轉化成可以被瀏覽器解析的 js 文件,Vite 做的核心就是這個。什么用 Vite 快啊,都是瀏覽器自己的功勞,瀏覽器統一了模塊化方案,Vite 只是吃了一波瀏覽器的性能紅利而已。

用一張圖來描述就是(這里我盜用了 Webpack 的官方圖,改了改)

Vite 就是把所有的資源都轉化成了 js 的形式去引入,因為瀏覽器只支持 js 文件的 ES Modles 方式,畢竟 ES Modules 屬于 ECMAscript 規范,當然只能是適用于 js 了。而整個模塊化過程都是瀏覽器的功勞。

這里再來看看 Webpack 的整體流程圖,如果你對 Webpack 了解,可能能加深印象,但是不了解 webpack 也沒關系。

由于 Webpack 要自己的模塊化方式,因此需要將所有的資源都打包成一個 js,這個圖很形象地解釋了 Webpack 的作用。(對于不了解 Webpack 的也沒有關系,知道 Vite 的圖就夠了。)

我舉一個例子,可能能讓你更加清楚地去理解 Vite 的真面目。

  1. // index.html 
  2. <script type="module" src="main.js"></script> 
  1. // main.js 
  2. import { element, text } from './el.js'
  3.  
  4. const container = element('div'); 
  5.  
  6. const h1 = element('h1'); 
  7.  
  8. const t = text('Hello ES Modules'); 
  9.  
  10. h1.appendChild(t); 
  11.  
  12. container.appendChild(h1); 
  13.  
  14. document.body.appendChild(container); 
  1. // el.js 
  2. export function element(name) { 
  3.  return document.createElement(name); 
  4.  
  5. export function text(data) { 
  6.  return document.createTextNode(data); 

在 VS Code 裝一個 Live Server , 然后啟動這個 html, 然后我們隨便改點東西,可以看到,更新速度的非???。

也許你會說,我文件數量太少了,沒事,我們這次來整活20個文件。

  1. const fs = require('fs'); 
  2.  
  3. const LENGTH = 20; 
  4.  
  5. new Array(LENGTH).fill(0).forEach((item, index) => { 
  6.     fs.writeFileSync(`child-${index}.js`, ` 
  7.     export { child } from './child-${index+1}.js'
  8.     `) 
  9. }) 
  10.  
  11. fs.writeFileSync(`child-${LENGTH}.js`, ` 
  12. import { element, text } from '../el.js'
  13.  
  14. export function child() { 
  15.     const c = element('div'); 
  16.     const t = text('child'); 
  17.     c.appendChild(t); 
  18.     document.body.appendChild(c); 
  19. `) 

所以我說,Vite 本質是撥除了 webpack 模塊化功能后的一個轉化器。

但是盡管瀏覽器解決了模塊化的依賴,依舊是有兩個問題:

但是沒辦法支持一些樣式/文件(css/ttf/jpg...)資源的 import 語法

無法支持.ts/.vue/.svelte 等模板語法(或者高級特性)的直接引用

所以,才會有我們看到 Vite 仿佛又做了很多事情,因為 Vite 能夠去加載 .ts/.vue/.svelte 等文件, 它整合了很多插件去做這些轉化工作,將所有的資源都轉化成瀏覽器可識別的 js 的方式去導入,將 css 文件經過包裝,轉化為一個 js 文件等等。

剩余的就是原文件中的內容替換,因為類似于像第三方包中的資源沒辦法直接引入,需要做一層替換,例如一下代碼就被轉化成了這樣。

在編譯的時候需要去替換我們實際寫代碼的地址,去讓瀏覽器加載,然后為了不讓瀏覽器加載文件太多,還要將第三方包導成一個模塊,然后還有熱更新功能(這部分功能稍微復雜一些)。并且為了能夠在生產環境打包(Tree shaking / 壓縮啊,等等之前常規的優化),使用了 Rollup ,不僅提供了 ESM 的打包方式,以及你需要的其他模塊化方式(umd/amd/cmd/iife)。

因此核心是簡單的,但是相關的生態想要好用,卻是要花大量的精力,Vite 團隊也是花了大力氣去解決了周邊的生態問題,各種插件的適配啊等等。

首創的ESM

而首次提出利用瀏覽器原生ESM能力的工具并非是Vite,而是一個叫做Snowpack的工具(可以看我這篇文章 《模塊化系列》snowpack,提高10倍打包速度。)。前身是@pika/web,從1.x版本開始更名為Snowpack。

Snowpack在其官網是這樣進行自我介紹的:“Snowpack是一種閃電般快速的前端構建工具,專為現代Web設計。它是開發工作流程較重,較復雜的打包工具(如Webpack或Parcel)的替代方案。Snowpack利用JavaScript的模塊化方式(稱為ESM)來避免不必要的工作并保持流暢的開發體驗”。

為此,Pika團隊開發并維護了兩個技術體系:構建相關的Snowpack和造福大眾的Skypack。其中 skypack 上還有很多特殊處理過的 ES Modules 形式的包(例如 React 等)直接用來調用,由于那些包原先是不支持 ES Modules 形式,他們單獨維護了 ES Modules 版本。

看完了 ES Modules 的現狀以及 Vite 的本質,我們就再來把模塊化來回顧一下,這樣整個時間線就完整了以及我們的開發方式變化到現在,Web 真的做出了巨大的努力。

模塊化簡史

把時間回退到2006年,這個時候 「jQuery」 剛呱呱落地,那個時候雖然沒有模塊化,使用 jQuery 相比傳統那樣寫已經提高極大的速度,當然雖然已經很方便了,單還是阻擋不了愛研究的程序員們。

在2009年的時候 「CommonJS」 誕生了,但是 「CommonJS」 由于有兩個重要問題沒能得到解決,所以遲遲不能推廣到瀏覽器上。(1.由于外層沒有 function 包裹,被導出的變量會暴露在全局中。2.在服務端 require 一個模塊,只會有磁盤 I/O,所以同步加載機制沒什么問題;但如果是瀏覽器加載,一是會產生開銷更大的網絡 I/O,二是天然異步,就會產生時序上的錯誤。)中間百家爭鳴(「AMD、CMD、UMD」)一直到2016年5月,經過了兩年的討論,ECMAScript 6.0 終于正式通過決議,成為了國際標準。在這一標準中,首次引入了 import 和 export 兩個 JavaScript 關鍵字,并提供了被稱為 「ES Module」 的模塊化方案。在 JavaScript 出生的第 21 個年頭里,JavaScript 終于迎來了屬于自己的模塊化方案。而在這期間想要使用模塊化,只能通過打包工具來解決。

有了標準之后,也不是能立馬讓所有設備都支持 「ES Module」 因為瀏覽器的推進是一個漫長的過程,不像服務端,如果做一個升級,只需要對服務端升級,而瀏覽器的升級伴隨著電腦/手機等一系列的因素,因素非常不可控,因為用戶總是可以有多種多樣的選擇,「ES Modules(ESM)」 是 JavaScript 官方的標準化模塊系統,而它這一走,卻在標準化的道路上已經花費了近 10 年的時間。在2018 年 5 月 Firefox 60 發布之后,所有的主流瀏覽器就都支持 「ESM」 了。直到現在,「ES Module」 還并不能真正地用在生產環境使用,還是需要轉化成以舊的方式(非ESM方式)。

寫在最后

當回答完這個問題的時候,不禁會想,前端的發展過程中卻是會有一些新瓶裝舊酒的東西,然后神話它,然后讓小白覺得它很高大上,讓人懼怕,然后大佬就會覺得這個東西很簡單,也不愿意去拆解它,是否我們需要轉化一些思考,當我們講一個東西的時候,剝離那些高大上的詞匯,做一些更加親民的解釋?當然我不否則這些新的工具帶來的便利以及背后的付出,但是親民是否也是一種方式,或許會變得更加美好?答案我也不得而知,本文只是作出了自己的一個思考,如有錯誤請大家批評指出。

參考

 

https://segmentfault.com/a/1190000039370642

 

責任編輯:武曉燕 來源: 秋風的筆記
相關推薦

2023-03-29 08:24:30

2021-06-04 11:10:04

JavaScript開發代碼

2020-02-18 11:19:36

物聯網病毒物聯網IOT

2021-04-10 10:20:42

黑客攻擊網絡安全

2024-01-08 08:35:28

閉包陷阱ReactHooks

2016-11-22 19:54:56

點擊率預估推薦算法廣告

2023-10-12 08:54:20

Spring事務設置

2013-04-18 09:56:05

2023-03-05 15:41:58

MySQL日志暴漲

2021-05-11 11:51:15

飛機Wi-Fi通信

2022-04-15 08:54:39

PythonAsync代碼

2021-07-31 19:21:34

Python下劃線數值

2018-05-08 08:46:47

Linux內存釋放

2021-07-30 07:28:16

偽類偽元素CSS

2017-11-24 11:10:38

區塊鏈礦工分叉

2025-06-11 04:00:00

增量計算Lamda架構

2021-10-15 21:16:00

手機內存漏洞

2022-12-13 08:36:42

D-SMARTOracle數據庫

2015-03-25 14:44:05

DNS蘋果

2024-04-30 11:21:04

瀏覽器指紋瀏覽器
點贊
收藏

51CTO技術棧公眾號

国产精品一区二区免费不卡| 国产精品毛片久久| 色综合久久久久综合体| 国产日韩欧美日韩大片| 日韩激情小视频| 日韩欧美高清一区二区三区| 国产精品成人网| 91传媒在线免费观看| www..com国产| 乱中年女人伦av一区二区| 日本丰满少妇一区二区三区| 久久综合狠狠综合久久综青草| 日韩在线视频免费播放| 欧美黄色网视频| 天天色综合天天| 亚洲精品二区| 国产农村妇女毛片精品| 综合激情婷婷| 亚洲成年人在线| 欧美视频免费看欧美视频| 免费av网站在线播放| 日本视频一区二区| 久久精品成人欧美大片| 91精品小视频| 亚洲一区二区三区四区电影| 欧美日韩中文字幕一区二区| 噜噜噜久久亚洲精品国产品麻豆| 天天干视频在线| 午夜一区二区三区不卡视频| 亚洲美女精品成人在线视频| 亚洲AV无码久久精品国产一区| 色在线视频观看| 亚洲永久精品国产| 亚洲免费av网| 亚洲免费视频网| 精品一区免费av| 国产精品福利无圣光在线一区| 国产无套粉嫩白浆内谢| 牛牛国产精品| 欧美床上激情在线观看| 秋霞欧美一区二区三区视频免费| 日韩超碰人人爽人人做人人添| 狠狠躁夜夜躁久久躁别揉| 青娱乐一区二区| 午夜性色福利影院| 成人av影院在线| 国产经品一区二区| 亚洲 日本 欧美 中文幕| 天天色天天射综合网| 精品国产一区二区三区忘忧草| 成人中文字幕在线播放| 亚洲xxxxxx| 国产精品一区二区在线观看不卡| 国产精品欧美风情| 国产在线视频卡一卡二| jvid福利在线一区二区| 一本大道亚洲视频| 2019男人天堂| 久久久久久久久丰满| 日韩中文字幕免费视频| 中文字幕在线播放视频| 美女视频免费精品| 欧美日本精品一区二区三区| 欧美日韩亚洲自拍| 国产一二三在线| 天天综合天天综合色| 国产成人无码一二三区视频| 亚洲欧美在线成人| 欧美视频一区二| 三区视频在线观看| 日韩国产在线不卡视频| 欧美日韩一区不卡| 一本大道熟女人妻中文字幕在线 | 亚洲熟妇无码av在线播放| 中文字幕中文字幕在线十八区| 亚洲日本青草视频在线怡红院| 在线综合视频网站| 邻家有女韩剧在线观看国语| 风间由美一区二区三区在线观看| 国产成人精品国内自产拍免费看 | 日本在线免费| 亚洲美女淫视频| 国产不卡一区二区视频| 国产网友自拍视频导航网站在线观看| 国产电影一区二区三区| 国产精品入口免费视频一| 精品人妻一区二区三区免费看| 一区二区蜜桃| 国内精品美女av在线播放| 成人午夜淫片100集| 亚洲天堂偷拍| 日韩免费中文字幕| 五月婷婷视频在线| 日韩天堂av| 国产精品你懂得| 美女黄页在线观看| 国产麻豆视频一区二区| 91精品久久久久| 国产一区二区在线视频聊天| 国产精品亚洲专一区二区三区| 国产精品久久九九| 亚洲国产精品久久久久久久| 久久综合九色综合97婷婷女人| 欧美色欧美亚洲另类七区| 亚洲色欧美另类| 91视频免费播放| 欧美另类一区| a级网站在线播放| 色狠狠综合天天综合综合| 成人性生交视频免费观看| 亚洲免费福利一区| 九九热这里只有精品6| 亚洲欧美偷拍一区| 懂色av一区二区三区蜜臀 | 国产乱女淫av麻豆国产| 国产成人精品一区二区三区视频| 91福利国产精品| 天堂网在线免费观看| 欧美白人做受xxxx视频| 伊人免费在线| 一区二区三区四区在线| 久久久国产欧美| 精品国产一区二区三区成人影院 | 国产日韩中文字幕| 青青国产在线| 久久精品这里都是精品| 日韩一区国产在线观看| 色吧亚洲日本| 欧美日韩大陆在线| 亚洲黄色免费视频| 欧美一级专区| 精品日韩美女| а√在线中文在线新版| 日韩欧美亚洲一区二区| 一区二区三区影视| 日韩精品成人一区二区三区| 另类小说综合网| 欧美freesex黑人又粗又大| 色综合一区二区| 噜噜噜在线视频| 日韩aaaa| 国产精品美女免费| 国产原创av在线| 日韩欧美国产骚| 欧美日韩理论片| 91精品国产视频| 91在线无精精品一区二区| 日韩一级片免费在线观看| 亚洲激情图片小说视频| 男女视频在线观看网站| 亚洲+小说+欧美+激情+另类| 亚州精品天堂中文字幕| 一级做a爱片久久毛片| 高清shemale亚洲人妖| 色就是色欧美| 四虎影视4hu4虎成人| 欧美mv和日韩mv国产网站| 久久久99精品| 波波电影院一区二区三区| 国产91xxx| 秋霞蜜臀av久久电影网免费| 久久精品久久久久| 波多野结衣啪啪| 国产三级久久久| 最新免费av网址| 你懂的视频欧美| 国产成人啪精品视频免费网| 中文字幕日本在线观看| 天天做天天摸天天爽国产一区| 亚洲美女高潮久久久| 欧美黄色大片在线观看| 欧美在线亚洲在线| sese在线视频| 色综合天天天天做夜夜夜夜做| 国产偷人妻精品一区| 久久香蕉精品| 自拍偷拍一区二区三区| 超碰97成人| 国产成人+综合亚洲+天堂| 婷婷在线视频| 欧美亚洲日本国产| 成人网站免费观看| 免费黄网站欧美| 欧美激情视频一区二区三区| 波多野结衣在线高清| 欧美一区二区不卡视频| 日韩女优在线观看| 欧美经典一区二区| 潘金莲一级淫片aaaaaaa| 国产精品毛片一区二区三区| 国产一区二区三区色淫影院| 丝袜在线观看| 亚洲品质视频自拍网| 黑人一级大毛片| 中文字幕av一区 二区| 成人啪啪18免费游戏链接| 视频在线观看一区| 日韩精品电影网站| 欧美性片在线观看| 在线日韩精品视频| 中文字幕久久熟女蜜桃| 亚洲综合图片区| 国产亚洲精品精品精品| 成人做爰69片免费看网站| 噼里啪啦国语在线观看免费版高清版 | 亚洲视频一区二区免费在线观看| 男女视频网站在线观看| 成人同人动漫免费观看| 国产日韩在线看片| 国产盗摄——sm在线视频| 波霸ol色综合久久| 国产综合视频一区二区三区免费| 5566中文字幕一区二区电影| 亚洲精品成人在线视频| 亚洲一区二区精品久久av| 欧美熟妇精品一区二区| 强制捆绑调教一区二区| 精品这里只有精品| 韩国欧美一区| 亚洲第一页在线视频| 日韩免费精品| 91热精品视频| 9999在线视频| 欧美成人久久久| 天天操天天射天天舔| 日韩一级在线观看| 亚洲一区二区天堂| 色欧美片视频在线观看在线视频| 亚洲国产天堂av| av激情综合网| 亚洲乱妇老熟女爽到高潮的片| 免费视频一区二区| 欧美中日韩在线| 亚洲国产精品久久久天堂| 亚洲国内在线| 超碰97久久国产精品牛牛| 欧美在线视频一区二区| 蜜桃av在线播放| 国模精品视频一区二区三区| 蜜臀av在线| 国产一区二区三区丝袜| 色资源在线观看| 91精品国产日韩91久久久久久| 午夜视频网站在线观看| 色婷婷综合久久| 欧美日韩在线观看免费| 91美女精品福利| 性久久久久久久久久久| 波多野结衣一区二区三区| 无码任你躁久久久久久老妇| 青青草成人在线观看| 免费观看成人网| 日韩电影在线免费看| 美脚丝袜脚交一区二区| 成人婷婷网色偷偷亚洲男人的天堂| 国产 高清 精品 在线 a| 一区二区视频免费完整版观看| 欧美专区在线观看| 手机在线免费看av| 色综合五月天导航| av剧情在线观看| 欧美有码在线视频| 欧美日韩精品一区二区三区视频| 国产精品久久久久久久久免费| 污污视频在线| 亚州欧美日韩中文视频| 欧美成人ⅴideosxxxxx| 国产精品国产自产拍高清av水多| 欧美videossex| 91精品国产高清久久久久久| 精品国产免费人成网站| 国产精品男人的天堂| 高清久久一区| 国产精品直播网红| 精品国产18久久久久久二百| 国产精品一区二区免费看| 亚州精品视频| 久久超碰亚洲| 欧美一性一交| 天堂一区二区三区| 欧美粗暴jizz性欧美20| 国产视频九色蝌蚪| 日本va欧美va瓶| 亚洲最大视频网| 久久久噜噜噜久噜久久综合| 国精产品一区一区二区三区mba| 久久精品一区二区三区四区| 久久爱一区二区| 国产精品乱人伦一区二区| 青青草激情视频| 亚洲一区二三区| 国产熟妇一区二区三区四区| 色综合中文字幕| 中文字幕一区二区人妻视频| 欧美一区二区三级| 毛片在线播放网站| 欧美成人午夜剧场免费观看| 成人欧美大片| 国产精品xxxxx| 国产精品扒开腿做爽爽爽视频软件| 国产精品男人的天堂| 国产精品sss在线观看av| 天天人人精品| 国产欧美一区二区三区国产幕精品| 久久午夜夜伦鲁鲁一区二区| 天堂va蜜桃一区二区三区漫画版| 91视频最新入口| 国产一区二区三区在线观看精品 | 亚洲激情图片一区| 免费无码国产精品| 精品久久久久久久久久久久包黑料| 国产精品综合在线| 欧美成人a∨高清免费观看| 国产一区二区三区福利| 日韩专区在线观看| 波多野结衣久久精品| 国产精品露脸自拍| www.成人| 99久久99| 免费一区二区三区视频导航| 久久国产午夜精品理论片最新版本| 久久精品国产**网站演员| 成人免费无遮挡无码黄漫视频| 亚洲一区二区三区三| 麻豆久久久久久久久久| 日韩欧美中文字幕一区| 日本免费在线观看| 国产精品久久91| 亚洲欧洲色图| 国产在线精品91| 麻豆精品久久精品色综合| 欧美一级片在线免费观看| 国产精品久久久久久久久动漫| 久久精品无码av| 亚洲国模精品一区| 国内老司机av在线| 国产精品久久久| 欧美日本成人| 日韩在线视频在线| 国产麻豆一精品一av一免费 | 国产精品av免费在线观看| 日韩一级视频| 在线观看欧美激情| 久久国产尿小便嘘嘘| 中国美女黄色一级片| 欧美日韩国产综合一区二区三区| 黄色在线观看网| 九九久久久久久久久激情| 欧美1区2区3| 国产成人一二三区| 日韩电影在线观看电影| 亚洲成人黄色av| 欧洲精品一区二区| av资源网站在线观看| 91精品国产99| 中文字幕伦av一区二区邻居| 中文字幕无码不卡免费视频| 国产午夜精品福利| 中文有码在线播放| 欧美精品一区在线观看| 午夜毛片在线| 91色精品视频在线| 欧美天天视频| 在线能看的av网站| 国产亚洲污的网站| 亚洲一级视频在线观看| 久久精品精品电影网| 国产精品原创视频| 六月婷婷激情网| av不卡在线播放| 波多野结衣在线观看一区| zzjj国产精品一区二区| 日韩成人亚洲| 奇米视频888战线精品播放| 一本一本久久| 国产在线综合视频| 91精品福利在线一区二区三区| 18av在线视频| 欧美欧美一区二区| 激情成人综合网| 一区二区三区视频免费看| 亚洲人成人99网站| 欧美黑人疯狂性受xxxxx野外| 欧美午夜精品久久久久久蜜| 麻豆国产一区二区| 国产对白videos麻豆高潮| 国产亚洲精品91在线| 日本在线成人| 99草草国产熟女视频在线| 亚洲日本在线天堂| 日本ー区在线视频| 日本精品一区二区三区在线| 成人亚洲一区| 亚洲欧美自拍另类日韩| 国产精品嫩草99a| 国产亚洲久一区二区| 欧美激情xxxx性bbbb| 欧美另类69xxxxx| 一道本在线免费视频| 午夜亚洲国产au精品一区二区|