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

前端視角對Rust的淺析

開發 前端
隨著前端開發越來越卷,前端基建的效率也將是下一個值得投入的地方。并且隨著 Rust 和 WebAssembly 發展,網頁應用也有很大的發展空間。最后希望在深入學習 Rust 后,做出一些有意思的應用。

概述

本文將從 Rust 的歷史,前端的使用場景和業界使用案例一步步帶你走進 Rust的世界。并且通過一些簡單的例子,了解 Rust 如何應用到前端,提高前端的生產效率。

Rust簡史

2006年,軟件開發者Graydon Hoare在Mozilla工作期間,開始了Rust作為一個個人項目。根據他在麻省理工技術評論的一次采訪,Rust的靈感來自于Hoare公寓樓里一個壞掉的電梯。電梯操作系統的軟件崩潰了,Hoare意識到這類問題通常源于程序如何使用內存的問題。

通常,這些類型設備的軟件是用C或C++編寫的,但這些語言需要大量的內存管理,可能導致系統崩潰的錯誤。因此,Hoare著手研究如何創建一種既緊湊又無內存錯誤的編程語言。

Mozilla 于2009年開始贊助這個項目,并且在2010年首次公開。也在同一年,其編譯器源代碼開始由原本的 OCaml 語言轉移到用 Rust 語言,進行自我編譯工作,稱作“rustc”,并于2011年實際完成。這個可自我編譯的編譯器在架構上采用了 LLVM 作為它的后端。

第一個有版本號的Rust編譯器于2012年1月發布。Rust 1.0是第一個穩定版本,于2015年5月15日發布。

2021年2月8日,AWS、華為、Google、微軟以及 Mozilla 宣布成立Rust基金會,并承諾在兩年時間里每年投入不少于 100 萬美元的預算,以用于 Rust 項目的開發、維護和推廣

根據Rust 最新官方新聞,谷歌日前宣布向 Rust 基金會捐款 100 萬美元,這筆資金將用于改善 C++ 與 Rust 互操作性。谷歌當前正在使用 Rust 語言重寫在 Linux 核心之外的 Android 關鍵安全組件,從而進一步減少安全漏洞。而在 Android 13 中,就已經有約 21%的新原生代碼使用 Rust 語言開發。

Rust在前端能夠干什么?

  • SWC: 基于 Rust 的前端構建工具,可以理解為 Rust 版本的 Babel,但是性能有 10 倍提升。目前被 Next.js、Deno , Rspack等使用。
  • Tauri:Tauri 是目前最流行的 Electron 替代方案,通過使用 Rust 和 Webview2 成功解決了 Electron 的包體積大和內存占用高的問題。Atom 團隊也是看到了 Tauri 的成功,才決定基于 Rust 去做 Zed 編輯器。
  • Parcel2:零配置構建工具,特點是快速編譯和不需要配置,和 Vite、Webpack等打包比起來更加簡單,而且是基于 Rust 開發
  • Biome: 旨在取代許多現有的 JavaScript 工具,集代碼檢測、打包、編譯、測試等功能于一身。
  • Rspack: 基于 Rust 的高性能 Web 構建工具, 對標 Webpack, 兼容大部分Webpack api
  • Rocket: 可以幫助開發人員輕松編寫安全的Web應用程序, 對標 Expressjs,性能卓越,具體參考 Web Frameworks Benchmark
  • Yew: 使用 Rust 開發 h5 頁面,支持類 jsx 的語法,和 React 類似開發前端網頁,打包產物是 wasm,挺有趣。
  • Napi-rs: 用 Rust 和 N-API 開發高性能 Node.js 擴展,可以替代之前用 C++ 開發的 Node.js 擴展,許多基于 Rust 語言開發的前端應用都結合這個庫進行使用。

