亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久

干貨教程:Rust跨界前端全攻略

優(yōu)采云 發(fā)布時(shí)間: 2022-11-07 22:28

  干貨教程:Rust跨界前端全攻略

  出品 | CSDN(ID:CSDNnews)

  眾所周知,Rust 的學(xué)習曲線(xiàn)極其陡峭,學(xué)習過(guò)程中的挫折感非常強。像筆者這樣有十幾年開(kāi)發(fā)經(jīng)驗的人,往往需要幾天的時(shí)間才能弄清楚一個(gè)小細節。詳情請參考上一篇文章?!皬膬却娌季謥?lái)看,是 Rust 的 fat 指針 fat on stack 還是 fat on the heap”。所以,在學(xué)習和掌握Rust的過(guò)程中,還是需要一些不那么硬核的知識點(diǎn)來(lái)穿插點(diǎn)綴。

  Nicolas Frankel 一直是我密切關(guān)注的 Rust 技術(shù)專(zhuān)欄作家之一。最近看到他關(guān)于Rust和JS結合構建Serverless WebAssembly的文章文章,頓時(shí)覺(jué)得眼前一亮。這篇文章文章沒(méi)有繁瑣的權限轉移機制、智能指針等項,跟著(zhù)作者的代碼樣例去模仿,這方面的知識也比較實(shí)用。干得好文章,把所有精彩的文章分享給大家。

  我們知道 JavaScript 是唯一可以認為是通用語(yǔ)言的前端語(yǔ)言,各種前端流行的框架本質(zhì)上都是基于 JavaScript 的。雖然為前端生成的 JavaScript 存在性能、并發(fā)等諸多先天不足,但也應該看到,JavaScript 開(kāi)發(fā)者社區仍在大幅增長(cháng),圍繞前端 JavaScript 的生態(tài)也日益繁榮,前端終端技術(shù)正在迅速變化。幾年前的霸主Flash,差點(diǎn)直線(xiàn)摔倒,被H5徹底秒殺。從 NodeJS、DENO 到 Vue.js,各種新的框架也層出不窮,大家應接不暇??梢哉f(shuō),JS系統的繁榮是有目共睹的。

  盡管大多數關(guān)于語(yǔ)言?xún)?yōu)劣的爭論都沒(méi)有實(shí)際意義,但不可否認的是,JavaScript 經(jīng)常處于編程語(yǔ)言蔑視鏈的底部。很多程序員認為 JS 之所以能幸存下來(lái),是因為它將執行腳本代碼的職責從服務(wù)端轉移到了客戶(hù)端,這為服務(wù)端減輕了很多壓力。但是,相對而言,客戶(hù)的壓力卻大大增加了。前端程序員想要提升在線(xiàn)體驗,幾乎只能推薦用戶(hù)購買(mǎi)功能更強大、價(jià)格更高的手機、PAD 或 PC。而對 JavaScript 引擎的優(yōu)化似乎依賴(lài)于 Rust 來(lái)完成。在介紹以下解決方案之前,我們先來(lái)了解一下 WebAssembly。

  WebAssembly(縮寫(xiě)為 Wasm)是一種用于基于堆棧的虛擬機的二進(jìn)制指令格式。Wasm 被設計為編程語(yǔ)言的可移植編譯目標,支持在 Web 上部署客戶(hù)端和服務(wù)器應用程序。

  總的來(lái)說(shuō),Wasm 并不是要取代 JavaScript,而是要提高前端和后端交互的整體性能。雖然 Rust 主要用于后端,但它的特性確實(shí)有助于提高 WebAssembly 的編譯、啟動(dòng)和運行速度。讓我們來(lái)看看 Rust+Wasm 的強大之處。

  Rust 和 WebAssembly 第一個(gè) Rust 項目

  我們的第一步重點(diǎn)是讓大家了解設置方法,這是一個(gè)Ctrl+C、Ctrl+V風(fēng)格的復制粘貼項目。該項目利用一個(gè)高效的 Cargo 插件 cargo-generate 來(lái)提高項目管理效率,它允許使用現有的 Git 存儲庫作為模板創(chuàng )建新項目。在這種情況下,模板是要編譯的 Wasm Rust 項目。具體項目的樹(shù)形結構如下:

  這是一個(gè)非常典型的 Rust 項目結構?,F在讓我們看一下 Cargo.toml 文件。

  [package] name = "wasm-game-of-life"version = "0.1.0"authors = ["Nicolas Frankel "]edition = "2018"

