V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
iapplebear
V2EX  ›  程序员

webAssembly 目前是个啥情况

  •  5
     
  •   iapplebear · 2022-07-12 09:38:31 +08:00 · 10696 次点击
    这是一个创建于 897 天前的主题,其中的信息可能已经有所发展或是发生改变。

    概念出现已经很多年了,有人在商业项目用过这个吗?

    69 条回复    2022-12-19 21:56:22 +08:00
    GreatAuk
        1
    GreatAuk  
       2022-07-12 09:41:06 +08:00
    figma ? 大多人是用不上的,没有使用场景,成本也高
    iapplebear
        2
    iapplebear  
    OP
       2022-07-12 09:47:37 +08:00
    @GreatAuk 目前我用到的就是 esbuild 在线编译,感觉这玩意还是很鸡肋,这么多年了不温不火而且据闻项目组内讧已经停滞不前了。
    murmur
        3
    murmur  
       2022-07-12 09:49:39 +08:00
    这东西大多数用途是用来前端混淆,越奇葩的东西被成熟工具破解的概率越小
    cxumol
        4
    cxumol  
       2022-07-12 10:01:34 +08:00   ❤️ 2
    我刚做了个调用 webAssembly 模块的网页 app, "结巴中文分词网页版" https://cxumol.github.io/jieba-wasm-html/ 欢迎品尝
    源码在 https://github.com/cxumol/jieba-wasm-html
    helone
        5
    helone  
       2022-07-12 10:04:09 +08:00   ❤️ 1
    b 站啊,前段时间 b 站用 8 个 woker 跑 wasm 软解 HEVC 不上新闻了吗?
    Dididadada
        6
    Dididadada  
       2022-07-12 10:06:12 +08:00
    楼上说的 figma 应该是标杆级别的东西了,在 webgl 领域用的不少,不过大多都也在摸索阶段,还有一些在客户端处理一些音视频等比较重的任务也会考虑这个方案吧
    3dwelcome
        7
    3dwelcome  
       2022-07-12 10:08:43 +08:00
    我用 wasm 来处理前端的二进制数据。

    JS 不是不可以处理二进制,但是很少有人这样写,一般都是处理文本 json 。

    通过 wasm 转接一层,能让前端数据来源有各种可能性。比如读取一个 zip 包之类的。
    44670
        8
    44670  
       2022-07-12 10:18:46 +08:00   ❤️ 1
    https://ds.44670.org
    网页里的 DS 模拟器。
    goushenggege
        9
    goushenggege  
       2022-07-12 10:22:33 +08:00
    我们现在用 wasm 写 istio 扩展
    ShareManT
        10
    ShareManT  
       2022-07-12 10:29:42 +08:00   ❤️ 8
    我看到好几个游戏领域的应用,把旧的 C++的客户端游戏搬到浏览器端。
    https://universe.flyff.com/
    对我影响很大的一款游戏,飞飞。
    7gugu
        11
    7gugu  
       2022-07-12 10:29:52 +08:00 via iPhone
    用来生成网页播放器的进度预览图
    sinnosong1
        12
    sinnosong1  
       2022-07-12 10:31:02 +08:00   ❤️ 1
    微软的 Blazor 啊,.net 6 开始支持 WebAssembly 。https://antblazor.com/ ,https://pro.antblazor.com/
    当然我知道 V2EX 的人从来都是鄙视微软,google 和 apple 最厉害了,微软的东西再好都是“微软的东西”
    agdhole
        13
    agdhole  
       2022-07-12 10:31:18 +08:00   ❤️ 1
    wasmedge - Bring the cloud-native and serverless application paradigms to Edge Computing.
    undeflife
        14
    undeflife  
       2022-07-12 10:37:03 +08:00   ❤️ 2
    把一个数据处理后端服务包成 wasm 丢给前端跑了几个月,还挺稳的,省不少钱
    sunjun
        15
    sunjun  
       2022-07-12 10:42:42 +08:00   ❤️ 3
    前端播放器很多用了 wasm ,尤其是需要支持 hevc ( chrome 硬解正在支持中),
    在前端处理视频和图片一般都需要 wasm 加速,比如 figma
    还有就是一些机器学习框架的 web 端也有用 wasm
    随着 wasm 支持 simd 指令,一些之前需要客户端才能干的活,会越来越多的移到 web 上来干
    fanxasy
        16
    fanxasy  
       2022-07-12 10:45:54 +08:00   ❤️ 1
    @sinnosong1 v2 吹 c#的还少吗
    Mitt
        17
    Mitt  
       2022-07-12 10:49:18 +08:00
    @sinnosong1 #11 这也不怪别人吧,微软很多东西真的不靠谱
    magicdawn
        18
    magicdawn  
       2022-07-12 10:58:48 +08:00
    churchill
        19
    churchill  
       2022-07-12 11:03:58 +08:00
    tfjs 呀 不算成熟的应用吗
    3dwelcome
        20
    3dwelcome  
       2022-07-12 12:09:20 +08:00
    @ShareManT 玩了一下,游戏挺有意思。

    以后 wasm 发展起来后,索尼应该会把战神 5 给移植上去。
    libook
        21
    libook  
       2022-07-12 12:22:32 +08:00   ❤️ 6
    浏览器的支持情况: https://caniuse.com/?search=WebAssembly
    GitHub 上一些项目的情况: https://github.com/search?o=desc&q=webassembly&s=stars&type=Repositories
    官方建议的使用场景: https://webassembly.org/docs/use-cases/
    Google 把 Google Earth 移植到浏览器上的实践: https://web.dev/earth-webassembly/
    Autodesk 把 AutoCAD 移植到浏览器上: https://blogs.autodesk.com/autocad/autocad-web-app-google-io-2018/
    一些应用情况: https://www.zhihu.com/question/265700379

    不光是浏览器上的,已经有些商业项目开始利用 Webassembly 的兼容性和沙盒机制用在服务端上了,具体可以搜 server-side Webassembly

    个人看法是挺成熟且广泛应用了。
    heganj
        22
    heganj  
       2022-07-12 12:41:56 +08:00
    https://blog.stackblitz.com/posts/introducing-webcontainers/
    在前端跑 node ,适合给别人做 demo 展示
    ragnaroks
        23
    ragnaroks  
       2022-07-12 13:39:31 +08:00
    如果愿意的话,任何基于 unity3d 且不使用特定平台接口的游戏都可以跑在 wasm 上
    dcsuibian
        24
    dcsuibian  
       2022-07-12 13:42:59 +08:00
    Figma 真的是标杆。说明了这个技术确实有应用场景,而且非常实用。
    B 站在视频上传时就能选择封面,似乎就用到了 wasm 技术。

    我挺喜欢这个技术,也看好它的未来。但一般人确实没有用它的必要。
    ①普通增删改查用不上 ②技术要求比较高,普通开发者玩不转
    感觉处境类似于 WebGL 。
    andyJado
        25
    andyJado  
       2022-07-12 13:59:42 +08:00
    1. 对比谷歌地球和百度地图, 非常直观.

    2. 像我这种不会 js 的直接 all in rust 了要写前端只能用 wasm
    wdwwtzy
        26
    wdwwtzy  
       2022-07-12 14:05:17 +08:00
    blazor 已经有一些应用了啊,无论国内国外,可以看看官网的案例
    https://dotnet.microsoft.com/en-us/platform/customers/blazor
    murmur
        27
    murmur  
       2022-07-12 14:06:34 +08:00
    @andyJado js 比 rust 简单多了,语言都是用的精华面试糟粕,很多东西必须要面试那么复杂的解决
    murmur
        28
    murmur  
       2022-07-12 14:06:50 +08:00
    *必须-》不需要
    andyJado
        29
    andyJado  
       2022-07-12 14:12:53 +08:00
    @murmur 简单也是学, 难也是学, 肯定学难的呀🙆
    3dwelcome
        30
    3dwelcome  
       2022-07-12 14:15:52 +08:00
    @murmur js 擅长处理文本。可问题是离开了传统前端后,一大半的应用程序,都不仅仅只是在处理文本,还要解析各种二进制文件格式,处理网络二进制数据包。

    我也不太喜欢 rust ,但比 js 硬写要好很多。
    masterclock
        31
    masterclock  
       2022-07-12 14:25:30 +08:00
    尝试 wasmedge ,正在摸索,感觉核心很棒,但缺乏生态; riscv 上实践太不成熟。
    AyaseEri
        32
    AyaseEri  
       2022-07-12 14:41:04 +08:00
    想试试用 wasm 做一个 bpmn 的流程图编辑工具,但感觉好像又没太大必要
    xzysaber
        33
    xzysaber  
       2022-07-12 15:01:03 +08:00
    期待服务端的发展。
    HFX3389
        34
    HFX3389  
       2022-07-12 15:26:13 +08:00
    我看到某些视频网站都用 wasm 做 TS 流的加密解密了,如果不解密直接下载下来就会发现视频是花的,只有声音
    dayeye2006199
        35
    dayeye2006199  
       2022-07-12 15:34:00 +08:00 via Android
    机器学习有些应用。比如把 tensoflow 跑在浏览器里的 tensoflow.js
    把 Jupyter notebook 跑在浏览器里 JupyterLite
    chuhemiao
        36
    chuhemiao  
       2022-07-12 15:34:10 +08:00
    icp => canister , 当您为在 Internet 计算机上运行的 dapp 编写源代码时,您会将源代码编译为 WebAssembly 模块。当您在 Internet Computer 区块链上部署包含您的程序的 WebAssembly 模块时,该程序将在称为罐的概念计算单元内执行,或简称罐。

    https://www.internetcomputer.wiki/docs/training/glossary#canister-identifier
    ShareManT
        37
    ShareManT  
       2022-07-12 15:35:14 +08:00
    @3dwelcome 恩恩。很多旧时代的游戏都可以搬到网页端
    novolunt
        38
    novolunt  
       2022-07-12 15:38:09 +08:00   ❤️ 1
    国外一般用 yew.rs 统一前后端,Perseus 这个也很多人用
    @xzysaber
    novolunt
        39
    novolunt  
       2022-07-12 16:05:02 +08:00
    AssemblyScript 用得也多吧
    xzysaber
        40
    xzysaber  
       2022-07-12 16:30:09 +08:00
    @novolunt 谢谢,之前只关注了 wasmedge 相关的。
    weiwenhao
        41
    weiwenhao  
       2022-07-12 17:48:37 +08:00
    边缘计算领域
    keith2018
        42
    keith2018  
       2022-07-12 20:10:08 +08:00
    跨平台领域有挺多在用了,能方便地把一些 C++ 库移植到 Web ,不用重新写一套了,比如 https://github.com/Tencent/libpag
    CraxClive
        43
    CraxClive  
       2022-07-12 23:20:34 +08:00 via iPhone
    突然想问一下,有没有人做过 js call wasm 通讯耗时相关的 benchmark ?
    hellodigua
        44
    hellodigua  
       2022-07-12 23:31:52 +08:00
    @cxumol 感谢大佬,真是瞌睡了递枕头啊,刚好用上了
    Bijiabo
        45
    Bijiabo  
       2022-07-12 23:37:36 +08:00
    感觉 WebAssembly 就像处男的鸡儿,能用,但不一定真的能用。

    圈里秀一下,真遇到事儿了都不敢往外掏,怕意外太多。
    mikewang
        46
    mikewang  
       2022-07-13 00:17:58 +08:00
    wdlth
        47
    wdlth  
       2022-07-13 00:44:25 +08:00
    前端加解密、音视频处理都有用 WASM 的。
    duke807
        48
    duke807  
       2022-07-13 02:23:48 +08:00 via Android   ❤️ 1
    我是做硬件的
    19 年做了一款打印機產品,使用了 wasm 技術
    可以利用用戶手機、電腦等 CPU 性能做圖片轉換,把轉換好的結果傳輸到打印機
    用 wasm 可以真正做到跨平台,我做的是 pwa 程序
    Mogeko
        49
    Mogeko  
       2022-07-13 02:39:19 +08:00 via iPhone
    webassembly 虽然名字中带有 web ,但不能光看前端,很多 serverless 的项目落地就是 wasm
    zxxufo008
        50
    zxxufo008  
       2022-07-13 09:09:29 +08:00
    @cxumol #3 网页版报 Uncaught (in promise) ReferenceError: WebAssembly is not defined
    Ritter
        51
    Ritter  
       2022-07-13 09:20:59 +08:00
    @AyaseEri https://demo.bpmn.io/ 不是已经有轮子了么
    Cabana
        52
    Cabana  
       2022-07-13 09:48:30 +08:00 via iPhone
    没人提 Flutter Web 么?
    gongquanlin
        53
    gongquanlin  
       2022-07-13 10:22:27 +08:00
    搜了下,wasm 的应用还挺多的,类似于 wasmer 、wasmedge 之类的项目,可以落地到 out-side browser 。都在和 docker 比较,不知道能否替代 Docker ?

    还有就是类似于 wasm3 能运行到嵌入式 esp32/esp8266 ,arduino 中,以后 js 也能写硬件了吗,那想象力就无限了呢

    感觉 server-side wasm 比较好玩。可能也是因为我是个后端

    前端无非对高性能有要求的,或者对密文有要求的~
    RubyJack
        54
    RubyJack  
       2022-07-13 11:18:39 +08:00
    还不太行,缺乏一个统治级的 runtime
    uni
        55
    uni  
       2022-07-13 12:29:15 +08:00
    @chuhemiao 没错,区块链里非常流行用 wasm 做虚拟机,包括 cosmos 和波卡,甚至以太坊的 roadmap 里面也写着未来将会往 wasm 发展
    js8510
        56
    js8510  
       2022-07-13 12:51:49 +08:00
    搭顺风车问。我的小破现在要在后端跑 ffmpeg , 上线以后开销太大了。。。 我想问有没有人试过在 webAssembly 里跑 ffmpeg 做些简单的视屏压缩,取封面之类的操作?
    js8510
        57
    js8510  
       2022-07-13 12:56:06 +08:00
    @js8510 欧。可以。。还很快。。感觉我的小破产又活了 https://ffmpegwasm.netlify.app/
    laolaowang
        58
    laolaowang  
       2022-07-13 13:47:21 +08:00
    @ShareManT 这个飞飞我也玩过,还是偷偷去网吧玩,哈哈
    coolmenu
        59
    coolmenu  
       2022-07-13 14:05:51 +08:00
    可以,感觉 server side wasm 挺有希望的,wasmer 支持 go rust 。
    xAsiimov
        60
    xAsiimov  
       2022-07-13 14:21:45 +08:00 via iPhone
    用 Wasm 写 Istio/Envoy 扩展
    hu8245
        61
    hu8245  
       2022-07-13 14:26:29 +08:00
    @HFX3389 我就在搞这个😂
    ShareManT
        62
    ShareManT  
       2022-07-13 14:54:30 +08:00
    @laolaowang 你玩飞飞,我们就是好朋友。。哈哈
    cs8425
        63
    cs8425  
       2022-07-13 16:27:50 +08:00   ❤️ 1
    @js8510 可参考我之前弄的
    合并跟拆影音轨还行
    就是内存大小影响能处理多大的档案
    https://www.v2ex.com/t/853976
    SinceJune
        64
    SinceJune  
       2022-07-15 16:08:10 +08:00
    @ShareManT 我玩的第一款网游!竟然有网页版复活了!!感谢!
    ShareManT
        65
    ShareManT  
       2022-07-16 10:44:29 +08:00
    @SinceJune 哈哈 这也是我玩的第一款网游。之前我还和朋友运营过几年 sf
    novolunt
        66
    novolunt  
       2022-07-18 10:58:07 +08:00
    还有一种可能性,就是替代现有的 k8s 的 kubelet 的项目 Krustlet ,把 docker 替换成 wasm
    也就是 wasm 替代 docker ,相对于在前端领域的地位(主要运算能力的提升),如果能成为后时代容器标准,影响更深远。
    novolunt
        67
    novolunt  
       2022-07-18 11:06:55 +08:00
    @GreatAuk
    @ShareManT
    总体讲就是加强前端和容器这两个方向,主要是更高的运行速度、更小的执行文件、更安全的运行环境。
    缺陷也很明显,无法替代后端,也许后面也有可能,毕竟 js 都有 node js
    SinceJune
        68
    SinceJune  
       2022-07-19 16:22:56 +08:00
    @ShareManT 私服还是不太行毕竟要盈利为主有一点点情怀,我知道之前有个星辰飞飞啥的,也去体验了一把。下班玩了三天跟端游体验一样。就是英文不好 15 级转职的时候见到叹号就接了任务最后转成了圣职者。。。。。。。。
    AmosAlbert
        69
    AmosAlbert  
       2022-12-19 21:56:22 +08:00
    @sunjun 客三消
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1122 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 18:50 · PVG 02:50 · LAX 10:50 · JFK 13:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.