Rust為什么大受歡迎

  • 高性能:所有程序都必須管理其運行時使用計算機內存的方式。一些語言(比如:JavaScript )中具有垃圾回收機制,在程序運行時不斷地尋找不再使用的內存,在另一些語言中,程序員必須親自分配和釋放內存。Rust 則選擇了第三種方式:通過所有權系統管理內存,編譯器在編譯時會根據一系列的規則進行檢查。如果違反了任何這些規則,程序都不能編譯。正是這種內存管理機制,使得 Rust 有驚人的內存利用率。
  • 內存安全:Rust 豐富的類型系統和所有權模型保證了內存安全,讓你在編譯期就能夠消除各種各樣的錯誤。Rust 通過所有權系統管理內存,編譯器在編譯時會根據一系列的規則進行檢查,如果違反了任何這些規則,程序都不能編譯。
  • 線程安全:Rust 通過一整套基礎設施和類型檢查,強迫這些線程問題暴露在編譯階段,相比花費大量時間嘗試重現運行時并發 bug 出現的特定情況,Rust 會拒絕編譯不正確的代碼并提供解釋問題的錯誤信息。

同時大量頭部公司比如華為,微軟,字節的應用和推廣,使得rust快速占領著前端基礎設施領域。Webpack、Babel、Prettier 這些熱門工具都已有了 Rust 替代方案,且性能有著 10~100 倍的提升。任何能夠用 Rust 實現的應用系統,最終都必將用 Rust 實現。

Rust 缺點

  1. 學習曲線陡峭:Rust 擁有復雜的語法和嚴格的規則,對于初學者來說可能會感到困難和挑戰。
  2. 編譯時間長:由于 Rust 的編譯器進行了大量的靜態檢查和優化,編譯時間可能相對較長,特別是對于大型項目。希望未來 Rust 針對這塊做出更多優化
  3. 生態系統相對不太完善:相比其他編程語言,Rust 的生態系統相對較小,可能缺乏一些常見的庫和工具。
  4. 錯誤處理繁瑣:Rust 采用了 Result 和 Option 等類型來處理錯誤和空值,這要求開發人員進行顯式的錯誤處理,導致一些額外的編碼工作量。

Rust 生產實踐優秀案例