[lib] crate-type = ["cdylib", "rlib"]

[features]default = ["console_error_panic_hook"]

[dependencies]wasm-bindgen = "0.2.63"

# Rest of the file omitted for clarity purposes

  這里 Cargo.toml 實(shí)際上在前端項目中扮演 pom.xml 的角色。這里列出了有關(guān)包、依賴(lài)項、編譯提示等的元信息,并定義了與 Wasm 的依賴(lài)項。當然這個(gè)項目目前還不是很有趣,但是我們會(huì )慢慢構建一個(gè)項目,讓 Wasm 的 Rust 代碼高效交互。

  接下來(lái)讓我們運行命令:

  npm init wasm-app www

  您將看到以下輸出結構:

  wasm-game-of-life/└── www/ ├── package.json ├── webpack.config.js ├── index.js ├── bootstrap.js └── index.html

  其中 webpack.config.js 是調用 Wasm 代碼的入口點(diǎn),index.js 是異步加載器包裝器。完成以上步驟后,我們只要完成以下四個(gè)步驟,就可以執行整個(gè) Wasm 代碼鏈。

  

  將 Rust 代碼編譯為 Wasm

  生成 JavaScript 適配器代碼

  安裝 npm 依賴(lài) npm install

  執行 npm run start

  瀏覽到 :8080 會(huì )顯示一條簡(jiǎn)單的警報消息。

  在帶普通讀者再次做教程之前,我先在這里給出一些有意義的結論。也就是在結合Wsam+Rust的過(guò)程中,可以歸結為以下三個(gè)步驟:

  從 JavaScript 調用 Rust

  從 Rust 調用 JavaScript

  從 Rust 調用瀏覽器 API

  從 JavaScript 調用 Rust

  好吧,讓我們一點(diǎn)一點(diǎn)地完成這些步驟,要從 JavaScript 調用 Rust,您需要將 Rust 代碼編譯為 Wasm 并提供一個(gè)瘦 JavaScript 包裝器。Rust中的具體方案如下:

  #[wasm_bindgen] pub fn foo { // do something}

  JavaScript 代碼示例如下:

  import * as wasm from "hello-wasm-pack"; wasm.foo;

  將 hello-wasm-pack 包中的所有內容導入 wasm 命名空間后,用戶(hù)可以調用 foo 函數。

  從 Rust 調用 JavaScript

  Rust 調用 JavaScript 函數時(shí),需要通過(guò) extern 關(guān)鍵字聲明使用外部函數接口,如下:

  #[wasm_bindgen]extern "C" { #[wasm_bindgen(js_namespace = Math)] fn random -> f64;}

#[wasm_bindgen]fn random_boolean -> bool { random < 0.5 }

  

  請注意,雖然這里的關(guān)鍵字是 extern "C",但這不是 C 代碼,這是 Rust 中的正確語(yǔ)法,所以我們可以直接使用它。接下來(lái),您需要設置 js 沙箱(js-sys crate)。如果您想了解更多相關(guān)內容,可以參考以下鏈接:

  接下來(lái)需要在cargo.toml中添加js-sys,如下:

  貨運.toml

  [dependencies]js-sys = { version = "0.3.50", optional = true } [features]default = ["js-sys"]

  上述配置將允許在 js 沙箱中使用以下代碼:

  use js_sys::Math;

