在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ViteConf 2023:Vite即將Rust化挑戰

jf_wN0SrCdH ? 來源:浮之靜 ? 作者:lencx ? 2023-10-07 10:28 ? 次閱讀

ViteConf 干貨滿滿,尤大的分享中最值得關注的就要數 Rolldown 了,它為 Vite 現有痛點提供了新的解決方案。

Vite

Vite[2] 是支撐著全球增長最快的前端生態系統的下一代構建工具。

npm 每周下載量:7,200,000+

GitHub Stars:60,000+

2171c40e-6455-11ee-939d-92fbcf53809c.png

218425d6-6455-11ee-939d-92fbcf53809c.png

Vite 生態

Vite 正在迅速崛起為一個共享的基礎平臺,吸引著越來越多的項目在其基礎上構建和發展。令人興奮的是,這些項目不僅僅滿足于基礎應用,而是在各自的領域中進行著前所未有的創新。

Vite 妥善平衡了低級別復雜性的抽象和高級用戶及框架的靈活性。這不僅降低了入門門檻,提供了友好的開發體驗,同時也確保了對于高級應用和多變需求的充分支持。

Storybook v7 提供一流的 Vite 支持:預先捆綁以提高速度、零配置設置、無需 Webpack 以及更小的安裝大小(First-class Vite support in Storybook[3])

Angular v16 使用 Vite 作為開發服務器(Angular v16 is here![4])

Preact[5] 在 6 月份將默認工具切換為 Vite,推薦使用 create-vite 來快速開始一個項目

Redwood v6 完全構建在 Vite 之上(RedwoodJS Vite Configuration[6])

Bun v0.7 開始支持 Vite(bun vite support[7])

VitePress[8] 靜態網站生成器

與 Remix[9] 合作,探索向 Vite 遷移,已取得重大進展

...

Vite 痛點 & 挑戰

痛點

相對緩慢的生產構建速度:目前仍使用 rollup 作為生產構建,本地開發使用 esbuild 或 Bun

開發與生產環境之間的不一致:Vite 使用混合策略。開發使用 esbuild 預構建,使用 Native ES 模塊提供源代碼;生產使用 Rollup 來捆綁所有資產,CommonJS 在處理和轉換時有時會出現輕微的不一致,最終導致難以調試。

開發過程中存在未捆綁 ESM 的網絡開銷:如果開發者項目中包含大量未捆綁 ESM 時,網絡開銷會大幅影響初始頁面加載速度。

混亂的 SSR 外部問題

對代碼塊分割的有限控制:與 ES 構建相比,雖然 Rollup 已經提供了很大靈活性,但與 Webpack 的完全支持自定義相比,還是有些差距

缺乏首方模塊聯合(First-party Module Federation)支持:了解更多 Module Federation[10]

挑戰

大多數問題需要在打包工具(bundler)層面解決(Vite 內部有兩個捆綁器:esbuild 和 Rollup)

esbuild(或 Bun)速度極快,但:

對構建資源優化的控制非常有限:比如控制塊的分割方式

插件 API 不夠靈活:比如當嘗試將多個插件連接在一起以處理同一文件類型時

Rollup 成熟且靈活,但:

與原生打包工具相比仍然較慢

ESM/CJS 交互操作的處理可以改進

兩個打包工具都無法完全替代對方,并且存在微妙的行為不一致性

Rolldown

尤大透露團隊正在開發 Rolldown,它是 Rollup 的 Rust 移植版。目的并不是為了取代現有的工具 esbuild 或 Rollup,只是為了更好地滿足一些特定需求,使 Vite 用戶受益。

專注點:在盡可能與 Rollup 兼容的前提下,重點關注性能

目標:在對終端用戶影響最小的前提下,在 Vite 中替換 esbuild 和 Rollup

它將為 Vite 提供:

顯著更快的生產構建速度

更強的開發/生產一致性

更穩健的 SSR 依賴處理