Rust語言在IM客戶端的實踐 (https://juejin.cn/post/7336022842856177690)

結合了 Rust 語言的優點,成功地解決高并發接待 & 多開。

給 Web 前端工程師看的用 Rust 開發 wasm 組件實戰(https://juejin.cn/post/7308434321764794378)

利用 Rust 生成的wasm,處理大量計算的場景,取得很好的收益。(https://juejin.cn/post/7303347466219569203)

Bundler 的設計取舍:為什么要開發 Rspack?

文章作者通過使用了 Webpack、Vite、Esbuild、Rollup 等構建工具,對各個工具的優劣處和設計取舍后決定采用rust提升構建工具的性能。

通過上面幾個案例我們可以看到,對于前端我們前端來說,利用 Rust 可以做一些計算量比較大wasm和一些構建工具相關的基礎設施收益還是比較大的。當然也可以做跨端應用,可以參考用 Rust 實現跨平臺開發(iOS/Android/Web)經驗分享(https://zhuanlan.zhihu.com/p/677550790)

Rust 在 WebAssembly 中的應用

WebAssembly 是什么?

WebAssembly 是一門不同于 JavaScript 的語言,WebAssembly 是一門低級的類匯編語言。它有一種緊湊的二進制格式,使其能夠以接近原生性能的速度運行,并且為諸如 C++ 和 Rust 等擁有低級的內存模型語言提供了一個編譯目標以便它們能夠在網絡上運行。

wasm二進制內容如下圖

圖片圖片

如何生成 WebAssembly?

  • 使用 Emscripten 移植一個 C/C++ 應用程序。
  • 直接在匯編層,編寫或生成 WebAssembly 代碼。
  • 編寫 Rust 程序,將 WebAssembly 作為它的輸出。
  • 使用 AssemblyScript,它類似于 TypeScript 并且可編譯成二進制 WebAssmebly 代碼

由于 Rust 生態天然支持 WebAssembly,并且有專門的生態去跟蹤和優化WebAssembly,我們可以利用 Wasm-Pack 腳手架生成 Wasm 項目。

首先安裝 Rust 相關的環境,和 wasm-pack 腳手架。

這是一個可以直接將你的 Rust 代碼打包成 Npm 包的工具,用法十分簡單,只有 4 個命令:

  • new:使用模板生成一個新的 Rust Wasm 項目
  • build: 從 Rust Wasm Crate 生成一個 Npm Wasm Pkg
  • test:運行瀏覽器測試
  • pack 和 publish:創建壓縮包,發布到鏡像倉庫

圖片圖片

Pkg hello_wasm.js 就是最終wasm 入口文件,

html中異步引入

const { default: init } = await import("./pkg/hello_wasm.js");
const res = await init();

異步引入 hello_wasm.js 后,會自動加載 hello_wasm_bg.wasm 二進制文件,res 可以獲取從二進制得到的變量。間接從獲得了從 Rust 語言到 Js 傳遞,當然 Rust 也可以調用 Js 的方法,可以通過

#[wasm_bindgen(js_namespace = console)]

通過在 Rust 函數或結構體上使用 #[wasm_bindgen] 屬性和相應的配置,我們可以將 Rust 代碼暴露給 JavaScript 使用,以實現跨語言的交互和調用。在這種情況下,#[wasm_bindgen(js_namespace = console)] 指定了 JavaScript 中的 console 對象的命名空間,使得我們可以使用類似于 

console.log() 的方式在 Rust 中輸出到 JavaScript 的控制臺。

Rust 和 Node 的綁定

哪些功能適合用 Native Addon 來完成

  • 簡單的輸入輸出但是中間邏輯復雜的計算邏輯,比如直接用到 CPU simd 指令的 @node-rs/crc32 , 或者加密算法 @node-rs/bcrypt, 中文分詞 @node-rs/jieba 。這些庫的邏輯都有一個共同點:輸入輸出都非常簡單(避免額外的 N-API 調用), 中間計算邏輯非常復雜。
  • 一些需要調用系統級 API 能力的庫,比如提到的 SIMD 指令,還有類似 GPU 調用等。

社區已經有成熟的 Napi-rs 來封裝 Native Addon。

首先通過安裝 Napi-rs 腳手架生成項目

圖片圖片

生成的項目大概長這種模樣。通過執行 npm run build 我們可以生成 index.js和 napi-demo.darwin-arm64.node 二進制文件。

const demo = require("./index.js");

引入 index.js 就可以獲取到 Rust lib.rs 中暴露的變量和方法了。其實像 Swc,Rspack 這些重計算的工具底層也是通過此庫進行 Rust 語言和 Nodejs 進行交互的。Rust 提供一些核心底層能力,Node 可以結合現有的生態調用經過 Rust生成二進制文件創造更多性能卓越的應用。

總結

隨著前端開發越來越卷,前端基建的效率也將是下一個值得投入的地方。并且隨著 Rust 和 WebAssembly 發展,網頁應用也有很大的發展空間。最后希望在深入學習 Rust 后,做出一些有意思的應用。

附錄

https://zhuanlan.zhihu.com/p/101118828

https://developer.mozilla.org/zh-CN/docs/WebAssembly/Rust_to_wasm

https://zhuanlan.zhihu.com/p/234914336

https://www.zhihu.com/question/603518666/answer/3256663127

https://juejin.cn/post/7336022842856177690

https://juejin.cn/post/7317854227748847616

https://zhuanlan.zhihu.com/p/677550790

https://zh.wikipedia.org/zh-cn/Rust

https://juejin.cn/post/7076354498691596325

責任編輯:武曉燕 來源: 大轉轉FE
相關推薦

2022-01-19 09:00:51

UI前端手機開發

2023-03-31 09:02:37

前端客服通信

2022-11-01 09:02:04

前端售后業務

2011-01-21 17:09:06

Zimbra

2024-02-27 13:03:38

前端視頻合成FFmpeg

2023-08-08 14:56:27

ParcelRustDemo

2024-06-18 13:36:29

2009-09-15 10:35:11

linq多表查詢

2021-10-29 05:53:51

前端測試開發代碼

2024-07-26 10:28:51

2024-05-22 10:03:59

2010-09-16 11:05:43

2021-02-16 11:04:26

RustGo華為

2017-04-12 11:46:46

前端瀏覽器渲染機制

2021-03-15 06:24:22

Nacos集群搭建微服務

2024-03-12 08:22:50

TypeScriptRust框架

2018-01-27 21:19:06

前端Rust Service

2021-09-18 23:16:08

數字貨幣支付技術

2009-07-10 16:20:06

MyEclipse D

2009-07-21 17:39:50

iBATIS的多對多映
點贊
收藏

51CTO技術棧公眾號

国产精品成人久久| 亚洲精品国久久99热| 欧美日韩国产精品一区| 国产精品久久久久久久9999| 野花视频免费在线观看| 黄视频在线播放| 精品久久亚洲| 亚洲欧美网站| 日韩午夜av电影| 日韩亚洲欧美精品| 国产成人在线免费视频| 伊人久久综合网另类网站| 久久精品这里都是精品| 久久人人爽人人| 亚洲精品视频三区| 国产黄色在线| 亚洲一区二区成人| 亚洲电影免费观看高清完整版在线观看 | 老司机在线永久免费观看| 亚洲香蕉av| 91福利在线免费观看| 蜜桃av久久久亚洲精品| 日韩大片免费在线观看| 亚洲国产视频二区| 一区二区三区中文字幕| 免费观看成人高| 国产欧美日韩综合精品一区二区三区| 日韩成人三级| 欧美日韩国产综合视频在线观看| 三级三级久久三级久久18| 一级一片免费看| 精品国产中文字幕第一页| 色噜噜久久综合| 18禁裸男晨勃露j毛免费观看| 亚洲精品中文字幕成人片| 精品91视频| 亚洲激情免费观看| 女人喷潮完整视频| 国产网站在线播放| 成人精品一区二区三区中文字幕| 国内外成人免费激情在线视频网站 | 青青草原免费观看| 日本伊人久久| 亚洲一级电影视频| 精品一区二区三区免费毛片| 青青国产在线观看| 欧美午夜不卡影院在线观看完整版免费| 日韩小视频在线观看专区| 91最新在线观看| 黄网站在线免费看| 国产精品视频第一区| 91亚洲精华国产精华| 欧美黄片一区二区三区| 久久香蕉网站| 欧美日韩色一区| 8x8x华人在线| 青青久在线视频| 美女脱光内衣内裤视频久久影院| 日韩网站免费观看高清| 国产sm在线观看| 色网在线免费观看| 国产精品久久久久一区二区三区| 日本精品一区| 亚洲国产精品国自产拍久久| 国内精品国产三级国产a久久| 久久久久久久久综合| av永久免费观看| 57pao国产一区二区| 日韩视频在线观看一区二区| 日韩av自拍偷拍| 免费观看亚洲天堂| 日韩欧美高清一区| 不要播放器的av网站| 国产在线高清理伦片a| 亚洲欧洲精品天堂一级| 欧美二区三区在线| 国产福利第一视频| 奇米影视一区二区三区| 久久久久久午夜| 日本一区二区网站| 蜜乳av另类精品一区二区| 欧美猛少妇色xxxxx| 中文字幕免费在线看线人动作大片| 奇米狠狠一区二区三区| 精品国产一区二区三区久久久蜜月| 日日摸天天爽天天爽视频| 成人av色网站| 午夜欧美视频在线观看| 天天干天天色天天爽| 韩国免费在线视频| 国产精品人成在线观看免费| 天堂av免费看| 91最新在线| 99九九99九九九视频精品| 成人免费直播live| 精品一区二区无码| 99精品国产在热久久婷婷| 久久视频在线免费观看| 欧美人与性囗牲恔配| 久久国产成人精品| 国语自产精品视频在线看抢先版图片| 五月天综合激情网| 久久99精品久久久久久国产越南 | 久久久久国产精品一区三寸 | 无码一区二区三区在线观看| 国内精品视频666| 国产在线观看一区| 超碰在线人人干| 国产专区欧美精品| 国产在线高清精品| 中文字幕乱码视频| 日韩激情一区二区| 国产精品成熟老女人| aaa一区二区三区| 国产亚洲精品aa| 欧美一级爽aaaaa大片| av网站网址在线观看| 亚洲青青青在线视频| 正在播放久久| 成人在线观看亚洲| 亚洲综合色在线| 国产成人艳妇aa视频在线| 91极品在线| 欧美专区亚洲专区| jizzzz日本| 色综合视频一区二区三区日韩| 欧美视频中文一区二区三区在线观看| 午夜免费一区二区| 99re91这里只有精品| 欧美精品一区二区三区一线天视频| 影音先锋制服丝袜| 欧美亚洲三级| 国产日韩欧美精品| 污片在线免费观看| 亚洲成人免费在线观看| 欧美啪啪免费视频| 性感美女一区二区在线观看| 欧美亚洲国产一区二区三区va| 亚洲国产精品第一页| 一区二区三区在线资源| zzijzzij亚洲日本成熟少妇| 成人午夜淫片100集| 日韩av不卡一区二区| 久久精品国产99精品国产亚洲性色| 神马精品久久| 国产精品乱码一区二区三区软件| a√天堂在线观看| 日韩制服一区| 日韩一区二区电影| 天天做夜夜爱爱爱| 亚洲黄页一区| 国产高清在线不卡| 国产黄色片网站| 亚洲女女做受ⅹxx高潮| 91九色在线观看视频| 精品国产导航| 午夜精品在线视频| 在线观看xxxx| 懂色av一区二区夜夜嗨| 欧美国产一区二区在线| av资源亚洲| 日韩一级免费一区| 青青草免费av| 成人精品在线视频观看| 成人免费视频91| 久久亚洲国产精品尤物| 亚洲国产精品99久久| 在线看成人av| 久久综合九色综合欧美亚洲| av中文字幕av| 亚洲精品一二三**| 91精品国产91久久久| 国产又黄又大又爽| 97久久超碰国产精品电影| 99热在线这里只有精品| 欧美精选一区二区三区| 成人激情视频在线| 国产深夜视频在线观看| 欧美剧情片在线观看| 日韩 中文字幕| 韩国在线一区| 国产日本欧美在线观看 | 国产一区二区三区黄网站| 日韩精品在线第一页| 欧美日韩精品在线观看视频| 国产成人激情av| 日韩欧美一区三区| 欧美日韩一区二区三区视频播放| 91久久精品一区| 三妻四妾完整版在线观看电视剧 | av毛片在线看| 日韩成人在线视频网站| 美女的奶胸大爽爽大片| 成人免费黄色大片| 激情婷婷综合网| 91精品蜜臀一区二区三区在线| 国产成人在线精品| 色的视频在线免费看| 91高清视频在线| 99精品久久久久| 久久亚洲免费视频| 婷婷激情综合五月天| 国产精品久久久久9999赢消| 国产成人+综合亚洲+天堂| 免费av在线播放| 日韩av影院在线观看| 91精品国产综合久| 国产精品看片你懂得| 九色91porny| 日韩av网站免费在线| www.成年人视频| 国产99久久久国产精品成人免费 | aa片在线观看视频在线播放| 久久成人精品无人区| 国产原创中文在线观看 | 亚洲国产精品无码av| 日韩免费视频| 蜜桃视频日韩| 国产精品极品| 国内精品久久久久久影视8| 91官网在线| 亚洲精品视频在线播放| 精品国产一级片| 欧美四级电影网| 在线精品免费视| www国产成人免费观看视频 深夜成人网 | 图片区 小说区 区 亚洲五月| 亚洲高清免费观看高清完整版在线观看 | 精品自拍视频| 日韩美女在线播放| 欧美女子与性| 色国产综合视频| 精品在线视频免费观看| 成人99免费视频| 国产精品秘入口18禁麻豆免会员| 91精品精品| 最新不卡av| 久久精品高清| 超碰97在线资源| 麻豆免费在线| 久久免费少妇高潮久久精品99| 影音先锋中文在线视频| www.欧美三级电影.com| 午夜免费福利在线观看| 中文综合在线观看| www.天天干.com| 884aa四虎影成人精品一区| 欧美黄色一级网站| 亚洲日本丝袜连裤袜办公室| 亚洲怡红院在线观看| 国产精品毛片大码女人| 黄色av片三级三级三级免费看| 国产一区二区三区国产| 亚洲欧美国产中文| 麻豆免费精品视频| cao在线观看| 国产精品v亚洲精品v日韩精品| 男人添女人下部视频免费| 欧美精品黄色| 欧美高清中文字幕| 亚洲二区在线| 免费成人午夜视频| 香蕉亚洲视频| 北条麻妃视频在线| 亚洲国产导航| 毛片在线播放视频| 久久一二三四| 欧美 亚洲 视频| 国产剧情一区| 天堂资源在线亚洲资源| 91亚洲国产| 国产尤物av一区二区三区| 亚洲日本激情| 能在线观看的av网站| 美美哒免费高清在线观看视频一区二区 | 欧美无砖专区一中文字| 国产精品老熟女视频一区二区| 欧美一级片在线看| 全部免费毛片在线播放一个| 欧美日韩国产小视频在线观看| 91尤物国产福利在线观看| 欧美一区午夜精品| 中文精品久久久久人妻不卡| 亚洲第一成人在线| 国产又粗又爽视频| 欧美日韩aaa| 秋霞欧美在线观看| 夜夜嗨av色一区二区不卡| 色偷偷在线观看| 日韩午夜激情视频| 亚洲 小说区 图片区 都市| 国产午夜精品一区理论片飘花| 香蕉视频网站在线| 中文字幕欧美日韩va免费视频| 天堂va在线| 国产精品6699| 成人性生交大片免费看中文视频| 日韩欧美一区二区三区久久婷婷| 91精品国产自产在线观看永久∴| 日本手机在线视频| 精品一区二区三区视频| 给我看免费高清在线观看| 亚洲视频在线一区二区| 成人免费区一区二区三区| 一区二区在线观看不卡| 国产黄网在线观看| 欧美成人乱码一区二区三区| 99久久久无码国产精品免费| 日韩精品视频免费在线观看| 国产福利视频在线| 国产精品av电影| 欧美jizz19性欧美| 久久大香伊蕉在人线观看热2| 久久成人综合| 日本成年人网址| 久久国产精品久久w女人spa| 午夜xxxxx| 欧美激情一区在线| 精品女人久久久| 亚洲欧洲精品一区二区精品久久久| 日本网站在线播放| 91精品国产欧美一区二区18| 九色在线播放| 午夜精品在线视频| 中文字幕久久精品一区二区| 亚洲一区二区精品在线| 国产精品久久观看| 热久久精品免费视频| 成人av电影在线观看| 日本妇女毛茸茸| 欧美精品乱码久久久久久按摩| 国产精品一级伦理| 欧美最顶级的aⅴ艳星| 精品成人免费一区二区在线播放| 精品乱码一区二区三区| 国产精品久久| av地址在线观看| 亚洲欧美日韩小说| 国产乱色精品成人免费视频| 日韩在线视频中文字幕| 青春草免费在线视频| 欧美在线观看网址综合| 欧美一区二区三区婷婷| 日韩视频专区| 日韩极品在线观看| 五月天综合视频| 综合中文字幕亚洲| 91成年人视频| 啊v视频在线一区二区三区| 国产精品美女午夜爽爽| 亚洲精蜜桃久在线| 黄色在线成人| 爱情岛论坛亚洲自拍| 亚洲另类在线一区| a在线观看视频| 欧美乱大交做爰xxxⅹ性3| 欧一区二区三区| 青青在线免费观看| 91首页免费视频| 日日夜夜综合网| 国产香蕉精品视频一区二区三区| 欧洲成人一区| 综合视频在线观看| 国产剧情一区在线| 国产成人在线网址| 欧美精品日日鲁夜夜添| 在线中文字幕电影| 国产伦精品一区二区三区视频黑人 | 亚洲一区亚洲二区亚洲三区| 欧美性生活一级片| heyzo国产| 国产清纯在线一区二区www| 亚洲自拍偷拍另类| 欧美成人手机在线| 欧美大片网站| 美女av免费观看| 99精品欧美一区二区三区小说| 中文字幕免费观看| x99av成人免费| 红杏成人性视频免费看| 久久久久狠狠高潮亚洲精品| 国产精品丝袜一区| 99精品人妻国产毛片| 日韩最新免费不卡| 国偷自产av一区二区三区| 久久精品99国产| 亚洲欧美日韩精品久久久久| 黄色a在线观看| 欧美一级一片| 国产精品一区二区在线观看| 亚洲精品护士| 免费成人深夜天涯网站| 五月婷婷色综合| 国产专区在线| 亚洲最大成人网色| 亚洲尤物影院| 五月综合色婷婷| 欧美日韩国产乱码电影| 午夜伦理在线视频| 日本一区二区三区视频在线观看|