我的编程空间,编程开发者的网络收藏夹
学习永远不晚

WebAssembly增强前端应用技巧是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

WebAssembly增强前端应用技巧是什么

这篇“WebAssembly增强前端应用技巧是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“WebAssembly增强前端应用技巧是什么”文章吧。

    准备

    需要准备好下列的环境

    • Rust 开发环境(rustup、rustc、cargo 这些)

    • 前端开发环境(node、npm 这些)

    • wasm-pack (cargo install wasm-pack)

    开始

    开始前我们先要准备一个前端应用,这里我们使用 create-react-app 来创建一个 React 项目。 如果没有安装 create-react-app ,先用 pnpm (npm / yarn 也行)全局安装一下

    npm install -g create-react-app

    创建项目

    使用 typescript 模板来创建项目,以获得更好的类型提示。

    create-react-app react-wasm --template typescript

    进入到刚创建好的项目目录中

    cd react-wasm

    创建好 react 项目之后,我们接下来使用 wasm-pack 创建一个 wasm 工具库

    wasm-pack new wasm-lib

    创建完成后我们的目录结构是像下面这样子的,

    class="lazy" data-src 目录主要编写前端应用代码

    wasm-lib/class="lazy" data-src 目录主要编写 rust wasm 代码

    WebAssembly增强前端应用技巧是什么

    wasm-lib/class="lazy" data-src/lib.rs 目录下,这里就是我们可以进行编写供前端调用的 WebAssembly 函数。这里默认写好了一个 greet 函数,然后里面调用了 alert 弹框。接下来我们就去看看如何在前端中进行使用这个函数。

    mod utils;use wasm_bindgen::prelude::*;// 当 `wee_alloc` 特性开启的时候, 使用 `wee_alloc` 作为全局分配器#[cfg(feature = "wee_alloc")]#[global_allocator]static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT;#[wasm_bindgen]extern "C" {    fn alert(s: &str);}#[wasm_bindgen]pub fn greet() {    alert("Hello, wasm-lib!");}

    打包 wasm

    在 package.json 文件中添加这一行代码,然后我们就可以进行打包了。

    WebAssembly增强前端应用技巧是什么

    项目根目录中运行

    npm run build:wasm

    如果在 build 的过程卡住了,或者报错了。可以先暂时把代码优化给关闭掉

    在 wasm-lib 目录下的 Cargo.toml 配置文件中关掉 wasm-opt

    WebAssembly增强前端应用技巧是什么

    打包完成后就能看到项目根目录中出现了一个 pkg 文件夹,这里面就是我们打包后的产物,前端可以进行调用我们用 Rust 编写的函数。

    WebAssembly增强前端应用技巧是什么

    前端调用

    我们有两种方式去调用 pkg 目录下的 wasm 函数:

    一种是将 pkg 作为一个 npm 包发布

    cd wasm-lib# 该命令可以把这个库作为 npm 包发布到 npm 中,然后我们前端就正常的方式 npm install 就可以使用了wasm-pack publish

    另一种是先在本地进行引用,根目录下安装

    npm install ./pkg

    然后 package.json 的依赖中增加了我们的本地库:

    {  "name": "react-wasm",  "version": "0.1.0",  "private": true,  "dependencies": {    "@testing-library/jest-dom": "^5.16.4",    "@testing-library/react": "^13.3.0",    "@testing-library/user-event": "^13.5.0",    "@types/jest": "^27.5.1",    "@types/node": "^16.11.36",    "@types/react": "^18.0.9",    "@types/react-dom": "^18.0.5",    "react": "^18.1.0",    "react-dom": "^18.1.0",    "react-scripts": "5.0.1",    "typescript": "^4.7.2",    "wasm-lib": "file:pkg", // ++++++++++++++++++++++++++++    "web-vitals": "^2.1.4"  },  // ...}

    接下来就去我们的 App.tsx 中调用 greet 方法:

    import React, { useEffect } from "react";import init, { greet } from "wasm-lib";import logo from "./logo.svg";import "./App.css";function App() {  // +++++++++++++++++  useEffect(() => {    init().then(() => {      greet();    });  }, []);  return (    <div className="App">      ...    </div>  );}export default App;

    然后开始运行我们的 react 应用

    npm run start

    打开 localhost:3000 端口,可以看到我们调用 alert 方法成功咯~

    WebAssembly增强前端应用技巧是什么

    使用 console.log

    首先我们要安装一下 web-sys 这个包,在 Cargo.toml 中加入

    [dependencies]wasm-bindgen = "0.2.63"web-sys = { version = "0.3.57", features = ['console'] } # ++++++++

    在这里我们开启了 console 这个 feature, web-sys 还支持很多 feature,比如可以操作 DOM,调用前端原生 fetch API , 操作 Canvas , WebGL 等等等。

    Rust:

    mod utils;use web_sys::console;use wasm_bindgen::prelude::*;#[cfg(feature = "wee_alloc")]#[global_allocator]static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT;#[wasm_bindgen]pub fn test_log(val: JsValue) {    console::log_2(&"从JS端接受到数据".into(), &val);}

    JS:

    import React, { useEffect } from "react";import init, { test_log } from "wasm-lib";import logo from "./logo.svg";import "./App.css";function App() {  useEffect(() => {    init().then(() => {      test_log({ a: 1, b: 2, c: 3 });    });  }, []);  return (    <div className="App">      ...    </div>  );}export default App;

    打印结果:

    WebAssembly增强前端应用技巧是什么

    以上就是关于“WebAssembly增强前端应用技巧是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    WebAssembly增强前端应用技巧是什么

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    WebAssembly增强前端应用技巧是什么

    这篇“WebAssembly增强前端应用技巧是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“WebAssembly增强前
    2023-07-05

    Fiori标准应用的增强方式是什么

    这篇文章主要介绍“Fiori标准应用的增强方式是什么”,在日常操作中,相信很多人在Fiori标准应用的增强方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Fiori标准应用的增强方式是什么”的疑惑有所
    2023-06-04

    什么是Apple ARKit和增强现实AR应用程序

    苹果ARKit 6ARKit 6 引入了 4K 视频捕获功能,可让您创建令人惊叹的 AR 体验高分辨率视频。无论您是专业的视频编辑、电影制作人还是社交媒体爱好者,此功能都非常适合无缝集成虚拟和现实世界的内容。通过扩展对 HDR 视频和高分辨
    2023-07-10

    .NET Framework Compression功能应用技巧是什么

    .NET Framework Compression功能应用技巧是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。.NET Framework能为开发人员提供一个合适的W
    2023-06-17

    C++标准扩展应用技巧是什么

    本篇内容介绍了“C++标准扩展应用技巧是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!今天实验一下C++标准扩展中的shared_ptr
    2023-06-17

    PHP编码转换函数应用技巧是什么

    PHP编码转换函数应用技巧是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在PHP中有数量庞大的函数来支持我们的需求应用。下面介绍的这个函数就是有关PHP编
    2023-06-17

    PHP文件操作中各函数应用技巧是什么

    这篇文章给大家介绍PHP文件操作中各函数应用技巧是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。PHP语言的应用范围非常广泛,比如在对文件的操作上可以灵活的运用PHP语言来实现我们的需求。下面就一起来看看PHP文件
    2023-06-17

    云端部署与容器化技术对 PHP 应用性能的影响是什么?

    云端部署和容器化技术对 php 应用性能的影响云端部署:提升可伸缩性、可靠性和成本效益,但可能增加延迟和安全风险。容器化技术:提供隔离性、可移植性和轻松部署,但需考虑资源消耗和管理复杂性。实战案例:电子商务公司部署 php 应用程序后,吞吐
    云端部署与容器化技术对 PHP 应用性能的影响是什么?
    2024-05-07

    Python中的日志处理和调试技巧在实际开发中的应用场景和注意事项是什么?

    Python中的日志处理和调试技巧在实际开发中的应用场景和注意事项在软件开发中,确保代码的正确性和可靠性是至关重要的。为了实现这一目标,日志处理和调试技巧是不可或缺的工具之一。Python作为一门广泛应用于各个领域的编程语言,提供了许多方便
    2023-10-27

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录