更多關于代碼塊分割的控制

當然,這將是一項龐大的工作!

目前狀態:初步的工作進行中!(計劃在年底前開源)

核心貢獻者是前 rspack[11] 團隊成員(rspack 是字節開源的一個基于 rust 實現的前端打包工具,對標 Webpack)

與 rspack 團隊合作,在 OXC[12] 基礎上進行建設(Oxc 是一套為 JavaScript 和 TypeScript 創建的高性能工具,基于 Rust 實現。它正在構建一個解析器、linter、格式化程序、轉譯器、壓縮器、解析器……)

與 @lukastaegert[13](rollup 核心維護者) 合作以確保與 Rollup 的一致性

如果 Vite 對你的使用場景來說過于龐大,Rolldown 當然也可以作為一個獨立的依賴項使用。它還可以提高 Vitest[14] 和 Nitro[15] 的性能。

Vite Roadmap

計劃將通過四個階段逐步完善和升級打包和構建過程,最后將 Vite 的一部分功能通過 Rust 和 Rolldown 進行重寫或優化,以提高整體性能和提供更多的構建模式。

階段 1:基礎打包

替換 esbuild 用于依賴預打包:CommonJS & 仿 ESM(faux-ESM)兼容性

階段 2:高級打包

與 Rollup 功能對齊:插件兼容性、Tree-shaking、高級代碼塊分割控制等

階段 3:內置轉換

TypeScript

JSX

代碼壓縮(minification)

語法降級(syntax lowering)

階段 4:使用 Rust 重構 Vite

Rolldown 暴露插件容器作為 API

Vite 引入一個以 Rolldown 為依賴的 Rust 核心

使用 Rust 重構 Vite 內部關鍵插件和 ssrLoadModule 轉換

提供與未捆綁 ESM(unbundled ESM)相對的全包模式(full-bundle mode)

Vite 版本日志

Vite 4.0 (2022.12)

升級到 Rollup 3(3.0.0 changelog[16])

最低 Node.js 要求:Rollup 現在至少需要 Node 14.18.0 來運行。

插件和 API 更改:許多插件上下文函數和插件鉤子已被移除或修改。

新特性:包括按塊調用 output.banner/footer/intro/outro 的函數,插件可以訪問完整的塊圖表等。

構建輸出:增加了關于動態導入在 CommonJS 輸出中的處理,允許控制動態導入在生成 CommonJS 輸出時是以 import(...) 還是包裝過的 require(...) 形式被輸出。

警告和棄用:一些之前被棄用的特性已被移除,而其他一些特性開始顯示棄用警告。

錯誤處理:改進了Rollup 拋出的錯誤信息的清晰度和一致性。

性能優化:避免在發出數千個資產時的性能問題。

就重大變更而言,這是一個小得多的主版本。目標是為了最大化利用生態,而推出的一個穩定版。CI 確保與下游項目的兼容性,以便更改對最終用戶的影響盡可能小。

使用 SWC 支持的 React 插件 @vitejs/plugin-react-swc[17]

快速刷新(比 Babel 快約 20 倍)