#[wasm_bindgen]fn random_boolean -> bool { Math::random < 0.5 }

  上面代碼中的 Math.random 語(yǔ)句將達到 JavaScript 在運行時(shí)被 rust 調用的目的。

  從 Rust 調用瀏覽器 API

  當然,僅僅調用JavaScript是不夠的,因為很多客戶(hù)端API,比如console.log,都需要調用瀏覽器API。

  下面是配置方案:

  貨運.toml

  [dependencies]web-sys = { version = "0.3", features = ["console"] }

  配置完成后,我們可以使用如下示例調用瀏覽器API:

  wasm.rs

  extern crate web_sys; use web_sys::console; #[wasm_bindgen]impl Foo { pub fn new -> Foo { utils::set_panic_hook; Universe {} } pub fn log(&self) { console::log_1("Hello from console".into); }}

  綜上所述

  再說(shuō)一遍,前端使用Rust的三個(gè)要點(diǎn)是:從JavaScript調用Rust,從Rust調用JavaScript,從Rust調用瀏覽器API。

  實(shí)操干貨:淺談跨境電商獨立站出海,SEO必備引流工具

  作為吸引獨立網(wǎng)站流量的一種手段,SEO工具對于獨立網(wǎng)站賣(mài)家來(lái)說(shuō)非常重要。

  通過(guò) SEO 自然排名靠前的獨立網(wǎng)站將比通過(guò)廣告排名靠前的 網(wǎng)站 更可信,并擁有更多的自然流量。

  許多獨立網(wǎng)站賣(mài)家正遭受廣告燒錢(qián)之苦。無(wú)論是社交媒體推廣還是谷歌展示位置,都沒(méi)有得到很好的轉化。一定是他們在SEO方面做得不好。

  根據谷歌的算法,只要你的內容和產(chǎn)品質(zhì)量足夠好,往往可以事半功倍。

  工人要做好工作,首先要磨利他的工具。

  SEO(搜索引擎優(yōu)化)工具將賣(mài)家從繁瑣的關(guān)鍵字研究和數據分析中解放出來(lái)。

  使用這些工具,可以查看哪些 關(guān)鍵詞 正在工作,哪些可以繼續優(yōu)化。

  一個(gè)好的 SEO 工具甚至會(huì )提供有關(guān)如何衡量競爭對手和最大機會(huì )的報告。

  谷歌搜索控制臺

  ( )

  Google Search Console 可以監控和報告 網(wǎng)站 在 Google SERP 中的存在。

  這個(gè)工具對新的 網(wǎng)站 尤其有用,因為它允許 網(wǎng)站 所有者提交網(wǎng)頁(yè)以進(jìn)行搜索索引。強烈建議不熟悉獨立網(wǎng)站的朋友可以開(kāi)始學(xué)習。

  多說(shuō),這是免費的,賣(mài)家搶購。

  谷歌分析

 ?。ǎ?條款)

  Google Analytics 是 SEO 和互聯(lián)網(wǎng)營(yíng)銷(xiāo)人員使用的最流行的分析工具之一,因為它為獨立賣(mài)家提供了大量有關(guān) 網(wǎng)站 流量的信息。

  獨立賣(mài)家可以從第一次訪(fǎng)問(wèn) 網(wǎng)站 以及他們如何登陸 網(wǎng)站 的人口統計數據中查看所有信息。

  Ahrefs:SEO 關(guān)鍵詞 工具

  (%3A///)

  

  Ahrefs 是最受推薦的在線(xiàn) SEO 工具之一。

  就最大的網(wǎng)站爬蟲(chóng)而言,它僅次于谷歌。

  該工具將突出網(wǎng)站需要改進(jìn)的地方以及如何在搜索引擎中獲得更好的排名。

  從競爭對手分析的角度來(lái)看,Ahrefs 可用于識別競爭對手的反向鏈接,以用作您自己品牌的起點(diǎn)。

  我們還可以使用這個(gè) SEO 工具來(lái)檢查和修復 網(wǎng)站 上的損壞鏈接,并了解性能最佳的頁(yè)面(這樣您就可以了解訪(fǎng)問(wèn)者),但它是付費的。

  鐵線(xiàn)蓮

  ( )

  這個(gè)工具的強大之處在于它可以抓取熱門(mén)關(guān)鍵詞,然后通過(guò)這些關(guān)鍵詞聯(lián)系人生成相應的熱門(mén)內容。在此工具上輸入一些 關(guān)鍵詞 將獲得關(guān)聯(lián)的 關(guān)鍵詞 或描述。

  但它是有償的。

  小貼士:

  抖音熱詞SEO

  具體操作方法:通過(guò)本工具中的“洞察面板”顯示主題之間的差距。

  比如醫療保健的“太極”和“斗士”這兩個(gè)話(huà)題看似無(wú)關(guān),但是通過(guò)這個(gè)工具,可以自動(dòng)生成關(guān)系網(wǎng)絡(luò ),拉近兩個(gè)話(huà)題,最后得到一個(gè)內容整合了這樣一個(gè)內容就可以產(chǎn)生——“合氣道對太極拳的發(fā)展起到了什么影響?”

  類(lèi)似網(wǎng)站

  ( )

  SametimeWeb 可以觀(guān)察競爭對手的網(wǎng)站流量、廣告來(lái)源和其他網(wǎng)站 詳細信息,是最通用的競爭對手站點(diǎn)分析工具之一。

  這將顯示您的大多數競爭對手的流量來(lái)自哪里,以及他們訪(fǎng)問(wèn)的任何類(lèi)似頁(yè)面。

  流量一般分為4個(gè)來(lái)源,可以查看每個(gè)來(lái)源的表現。這些來(lái)源是:付費流量、社交媒體流量、搜索流量和直接流量。

  

  但是,這是部分免費軟件,僅適用于網(wǎng)站大流量網(wǎng)站。

  以蘋(píng)果官網(wǎng)為例:

  有了獨立的站和優(yōu)化工具,實(shí)際落地的時(shí)候,還是會(huì )覺(jué)得有難度。為什么是這樣?

  其實(shí)除了SEO工具,這些關(guān)鍵點(diǎn)也很重要。

  SEO優(yōu)化基礎

  獨立站優(yōu)化主要涉及獨立站的跳出率。跳出率越高,獨立??站與關(guān)鍵詞的匹配度越低,或者說(shuō)獨立站的質(zhì)量越差。

  優(yōu)化網(wǎng)站的加載速度。網(wǎng)站的加載速度雖然不會(huì )直接影響獨立網(wǎng)站的排名,但會(huì )極大地影響用戶(hù)體驗。沒(méi)有人有耐心等待不斷加載的網(wǎng)頁(yè)。

  優(yōu)化圖片,壓縮圖片大??;

  優(yōu)化頁(yè)面文字,字體不宜過(guò)多;

  優(yōu)化主題插件,主題和插件選擇不影響速度。

  確定優(yōu)化主題

  從獨立站的名稱(chēng),到獨立站中的欄目以及欄目下提到的主要內容,都進(jìn)行了詳細的梳理。

  確定獨立站優(yōu)化的題目就是確定優(yōu)化后的關(guān)鍵詞。

  我們需要什么關(guān)鍵詞?尋找競爭很少的 關(guān)鍵詞。小競爭關(guān)鍵詞可以大大降低SEO的難度,輕松打造自己的私域流量。

  寫(xiě)在最后

  其實(shí)做一個(gè)獨立站,我們都可以借鑒獨立站的玩法,至少會(huì )輕松很多。

  這里小藝對目前的一些獨立外貿站做了一些分析,關(guān)注我,下期會(huì )揭開(kāi)“那些靠SEO致富的獨立站”的秘密。

  關(guān)注我,繼續出口跨境電商咨詢(xún)1

0 個(gè)評論

要回復文章請先登錄注冊


官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久