自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Vite 未來(lái)使用的打包工具,正式開(kāi)源了!

開(kāi)發(fā) 開(kāi)發(fā)工具
Rolldown 力圖在最大程度上與 Rollup 的 API 和插件體系保持兼容,以簡(jiǎn)化用戶的遷移過(guò)程。對(duì)于一些基礎(chǔ)應(yīng)用場(chǎng)景來(lái)說(shuō),Rolldown 有望直接替代現(xiàn)有工具。

3 月 8 號(hào),Rolldown[1] 正式開(kāi)源了,它是一個(gè)基于 Rust[2] 語(yǔ)言開(kāi)發(fā)的 JavaScript 打包器,其設(shè)計(jì)目標(biāo)是成為 Vite 在未來(lái)將要采用的核心打包工具。它不僅提供了與 Rollup 兼容的 API 和插件體系,而且在功能范圍上,它更加貼近于 esbuild[3] 的設(shè)計(jì)理念。

圖片圖片

Rolldown 基于 Rust 語(yǔ)言開(kāi)發(fā),并且是在 Oxc[4] 基礎(chǔ)架構(gòu)上構(gòu)建的。目前,Rolldown 內(nèi)部已經(jīng)在使用 Oxc 提供的 parser 和 resolver。未來(lái),隨著 Oxc 轉(zhuǎn)換和壓縮功能的推出,它們也會(huì)被整合到 Rolldown 中。

圖片圖片

為什么設(shè)計(jì) Rolldown

Rolldown 設(shè)計(jì)初衷是作為 Vite 未來(lái)采用的底層打包工具。

目前,Vite 在內(nèi)部整合了兩款打包工具:

  • esbuild,由 Evan Wallace 開(kāi)發(fā)。Vite 利用 esbuild 完成依賴的預(yù)打包、TypeScript / JSX 的轉(zhuǎn)換、代碼的降級(jí)處理以及代碼壓縮。
  • Rollup,由 Rich Harris 創(chuàng)立,并由 Lukas Taegert-Atkinson 維護(hù)。Vite 在其生產(chǎn)環(huán)境構(gòu)建中使用 Rollup,并且支持與 Rollup 兼容的插件接口。

之所以同時(shí)采用這兩種打包工具,是因?yàn)殡m然它們各有卓越之處,但同時(shí)也各自缺乏對(duì)方所具備的某些功能:

  • esbuild 的執(zhí)行速度極快,功能全面,但其打包輸出,尤其是在代碼分割方面,對(duì)于應(yīng)用打包而言并不盡如人意。
  • Rollup 在應(yīng)用打包方面經(jīng)過(guò)了嚴(yán)格的實(shí)戰(zhàn)檢驗(yàn),成熟穩(wěn)定,但相比于編譯為原生語(yǔ)言的打包工具,它的速度要慢得多。

不得不依賴兩套打包工具存在以下幾個(gè)不理想的地方:

  • 不同工具輸出之間的微小差異,可能會(huì)導(dǎo)致開(kāi)發(fā)環(huán)境與生產(chǎn)環(huán)境構(gòu)建的行為表現(xiàn)不一致。
  • 在生產(chǎn)環(huán)境構(gòu)建過(guò)程中,用戶源代碼需要被多個(gè)工具反復(fù)進(jìn)行解析、轉(zhuǎn)換和序列化,這導(dǎo)致了大量不必要的開(kāi)銷。

我們理想中的情景是,Vite 能夠使用一種單一的打包工具,這款工具不僅能提供近乎原生的性能,還能內(nèi)置轉(zhuǎn)換功能以減少解析和序列化的開(kāi)銷,同時(shí),它還需要有與 Rollup 兼容的插件接口,并且能提供適合大型應(yīng)用的先進(jìn)構(gòu)建輸出控制功能。

Rolldown vs Rollup

Rolldown 力圖在最大程度上與 Rollup 的 API 和插件體系保持兼容,以簡(jiǎn)化用戶的遷移過(guò)程。對(duì)于一些基礎(chǔ)應(yīng)用場(chǎng)景來(lái)說(shuō),Rolldown 有望直接替代現(xiàn)有工具。然而,在處理一些特殊情況,特別是在涉及到復(fù)雜配置時(shí),可能會(huì)遇到輕微的差異。

最初,Rolldown 開(kāi)發(fā)團(tuán)隊(duì)計(jì)劃將 JavaScript 代碼轉(zhuǎn)換為 Rust 實(shí)現(xiàn),但很快他們發(fā)現(xiàn),要想充分發(fā)揮 Rust 的性能優(yōu)勢(shì),就必須按照 Rust 的特性來(lái)編寫(xiě)代碼。因此,Rolldown 的內(nèi)部架構(gòu)更偏向 esbuild 而非 Rollup,并且我們?cè)诖a塊分割的邏輯處理上,也會(huì)與 Rollup 存在差異。

與此同時(shí),Rolldown 涵蓋的功能比 Rollup 更為廣泛,與 esbuild 更為相似。它內(nèi)部支持 CommonJS 規(guī)范、node_modules 的解析,并且計(jì)劃在未來(lái)增加對(duì) TypeScript/JSX 的轉(zhuǎn)換以及代碼壓縮的支持。

Rolldown Roadmap

Rolldown 目前正處于積極開(kāi)發(fā)階段,還未適用于生產(chǎn)環(huán)境。Rolldown 開(kāi)發(fā)團(tuán)隊(duì)選擇開(kāi)放源代碼,以便開(kāi)始與社區(qū)貢獻(xiàn)者合作,推動(dòng) Rolldown 的發(fā)展。

圖片圖片

為了追求速度和更好地開(kāi)發(fā)體驗(yàn),在前端基建領(lǐng)域,越來(lái)越多工具采用 Rust 來(lái)構(gòu)建。不過(guò) Rust 學(xué)習(xí)成本挺高的,2024 年 Rust 你還學(xué)得動(dòng)么?如果你已經(jīng)上手 Rust,可以一起參與 Rolldown 開(kāi)源項(xiàng)目。

參考資料

[1]Rolldown: https://rolldown.rs/

[2]Rust: https://www.rust-lang.org/

[3]esbuild: https://esbuild.github.io/

[4]Oxc: https://oxc-project.github.io/

責(zé)任編輯:武曉燕 來(lái)源: 全棧修仙之路
相關(guān)推薦

2024-03-11 00:07:00

VueRustGo

2024-10-09 14:07:05

2018-05-30 15:33:00

打包工具Web

2024-09-02 00:00:01

2021-10-27 07:47:21

Vite 工具項(xiàng)目

2022-10-24 09:42:31

2025-03-04 07:40:00

Python模塊開(kāi)發(fā)

2022-01-04 10:51:11

工具開(kāi)源PDF

2014-12-09 12:57:19

AnySDK

2022-04-14 11:26:09

瀏覽器擴(kuò)展開(kāi)源Firefox

2022-07-17 06:48:39

Vite 3.0前端工具鏈

2024-03-08 08:40:25

2021-05-11 09:20:38

Webpack工具模塊

2024-08-22 14:47:50

開(kāi)源Linux網(wǎng)絡(luò)抓包工具

2015-07-20 11:39:33

Windows 10正式版

2009-12-15 17:53:18

Ruby標(biāo)準(zhǔn)庫(kù)

2023-04-21 10:10:07

Vite 4.3前端

2021-12-25 22:29:04

WebpackRollup 前端

2019-11-28 13:58:47

推薦技術(shù)Python算法

2021-05-31 17:37:26

ViteReactesbuild
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)