日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

前端視角對Rust的淺析

來源: 責編: 時間:2024-02-29 14:41:01 230觀看
導讀概述本文將從 Rust 的歷史,前端的使用場景和業界使用案例一步步帶你走進 Rust的世界。并且通過一些簡單的例子,了解 Rust 如何應用到前端,提高前端的生產效率。Rust簡史2006年,軟件開發者Graydon Hoare在Mozilla工作期間,

概述

本文將從 Rust 的歷史,前端的使用場景和業界使用案例一步步帶你走進 Rust的世界。并且通過一些簡單的例子,了解 Rust 如何應用到前端,提高前端的生產效率。sik28資訊網——每日最新資訊28at.com

Rust簡史

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

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

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

第一個有版本號的Rust編譯器于2012年1月發布。Rust 1.0是第一個穩定版本,于2015年5月15日發布。sik28資訊網——每日最新資訊28at.com

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

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

sik28資訊網——每日最新資訊28at.com

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 實現。sik28資訊網——每日最新資訊28at.com

Rust 缺點

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

Rust 生產實踐優秀案例

Rust語言在IM客戶端的實踐 (https://juejin.cn/post/7336022842856177690)sik28資訊網——每日最新資訊28at.com

結合了 Rust 語言的優點,成功地解決高并發接待 & 多開。sik28資訊網——每日最新資訊28at.com

給 Web 前端工程師看的用 Rust 開發 wasm 組件實戰(https://juejin.cn/post/7308434321764794378)sik28資訊網——每日最新資訊28at.com

利用 Rust 生成的wasm,處理大量計算的場景,取得很好的收益。(https://juejin.cn/post/7303347466219569203)sik28資訊網——每日最新資訊28at.com

Bundler 的設計取舍:為什么要開發 Rspack?sik28資訊網——每日最新資訊28at.com

文章作者通過使用了 Webpack、Vite、Esbuild、Rollup 等構建工具,對各個工具的優劣處和設計取舍后決定采用rust提升構建工具的性能。sik28資訊網——每日最新資訊28at.com

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

Rust 在 WebAssembly 中的應用

WebAssembly 是什么?

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

wasm二進制內容如下圖sik28資訊網——每日最新資訊28at.com

圖片圖片sik28資訊網——每日最新資訊28at.com

如何生成 WebAssembly?

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

由于 Rust 生態天然支持 WebAssembly,并且有專門的生態去跟蹤和優化WebAssembly,我們可以利用 Wasm-Pack 腳手架生成 Wasm 項目。sik28資訊網——每日最新資訊28at.com

首先安裝 Rust 相關的環境,和 wasm-pack 腳手架。sik28資訊網——每日最新資訊28at.com

這是一個可以直接將你的 Rust 代碼打包成 Npm 包的工具,用法十分簡單,只有 4 個命令:sik28資訊網——每日最新資訊28at.com

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

圖片圖片sik28資訊網——每日最新資訊28at.com

Pkg hello_wasm.js 就是最終wasm 入口文件,sik28資訊網——每日最新資訊28at.com

html中異步引入sik28資訊網——每日最新資訊28at.com

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 的方法,可以通過sik28資訊網——每日最新資訊28at.com

#[wasm_bindgen(js_namespace = console)]

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

console.log() 的方式在 Rust 中輸出到 JavaScript 的控制臺。sik28資訊網——每日最新資訊28at.com

Rust 和 Node 的綁定

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

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

社區已經有成熟的 Napi-rs 來封裝 Native Addon。sik28資訊網——每日最新資訊28at.com

首先通過安裝 Napi-rs 腳手架生成項目sik28資訊網——每日最新資訊28at.com

圖片圖片sik28資訊網——每日最新資訊28at.com

生成的項目大概長這種模樣。通過執行 npm run build 我們可以生成 index.js和 napi-demo.darwin-arm64.node 二進制文件。sik28資訊網——每日最新資訊28at.com

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

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

總結

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

附錄

https://zhuanlan.zhihu.com/p/101118828sik28資訊網——每日最新資訊28at.com

https://developer.mozilla.org/zh-CN/docs/WebAssembly/Rust_to_wasmsik28資訊網——每日最新資訊28at.com

https://zhuanlan.zhihu.com/p/234914336sik28資訊網——每日最新資訊28at.com

https://www.zhihu.com/question/603518666/answer/3256663127sik28資訊網——每日最新資訊28at.com

https://juejin.cn/post/7336022842856177690sik28資訊網——每日最新資訊28at.com

https://juejin.cn/post/7317854227748847616sik28資訊網——每日最新資訊28at.com

https://zhuanlan.zhihu.com/p/677550790sik28資訊網——每日最新資訊28at.com

https://zh.wikipedia.org/zh-cn/Rustsik28資訊網——每日最新資訊28at.com

https://juejin.cn/post/7076354498691596325sik28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-75319-0.html前端視角對Rust的淺析

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 我們一起聊聊 Maven 依賴沖突問題

下一篇: Java的函數式接口編程示例

標簽:
  • 熱門焦點
  • K60至尊版剛預熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛如火如荼的宣傳了K60 Ultra的各種技術和硬件配置,作為競品的一加也坐不住了。一加中國區總裁李杰發布了兩條微博,表示在自家的一加Ace2上早就已經采用了和PixelWo
  • Mate60手機殼曝光 致敬自己的經典設計

    8月3日消息,今天下午博主數碼閑聊站帶來了華為Mate60的第三方手機殼圖,可以讓我們在真機發布之前看看這款華為全新旗艦的大致輪廓。從曝光的圖片看,Mate 60背后攝像頭面積依然
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • 電視息屏休眠仍有網絡上傳 愛奇藝被質疑“薅消費者羊毛”

    記者丨寧曉敏 見習生丨汗青出品丨鰲頭財經(theSankei) 前不久,愛奇藝發布了一份亮眼的一季報,不僅營收和會員營收創造歷史最佳表現,其運營利潤也連續6個月實現增長。自去年年初
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運營研究社作者 | 張知白編輯 | 楊佩汶設計 | 晏談夢潔這個暑期,旅游賽道徹底火了:有的「地方」火了——貴州村超旅游收入 1 個月超過 12 億;有的「博主」火了&m
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預警不絕,但處于厄爾尼諾大“烤”之下的除了眾生,還有各大企業發布的ESG報告。ESG是“環境保
  • 8月見!小米MIX Fold 3獲得3C認證:支持67W快充

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
  • 首發天璣9200+ iQOO Neo8系列發布首銷售價2299元起

    2023年5月23日晚,iQOO Neo8系列正式發布。其中,Neo系列首款Pro之作——iQOO Neo8 Pro強悍登場,限時售價3099元起;價位段最強性能手機iQOO Neo8同期上市
  • 由于成本持續增加,筆記本產品價格預計將明顯上漲

    根據知情人士透露,由于材料、物流等成本持續增加,筆記本產品價格預計將在2021年下半年有明顯上漲。進入6月下旬以來,全球半導體芯片缺貨情況加劇,顯卡、處理器
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美a级大片| 国产精品国产三级国产aⅴ9色| 玖玖玖免费嫩草在线影院一区| 亚洲欧美视频| 亚洲午夜激情网页| 国产精自产拍久久久久久| 欧美视频日韩视频在线观看| 欧美国产精品中文字幕| 久久字幕精品一区| 久久夜色精品国产| 久久午夜色播影院免费高清| 欧美国产视频在线| 国产精品你懂的在线| 国产精品美女主播| 在线日韩成人| 91久久精品美女高潮| 最新中文字幕一区二区三区| 亚洲精品1区2区| 亚洲一区二区av电影| 久久天天躁狠狠躁夜夜爽蜜月| 久久青青草综合| 欧美日韩一区二区欧美激情| 欧美日韩一区二区三区视频| 国产亚洲午夜| 国内精品伊人久久久久av影院| 国产一区二区三区四区在线观看| 狠狠网亚洲精品| 亚洲电影在线看| 亚洲黑丝在线| 中文日韩在线视频| 亚洲影院色在线观看免费| 亚洲综合色激情五月| 免费人成网站在线观看欧美高清| 欧美风情在线观看| 欧美片第一页| 欧美日韩喷水| 国产精品成人免费视频| 在线观看免费视频综合| 亚洲综合首页| 国产精品一二一区| 亚洲免费视频一区二区| 久久影视精品| 国产精品毛片| 欧美在线观看你懂的| 亚洲精品午夜| 欧美精品亚洲二区| 欧美一区三区三区高中清蜜桃| 亚洲欧美国产视频| 欧美国产日韩在线| 国产精品久久久久99| 狠狠久久亚洲欧美专区| 亚洲午夜伦理| 久久婷婷影院| 欧美日韩国产在线播放网站| 国产精品乱子久久久久| 激情成人综合| 夜夜嗨av一区二区三区四区| 午夜精品福利在线观看| 久久一区激情| 国产亚洲精品高潮| 亚洲精品免费观看| 午夜精品一区二区三区在线| 麻豆久久精品| 国内偷自视频区视频综合| 亚洲欧美中日韩| 欧美精品1区2区| 国产欧美日韩伦理| 亚洲人成毛片在线播放| 新67194成人永久网站| 欧美va亚洲va国产综合| 国外精品视频| 亚洲香蕉视频| 欧美色图一区二区三区| 国产在线高清精品| 欧美一级久久久| 欧美人交a欧美精品| 亚洲激情在线观看| 欧美gay视频激情| 亚洲第一毛片| 麻豆国产va免费精品高清在线| 黑人极品videos精品欧美裸| 久久精品首页| 国产精品日日摸夜夜添夜夜av | 欧美成人有码| 国产精品三级久久久久久电影| 在线亚洲自拍| 欧美激情第10页| 亚洲精品国产拍免费91在线| 欧美凹凸一区二区三区视频| 国产精品视频| 性刺激综合网| 国产一区二区电影在线观看| 亚洲免费福利视频| 另类av导航| 亚洲国产天堂久久综合| 免费成人美女女| 国产日韩欧美a| 亚洲精品国产无天堂网2021| 久久国产精品72免费观看| 欧美日本三级| 一区二区三区产品免费精品久久75| 免费国产一区二区| 国产日韩欧美在线观看| 亚洲专区一区二区三区| 国产精品日日摸夜夜添夜夜av| 午夜精品一区二区三区在线视| 欧美激情一区在线观看| 久久精选视频| 在线精品视频免费观看| 欧美激情第1页| 亚洲色图制服丝袜| 国产伦精品免费视频 | 狠狠干狠狠久久| 欧美在线视频免费| 欧美日韩亚洲视频一区| 一区二区在线视频| 欧美怡红院视频一区二区三区| 国产在线精品成人一区二区三区| 性色av一区二区三区在线观看 | 99国内精品久久| 欧美激情中文字幕一区二区| 伊人久久综合97精品| 麻豆国产精品777777在线| 国内精品美女av在线播放| 性色av一区二区怡红| 永久555www成人免费| 久久亚洲影院| 国产综合亚洲精品一区二| 欧美成人精品影院| 亚洲一区二区黄| 国产精品久久久久久户外露出| 亚洲婷婷综合色高清在线| 国产日韩精品一区| 欧美高清在线精品一区| 午夜精品福利在线观看| 亚洲激情在线观看| 国产精品自拍在线| 欧美国产日韩亚洲一区| 性18欧美另类| 亚洲精品日韩综合观看成人91| 国产精品综合不卡av| 欧美高清视频一区二区| 香港久久久电影| 亚洲精品中文字幕女同| 欧美精品手机在线| 欧美影院在线播放| 亚洲精品资源美女情侣酒店| 国产三区二区一区久久| 欧美精品自拍偷拍动漫精品| 欧美一区三区二区在线观看| 亚洲另类在线一区| 好看的亚洲午夜视频在线| 欧美视频一区二区三区四区| 久久一二三区| 亚洲免费久久| 好吊成人免视频| 一区二区三区欧美激情| 久久se精品一区精品二区| 欧美区一区二| 亚洲在线观看视频| 亚洲国产日韩欧美在线图片| 欧美日韩高清在线一区| 久久久久一区二区三区| 亚洲精选一区| 一区二区三区中文在线观看| 国产精品一区二区久久久久| 久久av资源网站| 亚洲一区二区免费| 亚洲精品久久在线| 国产精品日韩一区| 欧美精品高清视频| 亚洲欧美成aⅴ人在线观看| 亚洲精品国产精品国产自| 激情成人亚洲| 国产婷婷精品| 国产精品视频福利| 欧美日韩国产探花| 欧美激情在线播放| 免费观看日韩| 久久久综合网| 久久黄色网页| 一本色道久久88综合日韩精品| 国产乱肥老妇国产一区二 | 国产一区香蕉久久| 国产精品综合视频| 国产精品久久久久永久免费观看| 欧美破处大片在线视频| 嫩草国产精品入口| 老司机67194精品线观看| 久久久久久久久综合| 在线亚洲欧美视频| 亚洲美女在线国产| 亚洲精品美女在线| 亚洲激情影院| 亚洲区一区二区三区| 亚洲国产欧美一区| 亚洲国产成人av| 国产欧美精品xxxx另类| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久久久久久久久久成人| 久久精品视频播放| 亚洲一区二区黄| 亚洲综合精品一区二区| 亚洲欧美日韩天堂|