成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

作為前端開發者,你沒有必要學 Rust

開發 前端
首先給出我的回答:作為一個前端,你沒有必要學 Rust。當然,這并不是說 Rust 對于前端開發者沒有任何價值,而是說 Rust 并不是前端開發者必須要學習的技術。為什么這么說?接下來我來跟大家詳細聊聊。

大家好,我是三元同學。

隨著前端技術棧的發展,Rust 作為一門系統級語言,也逐漸進入了前端開發者的視野。最近很明顯的一個例子就是,今年的 ViteConf 中尤雨溪宣布 Vite 的底層即將用 Rust 重寫,即開發一個基于 Rust 的打包工具 Rolldown,以此替換掉原有的 Esbuild 和 Rollup。當這個消息傳出后,不少前端開發者開始關注起了 Rust,也陸續有不少的讀者朋友問我相同的問題:作為一個前端,我有必要學 Rust 嗎?

首先給出我的回答:作為一個前端,你沒有必要學 Rust。當然,這并不是說 Rust 對于前端開發者沒有任何價值,而是說 Rust 并不是前端開發者必須要學習的技術。為什么這么說?接下來我來跟大家詳細聊聊。

Rust 在前端做些什么

不可否認的是,Rust 作為一門現代化的系統級編程語言,本身有著很多優勢,比如它的內存安全、并發安全、現代化的工程化能力(如包管理),這些優勢使得 Rust 在如今的操作系統、云計算、區塊鏈等等領域都有著越來越多的應用。而在前端領域,Rust 也有著自己的一席之地。

Vercel(Next.js 背后的公司)的 CEO Lee Robinson 老哥在兩年前寫過一篇文章——《Rust 是前端基建的未來》。

原文鏈接:https://leerob.io/blog/rust

他在這篇文章中指出了以下的幾個基建方向會被 Rust 所顛覆:

  • webpack。即底層構建工具層。
  • Babel。即 JavaScript 編譯器。
  • ESLint。即代碼檢查器。
  • Prettier。即代碼格式化工具。
  • Terser。即代碼壓縮器。

而到如今 2023 年,兩年過去了,這個判斷也越來越接近現實。我們不妨來看看這些年 Rust 在前端做了些什么。

構建工具

首先是構建工具。在前端領域,構建工具的重要性想必不用多說,而在 2022 年 10 月底,Next.js 首先推出了第一款基于 Rust 的構建工具 Turbopack,當時引起了一時的轟動,一方面確實是因為它的性能數據確實很驚艷,號稱比 Vite 快十倍,另一方面,Vite 的作者尤雨溪對此表示了質疑:真的比 Vite 快 10 倍嗎?于是創建了一個 Issue,附上了自己測出來的性能數據,有理有據,吸引不少人前來學(chi)習(gua)。這個事件屬實讓 Turbopack 的熱度更加高漲。

但好景不長,由于本身的一些問題,比如不支持插件機制、和 Next.js 綁定太死,后來就一直不溫不火了。

Turbopack 某種程度上也許讓我們對 Rust 構建工具感到失望,當時我在某乎上表達了自己失望的原因。

回答鏈接:https://www.zhihu.com/people/yang-xing-yuan-9/answers

時間來到了 2023 年 3 月 10 號,字節跳動 Web Infra 團隊正式宣布發布了 Rspack:

Rspack 的出現,讓我們再次看到了 Rust 構建工具的希望。在此我想強調的點并不是性能,畢竟 Rust 造的工具動不動快個 5 倍 10 倍 100 倍的,大家早就看的索然無味了,不是嗎?我想強調的是產品上的可落地,我們見了太多的玩具,請讓我們看到一個可以落地到生產環境的 Rust 構建工具。毫不夸張的說,Rspack 的出現證明了這一點。為什么這么說?

我們不妨先從反面來思考,基于 Rust 的構建工具為什么難以落地:

  • 現有項目基于都是 webpack 的,怎么遷移?
  • 現有的 webpack 生態中,里面的 loader 和 plugin 都是 JS 寫的,在 Rust 構建工具中用不了,怎么辦?
  • 工具是 Rust 寫的,如果我要寫一些 loader 和 plugin,我不會 Rust,怎么辦?

總結起來就是三個問題:

  • 遷移成本高
  • 生態不完善
  • 擴展門檻高

