干货教程:Rust跨界前端全攻略
优采云 发布时间: 2022-11-07 22:28干货教程:Rust跨界前端全攻略
出品 | CSDN(ID:CSDNnews)
众所周知,Rust 的学习曲线极其陡峭,学习过程中的挫折感非常强。像笔者这样有十几年开发经验的人,往往需要几天的时间才能弄清楚一个小细节。详情请参考上一篇文章。“从内存布局来看,是 Rust 的 fat 指针 fat on stack 还是 fat on the heap”。所以,在学习和掌握Rust的过程中,还是需要一些不那么硬核的知识点来穿插点缀。
Nicolas Frankel 一直是我密切关注的 Rust 技术专栏作家之一。最近看到他关于Rust和JS结合构建Serverless WebAssembly的文章文章,顿时觉得眼前一亮。这篇文章文章没有繁琐的权限转移机制、智能指针等项,跟着作者的代码样例去模仿,这方面的知识也比较实用。干得好文章,把所有精彩的文章分享给大家。
我们知道 JavaScript 是唯一可以认为是通用语言的前端语言,各种前端流行的框架本质上都是基于 JavaScript 的。虽然为前端生成的 JavaScript 存在性能、并发等诸多先天不足,但也应该看到,JavaScript 开发者社区仍在大幅增长,围绕前端 JavaScript 的生态也日益繁荣,前端终端技术正在迅速变化。几年前的霸主Flash,差点直线摔倒,被H5彻底秒杀。从 NodeJS、DENO 到 Vue.js,各种新的框架也层出不穷,大家应接不暇。可以说,JS系统的繁荣是有目共睹的。
尽管大多数关于语言优劣的争论都没有实际意义,但不可否认的是,JavaScript 经常处于编程语言蔑视链的底部。很多程序员认为 JS 之所以能幸存下来,是因为它将执行脚本代码的职责从服务端转移到了客户端,这为服务端减轻了很多压力。但是,相对而言,客户的压力却大大增加了。前端程序员想要提升在线体验,几乎只能推荐用户购买功能更强大、价格更高的手机、PAD 或 PC。而对 JavaScript 引擎的优化似乎依赖于 Rust 来完成。在介绍以下解决方案之前,我们先来了解一下 WebAssembly。
WebAssembly(缩写为 Wasm)是一种用于基于堆栈的虚拟机的二进制指令格式。Wasm 被设计为编程语言的可移植编译目标,支持在 Web 上部署客户端和服务器应用程序。
总的来说,Wasm 并不是要取代 JavaScript,而是要提高前端和后端交互的整体性能。虽然 Rust 主要用于后端,但它的特性确实有助于提高 WebAssembly 的编译、启动和运行速度。让我们来看看 Rust+Wasm 的强大之处。
Rust 和 WebAssembly 第一个 Rust 项目
我们的第一步重点是让大家了解设置方法,这是一个Ctrl+C、Ctrl+V风格的复制粘贴项目。该项目利用一个高效的 Cargo 插件 cargo-generate 来提高项目管理效率,它允许使用现有的 Git 存储库作为模板创建新项目。在这种情况下,模板是要编译的 Wasm Rust 项目。具体项目的树形结构如下:
这是一个非常典型的 Rust 项目结构。现在让我们看一下 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 实际上在前端项目中扮演 pom.xml 的角色。这里列出了有关包、依赖项、编译提示等的元信息,并定义了与 Wasm 的依赖项。当然这个项目目前还不是很有趣,但是我们会慢慢构建一个项目,让 Wasm 的 Rust 代码高效交互。
接下来让我们运行命令:
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 代码的入口点,index.js 是异步加载器包装器。完成以上步骤后,我们只要完成以下四个步骤,就可以执行整个 Wasm 代码链。
将 Rust 代码编译为 Wasm
生成 JavaScript 适配器代码
安装 npm 依赖 npm install
执行 npm run start
浏览到 :8080 会显示一条简单的警报消息。
在带普通读者再次做教程之前,我先在这里给出一些有意义的结论。也就是在结合Wsam+Rust的过程中,可以归结为以下三个步骤:
从 JavaScript 调用 Rust
从 Rust 调用 JavaScript
从 Rust 调用浏览器 API
从 JavaScript 调用 Rust
好吧,让我们一点一点地完成这些步骤,要从 JavaScript 调用 Rust,您需要将 Rust 代码编译为 Wasm 并提供一个瘦 JavaScript 包装器。Rust中的具体方案如下:
#[wasm_bindgen] pub fn foo { // do something}
JavaScript 代码示例如下:
import * as wasm from "hello-wasm-pack"; wasm.foo;
将 hello-wasm-pack 包中的所有内容导入 wasm 命名空间后,用户可以调用 foo 函数。
从 Rust 调用 JavaScript
Rust 调用 JavaScript 函数时,需要通过 extern 关键字声明使用外部函数接口,如下:
#[wasm_bindgen]extern "C" { #[wasm_bindgen(js_namespace = Math)] fn random -> f64;}
#[wasm_bindgen]fn random_boolean -> bool { random < 0.5 }
请注意,虽然这里的关键字是 extern "C",但这不是 C 代码,这是 Rust 中的正确语法,所以我们可以直接使用它。接下来,您需要设置 js 沙箱(js-sys crate)。如果您想了解更多相关内容,可以参考以下链接:
接下来需要在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 语句将达到 JavaScript 在运行时被 rust 调用的目的。
从 Rust 调用浏览器 API
当然,仅仅调用JavaScript是不够的,因为很多客户端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); }}
综上所述
再说一遍,前端使用Rust的三个要点是:从JavaScript调用Rust,从Rust调用JavaScript,从Rust调用浏览器API。
实操干货:浅谈跨境电商独立站出海,SEO必备引流工具
作为吸引独立网站流量的一种手段,SEO工具对于独立网站卖家来说非常重要。
通过 SEO 自然排名靠前的独立网站将比通过广告排名靠前的 网站 更可信,并拥有更多的自然流量。
许多独立网站卖家正遭受广告烧钱之苦。无论是社交媒体推广还是谷歌展示位置,都没有得到很好的转化。一定是他们在SEO方面做得不好。
根据谷歌的算法,只要你的内容和产品质量足够好,往往可以事半功倍。
工人要做好工作,首先要磨利他的工具。
SEO(搜索引擎优化)工具将卖家从繁琐的关键字研究和数据分析中解放出来。
使用这些工具,可以查看哪些 关键词 正在工作,哪些可以继续优化。
一个好的 SEO 工具甚至会提供有关如何衡量竞争对手和最大机会的报告。
谷歌搜索控制台
( )
Google Search Console 可以监控和报告 网站 在 Google SERP 中的存在。
这个工具对新的 网站 尤其有用,因为它允许 网站 所有者提交网页以进行搜索索引。强烈建议不熟悉独立网站的朋友可以开始学习。
多说,这是免费的,卖家抢购。
谷歌分析
(#/条款)
Google Analytics 是 SEO 和互联网营销人员使用的最流行的分析工具之一,因为它为独立卖家提供了大量有关 网站 流量的信息。
独立卖家可以从第一次访问 网站 以及他们如何登陆 网站 的人口统计数据中查看所有信息。
Ahrefs:SEO 关键词 工具
(%3A///)
Ahrefs 是最受推荐的在线 SEO 工具之一。
就最大的网站爬虫而言,它仅次于谷歌。
该工具将突出网站需要改进的地方以及如何在搜索引擎中获得更好的排名。
从竞争对手分析的角度来看,Ahrefs 可用于识别竞争对手的反向链接,以用作您自己品牌的起点。
我们还可以使用这个 SEO 工具来检查和修复 网站 上的损坏链接,并了解性能最佳的页面(这样您就可以了解访问者),但它是付费的。
铁线莲
( )
这个工具的强大之处在于它可以抓取热门关键词,然后通过这些关键词联系人生成相应的热门内容。在此工具上输入一些 关键词 将获得关联的 关键词 或描述。
但它是有偿的。
小贴士:
抖音热词SEO
具体操作方法:通过本工具中的“洞察面板”显示主题之间的差距。
比如医疗保健的“太极”和“斗士”这两个话题看似无关,但是通过这个工具,可以自动生成关系网络,拉近两个话题,最后得到一个内容整合了这样一个内容就可以产生——“合气道对太极拳的发展起到了什么影响?”
类似网站
( )
SametimeWeb 可以观察竞争对手的网站流量、广告来源和其他网站 详细信息,是最通用的竞争对手站点分析工具之一。
这将显示您的大多数竞争对手的流量来自哪里,以及他们访问的任何类似页面。
流量一般分为4个来源,可以查看每个来源的表现。这些来源是:付费流量、社交媒体流量、搜索流量和直接流量。
但是,这是部分免费软件,仅适用于网站大流量网站。
以苹果官网为例:
有了独立的站和优化工具,实际落地的时候,还是会觉得有难度。为什么是这样?
其实除了SEO工具,这些关键点也很重要。
SEO优化基础
独立站优化主要涉及独立站的跳出率。跳出率越高,独立站与关键词的匹配度越低,或者说独立站的质量越差。
优化网站的加载速度。网站的加载速度虽然不会直接影响独立网站的排名,但会极大地影响用户体验。没有人有耐心等待不断加载的网页。
优化图片,压缩图片大小;
优化页面文字,字体不宜过多;
优化主题插件,主题和插件选择不影响速度。
确定优化主题
从独立站的名称,到独立站中的栏目以及栏目下提到的主要内容,都进行了详细的梳理。
确定独立站优化的题目就是确定优化后的关键词。
我们需要什么关键词?寻找竞争很少的 关键词。小竞争关键词可以大大降低SEO的难度,轻松打造自己的私域流量。
写在最后
其实做一个独立站,我们都可以借鉴独立站的玩法,至少会轻松很多。
这里小艺对目前的一些独立外贸站做了一些分析,关注我,下期会揭开“那些靠SEO致富的独立站”的秘密。
关注我,继续出口跨境电商咨询1