WebAssembly 入门课
于航
PayPal 高级软件工程师
10751 人已学习
新⼈⾸单¥29
登录后,你可以任选4讲全文学习
课程目录
已完结/共 23 讲
结束语 (1讲)
WebAssembly 入门课
15
15
1.0x
00:00/00:00
登录|注册

09 | WebAssembly 能够为 Web 前端框架赋能吗?

你好,我是于航。
相信现在你已经知道,“WebAssembly” 是由 “Web” 与 “Assembly” 两个单词组成的。前面的 “Web” 代指 Web 平台;后面的 “Assembly” 在我们所熟悉的编程语言体系中,可以理解为“汇编”。
通常来说,汇编语言给人的第一感觉便是“底层,外加高性能”。而这,也正是第一次听说 Wasm 这门技术的开发者们的第一感受。
说到 Web 开发,那我们不得不提到层出不穷的 Web 前端开发框架。以 React、Vue.js 及 Angular 为代表的三大框架的出现,使得 Web 前端应用的开发模式,自 2013 年后便开始逐渐从“旧时代”的 jQuery、Prototype.js 走向了以 “MVVM” 框架为主的“新时代”。
既然我们说 Wasm 起源于 Web,并且它的出现会给未来的 Web 应用开发模式,带来一系列变化。那么,对于这些现阶段在我们日常工作中承担“主力”角色的 Web 前端框架来说,Wasm 会给它们带来怎样的变化呢?未来的 Web 前端开发框架会以怎样的方式与 Wasm 紧密融合呢?
相信这些问题,是每一个 Web 前端开发同学在接触 Wasm 这项技术之后,都会存在的疑问。今天,我们就来看一看,在如今的 Wasm MVP 标准下,对于这些基于 JavaScript 编写的现代 Web 前端框架我们能够做些什么。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

WebAssembly(Wasm)作为一种新兴技术,对现代Web前端框架可能产生深远影响。文章探讨了几种方案,包括使用Wasm完全重写现有框架、使用Wasm重写框架的核心逻辑、使用Wasm增强应用的部分功能以及使用其他语言构建Web前端框架。其中,使用Wasm完全重写现有框架需要通过JavaScript以外的语言重写框架逻辑,并且在Wasm与JavaScript上下文之间的函数调用开销方面存在一些挑战。而使用Wasm重写框架的核心逻辑则更具现实意义,尤其适合处理计算密集型逻辑。这种方法可以提高性能,尤其适合处理大量的数学计算逻辑。另外,Wasm也可以与现有框架配合,用于优化应用的某一部分功能,例如数据编解码。此外,还有一种激进的方案是使用其他语言构建Web前端框架,如基于Rust语言的Yew框架。虽然Wasm的潜力尚未完全显露,但这些尝试为Web前端框架的发展带来了新的可能性。在已有的讨论中,React、Vue.js和Ember.js等流行的JavaScript框架也在探索与Wasm的结合,其中Ember.js尝试了与Wasm进行深度整合,但遇到了一些问题。总的来说,Wasm对现代Web前端框架的影响是多方面的,需要在实际应用中综合考虑其优势和挑战。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《WebAssembly 入门课》
新⼈⾸单¥29
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • Yarco
    纯计算的话 貌似也许AI/机器学习可用Wasm? 有这块的内容吗?

    作者回复: 是的,AI 和机器学习方面的 Wasm 实践还比较少,据我所知两个方面:虚拟机的话可以看一看 SSVM,它在宣传中擅长于 AI 和区块链等领域;库的话 tensorflow.js 最近好像是通过 Wasm 有了部分优化,还有 ONNX.js。再其他的就没有听说过太多消息了,毕竟目前 Post-MVP 中诸如 SIMD 都没有实现。

    2020-09-23
    4
  • 目前 wasm 落地情况是怎么样的呢? 能不能使用与生产环境中的? 还是只能学习学习,为未来做个知识储备

    作者回复: 是可以的哈,正如我在第10篇文章中展示的两个案例。虽然MVP的特性稍有局限性,但在某些场景中已经能够很好地来姐姐某些问题了。当然,如果暂时没有使用 Wasm 的需求,作为技术储备也是OK的。未来Wasm的发展将会影响到很多领域。

    2020-09-24
    2
  • 不过落魄
    恰巧在目前 Wasm 的 MVP 标准中,我们也同样无法直接在 Wasm 字节码中操作 HTML 页面上的 DOM 元素。 是要表达:恰巧在目前 Web 的 MVP 标准中,我们也同样无法直接在 Wasm 字节码中操作 HTML 页面上的 DOM 元素。这一意思吗?

    作者回复: 是在 Wasm 的 MVP 标准中哈。虽然 DOM 元素是 Web 平台上独有的,但对于 Wasm 字节码来说都是一样的不透明数据,因此暂时还无法在 Wasm 中直接引用。

    2020-09-23
    2
  • Yixeu
    不好意思,我跨国前几章直接看的这一章。请问js glue code 具体是指什么?是要理解为js 开放给wasm 的api么?如果是的话,请问是wasm独有的,还是js统一开放出来的api。如果不是,请问怎么理解或者查阅这个glue code具体有些什么内容

    作者回复: 关于 Glue Code,其实文中有所介绍,并不是特指的一类 API,而本质上讲就是 JavaScript 代码,这些 JS 代码主要用来帮助 Wasm 与 Web API 进行交互。Glue Code 一般由自己编写或者由类似 Emscripten 的工具链自动生成。后者可以在项目编译生成的产物中直接看到。

    2021-01-07
    1
  • 极客酱酱
    尤大的说法: Not really. At this stage WebAssembly based solutions leads to questionable performance gain (wasm can't directly touch the DOM), large binary size (which actually reduces load performance), difficulty of debugging during development (can't just read the stack trace and the source code), significantly larger surface of maintenance (keeping both versions in sync), etc. It's simply not a reasonable trade-off for existing JavaScript frameworks. 没有。在这个阶段,基于 WebAssembly 的解决方案会导致可疑的性能提升(wasm 不能直接接触 DOM)、大二进制大小(这实际上降低了负载性能)、开发过程中的调试困难(不能只读取堆栈跟踪和源代码)、明显更大的维护表面(保持两个版本同步)等。对于现有的JavaScript框架来说,这根本不是一个合理的权衡。 The only case where a WASM-based frontend framework makes sense is to use a language other than JavaScript (e.g. people who prefer to write UI in Rust or C#). 基于 WASM 的前端框架有意义的唯一情况是使用 JavaScript 以外的语言(例如,喜欢用 Rust 或 C# 编写 UI 的人)。
    2023-09-04归属地:四川
    1
  • 跳跳
    一枚使用 Blazor WebAssembly 的同学飘过。
    2022-01-19
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部