而 Rspack 的出現,恰恰很好解決了這三個問題:

  • 配置幾乎跟 webpack 一模一樣,連插件和 loader 的 API 也基本相同,這使得現有的 webpack 項目遷移成本非常低。
  • Rspack 支持 JS 編寫 loader 和 plugin(感興趣的可以看看 napi-rs),這意味著大部分的 webpack 生態可以直接復用,這使得 Rspack 生態有非常好的開端。
  • 也正是由于 Rspack 支持 JS 編寫 loader 和 plugin,這使得擴展門檻非常低,你不會 Rust 也可以寫 loader 和 plugin,直接用 JS 就可以開發。

到如今,Rspack 在業界已經有了相當大的影響力了,不少的國外知名項目,比如 Discord 、 NetLify 等等,都已經接入 Rspack,并且獲得了 5~10 倍的性能提升。前不久,《現代 JavaScript 庫開發:原理、技術與實戰》作者顏海鏡老哥也將團隊的巨型項目(50w 行代碼)從 webpack 遷移到了 Rspack,獲得了 10 倍以上的性能收益,不禁要為 Rspack "代顏":

Rspack 的出現,讓我們能夠看到了 Rust 前端構建工具這個賽道的可行性,基于 Rust 的構建工具,原來也可以低成本地落地到生產環境,也可以非常"接地氣"。

編譯器

接下來就是編譯器,我們可以分為兩部分來看:JavaScript 編譯器和 CSS 編譯器。

對于前者而言,我們比較耳熟能詳的就是 Babel 了。Babel 作為一個 JavaScript 編譯器,它的重要性不言而喻,它的出現,讓我們可以使用 ES6+ 的語法,而不用擔心兼容性問題。然而隨著項目規模的擴大,Babel 的性能問題也逐漸暴露出來,隨后基于 Rust 的 JavaScript 編譯器 SWC 也應運而生。

官方數據顯示,SWC 的性能在單核機器上比 Babel 快 20 倍,而在多核機器上比 Babel 快 70 倍,相當驚人。

除了 SWC 之外,還有基于 Rust 的 JavaScript 編譯器 Oxc,也非常來勢洶洶,官方對比數據顯示,它比 SWC 的性能還要再快個一倍左右!這個項目也是由字節的 Web Infra 團隊開發的,目前功能有待完善,不過是一個值得關注的項目。

倉庫地址:https://github.com/web-infra-dev/oxc

接下來是 CSS 編譯器了,這個領域當中Lightning CSS 可以說一騎絕塵,它的性能比原有的 JS 開發的 CSS 工具鏈快了 100 多倍!

官網:https://lightningcss.dev/

代碼檢查器

ESLint 是目前前端工程中非常常用的一個工具,它可以幫助我們檢查代碼中的潛在問題,比如變量未使用、函數未使用、變量未定義等等。ESLint 本身是基于 JavaScript 開發的,但是它的性能一直是個問題,隨著項目規模的擴大,ESLint 的性能問題也逐漸暴露出來。因此近幾年誕生了基于 Rust 的 Lint 工具 OxcLint。

還記得上文中介紹的 Oxc 嗎?OxcLint 就是基于 Oxc 開發的,而且 OxcLint 的性能比 ESLint 快了 50 倍以上。

文檔框架

大家平時如果要快速搭建一個文檔站點、博客站點或者產品的主頁,可能會選擇 Docusaurus、VuePress、VitePress 等等,社區的這些框架確實可以很方便的幫助我們快速搭建一個文檔站點,但這些框架的性能卻成為了一個問題,基于 Vite 的 VitePress 雖然借助 Vite 在開發階段的優勢可以快速啟動,但在生產環境下,不得不使用 Rollup 打包,仍然”不夠快“。

而在這個領域,我們又有了一個新的選擇:Rspress。這個框架中也有相當多的 Rust 成分,比如基于 Rspack 進行構建、基于 Rust 編寫的 Markdown 編譯器,并且最終的性能也是很不錯的,基本能在一秒內啟動項目:

感興趣的朋友們不妨可以去了解一下。

Rspress 官網地址:https://rspress.dev

倉庫地址:https://github.com/web-infra-dev/rspress

術業有專攻

好,以上我們介紹了這么多 Rust 在前端領域的應用,那么我們不妨追問一句:到底是誰在寫這些東西呢?

如果我們將這些人簡單定義為前端開發者,那就有些不太負責任了。更準確地來說,Rust 前端工具應該屬于前端工程化基建的范疇,而這些工具的開發者,應該叫做基建工程師。工程化是前端領域的一個垂直方向,就跟可視化、前端安全一樣。而這個領域,并不需要每個前端開發者的參與,一般來說只需要少量的人去做就可以了。而之所以對于 Rust 化工具鏈這件事情大家會有這么多的關注,是因為這些工具和我們的日常開發息息相關,我們每天都在使用,所以才會有這么多的關注。但實際上我們必須要投入大量的精力去學習如何開發這些工具嗎?顯然不是,大部分人只需要會用就可以了,有余力的情況下了解一些原理即可。