啟用自動 JSX 運行時(Babel 在 v7.9.0 版本中引入此特性,相關閱讀:Introducing the New JSX Transform[18] 和 A new JSX transform[19]

Vite 4.1 (2023.02)

同步 Rollup 和 esbuild 版本

react 插件變化顯著

plugin-react 修復了很多 HMR bug

支持 SWC 的 Vite 版本,添加了對 SWC 插件的支持。

Vite 4.2 (2023.03)

改進源代碼調試體驗

修復 Chrome 開發工具在顯示相對路徑時的異常

通過 x_google_ignoreList 從堆棧跟蹤中排除某些文件的源映射,做到錯誤堆棧追蹤僅關注你在意的部分(相關閱讀:vite server.sourcemapIgnoreList[20] 和 The x_google_ignoreList source map extension[21])

Vite 4.3 (2023.04)

與 Vite 4.2 相比,4.3 帶來了全面的速度提升(Vite 4.3 is out![22])。

2199f370-6455-11ee-939d-92fbcf53809c.png

Vite 4.4 (2023.07)

實驗性支持 Lightning CSS[23](基于 Rust 實現的 CSS 編譯工具鏈),注意:它目前與其他 CSS 處理器互斥。

create-vite[24] 添加 solid 和 qwik 模板。

21a93420-6455-11ee-939d-92fbcf53809c.png

Vite 5.0 (當前處于 beta 版)

最低 Node.js 版本要求 18+

CommonJS API 已棄用。注意:并未對其進行刪除,如果你仍在使用 Vite 中的通用 API,也不會有任何問題。但會收到警告,督促你轉向 ESM API。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19420

    瀏覽量

    231217
  • CCS
    CCS
    +關注

    關注

    8

    文章

    183

    瀏覽量

    40068
  • SSR
    SSR
    +關注

    關注

    0

    文章

    84

    瀏覽量

    17820
  • ESM
    ESM
    +關注

    關注

    0

    文章

    9

    瀏覽量

    9071
  • rust語言
    +關注

    關注

    0

    文章

    57

    瀏覽量

    3029

原文標題:ViteConf 2023:Vite 即將 Rust 化

文章出處:【微信號:Rust語言中文社區,微信公眾號:Rust語言中文社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Rust語言如何與 InfluxDB 集成

    Rust 是一種系統級編程語言,具有高性能和內存安全性。InfluxDB 是一個開源的時間序列數據庫,用于存儲、查詢和可視大規模數據集。Rust 語言可以與 InfluxDB 集成,提供高效
    的頭像 發表于 09-30 16:45 ?1242次閱讀

    關于虛擬儀器測試環境VITE的分析

    VITE標準體系結構分析VITE實現體系結構VITE核心信息模型結構
    發表于 05-12 06:31

    RUST在嵌入式開發中的應用是什么

    的文檔、有用的錯誤消息、友好編譯器、一流的工具,只是Rust的幾個好處。它帶有一個集成的包管理器和構建工具,支持自動完成和類型檢查的智能多編輯器,一個自動格式程序,等等。為什么在嵌入式開發中使用Rust
    發表于 12-24 08:34

    Rust代碼中加載靜態庫時,出現錯誤 ` rust-lld: error: undefined symbol: malloc `怎么解決?

    “ [i]malloc ”、“ [i]exit ”。我驗證了使用 ` [i]nm ` 命令。 問題是我打算使用 ffi 在 rust 中使用這個靜態庫。當我嘗試在我的 Rust 代碼中加載靜態庫
    發表于 06-09 08:44

    精彩預告 | OpenHarmony即將亮相MTSC 2023

    MTSC 2023 第 12 屆中國互聯網測試開發大會(深圳站)即將2023 年 11 月 25 日,在深圳登喜路國際大酒店舉辦,大會將以“1 個主會場+4 個平行分會場”的形式呈現,聚集一眾
    發表于 11-22 10:28

    2023年獎杯收到

    今天非常高興收到了論壇發送的2023年“年度優秀版主”獎杯,今年不知不覺間就將結束,期待即將到來的2024年。加油論壇,加油各位壇友!
    發表于 12-09 22:26

    Go Vite通用的去中心應用平臺

    go-vite.zip
    發表于 04-22 10:59 ?1次下載
    Go <b class='flag-5'>Vite</b>通用的去中心<b class='flag-5'>化</b>應用平臺

    GCC將加入對Rust的支持

    GCC Rust 的代碼仍然需要更仔細的審查。按照計劃,它有可能作為 GCC 13 的一部分而亮相,GCC 13 將于 2023 年 4 月左右發布穩定版,其對 Rust 語言的支持有希望達到 beta 級別。
    的頭像 發表于 12-13 10:04 ?1143次閱讀

    Chromium正式開始支持Rust

    泛地在Chromium中使用Rust還需要時間去評估。https://security.googleblog.com/2023/01
    的頭像 發表于 01-14 10:04 ?1031次閱讀

    Go/Rust挑戰Java/Python地位

    增長持續下去,其可能很快就會直接挑戰 Java 和 Python 的地位。Go 是其中第三大最受歡迎的語言,其次是 C++、JavaScript、C#、C、Rust、TypeScript、R、Kotlin 和 Scala。
    的頭像 發表于 03-06 10:19 ?736次閱讀

    Rust流處理新秀,即將抗衡Flink霸主地位

    之前也有Rust嘗試做大數據套件,但是都沒有很成功的案例。或許Arroyo將是第一個用Rust編寫的分布式流處理引擎成功的案例,這樣將再次證明Rust在大數據基建領域的可行性。
    的頭像 發表于 04-09 10:21 ?3267次閱讀

    Vite 4.3正式發布,前端構建工具

    最新發布的 Vite 4.3 顯著提升了性能。發布公告寫道,Vite 團隊在這個版本中將工作重心放在提升開發服務器的性能上,其中包括簡化解析邏輯、改進熱路徑、實現更智能的緩存以查找 package.json,TS 配置文件和解析的 URL。
    的頭像 發表于 04-26 14:23 ?1032次閱讀
    <b class='flag-5'>Vite</b> 4.3正式發布,前端構建工具

    GOTC 2023出品人吳迪:字節跳動將持續投入Rust

    面、數據平臺、圖數據庫、WebAssembly 等。去年 9 月,字節跳動還開源了 RPC 框架 Volo 及相關生態。 在?GOTC 2023?臨近之際,字節跳動服務框架 Rust 負責人
    的頭像 發表于 05-24 09:29 ?454次閱讀

    Rust的內部工作原理

    Rust到匯編:了解 Rust 的內部工作原理 非常好的Rust系列文章,通過生成的匯編代碼,讓你了解很多Rust內部的工作機制。例如文章有 Rus
    的頭像 發表于 06-14 10:34 ?843次閱讀
    <b class='flag-5'>Rust</b>的內部工作原理

    Vite 5正式發布,性能大幅提升

    公告指出,Vite 5 的重點是清理 API(刪除已棄用的功能),并精簡了幾個功能以解決長期存在的問題。例如,將 define 轉換為使用正確的 AST 替換,而不是使用 regexes。項目團隊表示,他們將繼續推進實現面向未來的 Vite
    的頭像 發表于 11-20 16:20 ?1158次閱讀
    主站蜘蛛池模板: 日本免费三级网站 | 久久这里只有精品任你色 | 亚洲日本在线观看视频 | 一区在线免费观看 | 日本黄色美女网站 | 大又大粗又爽又黄少妇毛片 | 国产高清色视频免费看的网址 | 天天做人人爱夜夜爽2020 | 成人国产亚洲欧美成人综合网 | 日本欧美午夜 | 人人爱爱人人 | 四虎国产精品影库永久免费 | 五月婷婷激情五月 | 高清成年美女xx免费网站黄 | 伊人狼人在线 | 亚洲va久久久噜噜噜久久男同 | 三级网站在线免费观看 | 亚洲国产福利精品一区二区 | 欧美freesex交| 狠狠操天天操视频 | 国产精品福利视频手机免费观看 | 亚洲播放 | 四虎亚洲精品 | 久热九九 | 天天射天| 伊人久久综合网站 | 国产精品久久久久久久人热 | аⅴ天堂 在线 | 色老头视频在线观看 | 女生扒开尿口让男生舔 | 最新理论三级中文在线观看 | 77成人| 久久国产精品免费专区 | 亚洲福利秒拍一区二区 | 中文字幕亚洲综合久久2 | 亚洲天堂免费在线 | 天天插插插 | 九九99久久精品午夜剧场免费 | 韩国三级精品 | 天天操综合视频 | 欧美特级生活片 |