從另外一個角度來說,如果提供工具的人,把一個工具的使用方法做的非常復雜,比如需要你要掌握 Rust 這門新語言才能寫插件,那說明工具的設計本身就是有問題的。一個好的工具,本質上是在有限的條件下盡可能地降低使用門檻,而不是為了達到另外一些目的而提高使用門檻。

作為前端,我要學 Rust 嗎?

介紹了這么多,讓我們回到最初的問題:作為一個前端開發者,我要學 Rust 嗎?

現在你可以反問自己一個更本質的問題:你為什么要學一門技術?不僅僅是 Rust,你可以把這個客體換成任何一門技術,比如 Vue、React、Flutter、跨端、SolidJS、ChatGPT 等等。

  • 是因為它有趣嗎?
  • 是因為它能夠幫助你解決實際問題嗎?
  • 是因為它能夠幫助你更容易通過面試和升職嗎?
  • 還是因為,大家都在談論,所以我也要學?

我想不同的人給出的答案也許是不同的。

如果你覺得 Rust 很有趣,那么事實上任何你覺得有趣的技術,你都可以去學習,能夠找到自己的興趣所在,這是一件非常好的事情,這種情況下你也不太可能會問出這樣的問題。

但是作為一個前端開發者,如果你想要通過 Rust 的學習來幫助你解決實際問題,或者追求更好的職業發展,我想在這里潑一盆冷水,Rust 并不是你必須要學習的技術。無論外界將 Rust 說得多么天花亂墜,無論大家對此談論得如何熱火朝天,你都沒有必要為此焦慮,因為在前端領域,Rust 僅僅只是那么一小部分人用來提升效率的手段,僅此而已,就跟你不會寫操作系統內核也同樣不會受到任何影響一樣。

雖然沒有必要去學習 Rust,但我始終認為保持一個開放的心態和寬闊的視野是很重要的,像 Rspack、SWC、Oxc、Rspress 等等這些基于 Rust 的具有顛覆性的前端工具,大家不妨可以多多了解一下,如果能將這些工具應用到實際的項目當中,那么你也能從中實際地受益。

責任編輯:姜華 來源: 三元同學
相關推薦

2016-03-25 09:29:24

Apple開發工具開發者

2014-10-31 10:10:49

2010-11-19 09:16:38

2018-09-29 15:27:05

BinderAPPAndroid

2017-01-16 13:15:19

前端開發者清單

2009-05-25 10:18:29

PHPLAMPGLAMMP

2015-07-21 10:42:17

API開發體驗Yo

2016-12-19 15:55:10

PHP開發者Composer

2017-02-06 09:22:19

PHP開發Composer

2020-02-11 12:17:53

開發命令

2010-09-07 09:01:07

開發者調查Android

2018-06-15 08:43:33

Java堆外內存

2019-03-12 10:38:18

前端開發Nginx

2023-05-25 09:44:37

谷歌開源

2024-03-20 08:12:12

分庫分表數據

2015-07-29 09:53:57

前端開發總結

2012-08-14 17:14:50

瀏覽器IE6

2021-04-08 10:40:24

前端工具代碼

2021-12-15 20:06:48

ReactJSSentry開發者

2012-06-20 15:01:25

iOS開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线免费观看日本视频 | 国产精品福利视频 | 亚洲高清在线观看 | 国产精品视频一区二区三区 | 国产亚洲欧美在线视频 | 国产一区二区三区 | 99久久精品免费看国产四区 | 国产日韩精品久久 | 久久综合影院 | 欧美国产一区二区 | 狠狠干狠狠操 | 涩涩视频网 | 亚洲一区免费 | 中文字幕一区二区三区不卡在线 | av网站免费观看 | 欧美精品一区二区三区在线播放 | 免费在线精品视频 | 亚洲黄色网址视频 | 久久久久久国产精品 | 天堂中文资源在线 | 99re在线视频 | 红色av社区| 免费高清av | 黄色av网站在线免费观看 | 欧美一级黄色免费 | 久久精品亚洲精品国产欧美kt∨ | 日本三级黄视频 | 91精品国产777在线观看 | 日本成人片在线观看 | 六月色婷 | 午夜精品久久久久久久久久久久 | 国产精品一区二区av | 国产伦精品一区二区 | 日本三级全黄三级a | 国产一区不卡 | 国产成人精品网站 | 国产精品区一区二 | 亚洲国产精品一区二区久久 | 天天久久| 国产精品久久精品 | 久久成人一区 |