V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
Cbdy
V2EX  ›  JavaScript

JavaScript 的 WebAssembly 正逐渐走向主流

  •  
  •   Cbdy · 2017-03-14 14:35:18 +08:00 · 8961 次点击
    这是一个创建于 2813 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本周发布的 Firefox 52 加入了对 WebAssembly 的支持

    JavaScript 精粹提到:大多数编程语言都有精华和糟粕, JavaScript 中的糟粕的比重超出了预料。

    虽然很多人不大愿意写 JavaSript ,但是 JavaScript 作为 Web 的'标准语'又无法避开。于是几乎所有主流的通用语言都可以编译成 JavaScript , Babel 也成为非常流行的编译器

    面对 Web 开发中的混乱,程序员们想出了很多方法,比如

    • jQuery.js 、 Backbone.js 、 Require.js :添加一个小的 runtime ,增强 JavaScript 与其宿主
    • gulp.js 、 webpack 、 JSLint 等:完善前端开发工具链
    • TypeScript 、 ECMAScript 、 CoffeeScript 等、:更好的 JavaScript
    • asm.js 、 WebAssembly :制定 Web 中间码,让 JavaScript 成为一种可选的技术

    不用写 JavaScript ,你们高兴吗?

    34 条回复    2017-03-15 19:31:13 +08:00
    loading
        1
    loading  
       2017-03-14 14:37:57 +08:00 via Android
    请先装工具链……
    而且你装的时候,可能会遇到假的安装教程或安装包,一直报错。
    echo1937
        2
    echo1937  
       2017-03-14 14:47:06 +08:00
    现在有什么语言支持 WebAssembly 了吗?
    visonme
        3
    visonme  
       2017-03-14 14:49:55 +08:00
    去年接触过一段 asm.js ,后面放弃了,使用上不习惯, webassembly 看了下,发现更加不习惯额
    ChefIsAwesome
        4
    ChefIsAwesome  
       2017-03-14 14:50:35 +08:00
    我们假设下一代 javascript 的速度是现在的十倍, web 有什么变化?
    Kilerd
        5
    Kilerd  
       2017-03-14 16:32:12 +08:00
    对对对,你说的都对。 Javascirpt 最好了。
    oyjc
        6
    oyjc  
       2017-03-14 16:43:35 +08:00
    目前支持编译到 WASM 的有: C/C++/RUST
    等下一个版本支持 GC 和 DOM/API 的时候,就可以入坑完全弃掉 JS 了。
    SuperMild
        7
    SuperMild  
       2017-03-14 17:00:08 +08:00
    也许到 JS 变成可选项的时候,大家才会发现 JS 的优秀吧。
    echo1937
        8
    echo1937  
       2017-03-14 17:21:31 +08:00
    @oyjc #6 原来 API 是 WebAssembly 实现的啊,我还以为需要各语言自己实现呢。
    beginor
        9
    beginor  
       2017-03-14 20:19:07 +08:00 via Android
    会不会成为下一个 Applet , Silverlight 或者 Flash ?
    SourceMan
        10
    SourceMan  
       2017-03-14 20:21:22 +08:00 via iPhone   ❤️ 2
    小程序没出来的时候也被捧上天
    ibufu
        11
    ibufu  
       2017-03-14 21:24:28 +08:00
    卧槽,感觉要失业了
    oyjc
        12
    oyjc  
       2017-03-14 21:25:16 +08:00
    @echo1937 API 和 DOM 一样,都是现有的,并非 WASM 再造一个 API 。跟 JS 一样, WASM 可直接引用。
    murmur
        13
    murmur  
       2017-03-14 21:31:02 +08:00
    想多了 flash 和 html5 现在别说半壁江山了 估计 flash 都是 6
    至于什么 webasm 都没谱。。
    murmur
        14
    murmur  
       2017-03-14 21:32:34 +08:00
    不过 webasm 的意义,就是 10 年后谁再跟你说 java 和 javascript 没关系你可以抽他脸,到时候你能自豪的说你写的是 JAVAscript 不是 javascript
    wdlth
        15
    wdlth  
       2017-03-15 00:05:13 +08:00
    @murmur 叫 java.js 吧
    YvesX
        16
    YvesX  
       2017-03-15 00:09:20 +08:00   ❤️ 2
    每天醒来都有新的 X.js 正在成为主流,切实感受到了大家为了避免混乱所付出的巨大努力。
    a87150
        17
    a87150  
       2017-03-15 00:21:05 +08:00 via Android
    感觉写 js 真辛苦
    klausgao
        18
    klausgao  
       2017-03-15 05:40:59 +08:00 via iPhone
    写着写着也就习惯了,其实我只是单纯喜欢码字和解决问题。
    rashawn
        19
    rashawn  
       2017-03-15 08:18:00 +08:00 via iPhone
    @ChefIsAwesome 那拿 node 跑就比 c 语言快了 你说啥变化……
    int64ago
        20
    int64ago  
       2017-03-15 09:37:09 +08:00
    很多人讨论偏离了 WASM 的初衷,它主要是为了解决性能问题,其它语言转过来只是顺便可以这样做而已,而且转换的过程都是靠工具链,也不会真的让你去写什么恐怖的代码,只是限制了些语法而已
    int64ago
        21
    int64ago  
       2017-03-15 09:39:14 +08:00
    简单说,如果应用中一些关键点有性能问题,或者其它语言有更好的实现,那么 WASM 显然就很合适做这个事了,但是你好好的一个 Web 应用,大多数时候是用不到这个的,反而一样新出的的 Service Worker 就更接近普通人了
    ChefIsAwesome
        22
    ChefIsAwesome  
       2017-03-15 10:07:11 +08:00
    @rashawn 这东西是 web 端啊。因为浏览器上只能跑 js ,所以这东西出来才那么多人觉得有意思。再接着你说的问题,服务器上不止 node 一个选择,为啥那么多人选 node 呢?
    说到底,语言跑得快或慢,真的那么重要吗?绝大多数场景下的性能瓶颈都不在语言那吧。
    hronro
        23
    hronro  
       2017-03-15 10:09:10 +08:00
    [TypeScript 、 ECMAScript 、 CoffeeScript 等、:更好的 JavaScript]
    你知道 ECMAScript 是什么吗?
    droiz
        24
    droiz  
       2017-03-15 10:23:15 +08:00
    个人认为还早。

    WebAssembly 虽然现在已经完成第一阶段开发,但如果编译到 js ,体积膨胀太大,一个简单的 int add(int ,int); 开 O3 都能达到 400kb 左右,别提更复杂的 c/c++代码,当然随着源码体积的增大,编译产生的副产物大小影响会减小,但体积确实是编译到 js 的一个大问题。如果编译到 wasm ,目前只支持 int,float 等四种简单的数据类型,指针等目前还都不支持,可用性大大受限,但是它解决了编译尺寸问题。

    所以目前 WebAssembly 具有可用性的地方只有游戏,视频这些对文件尺寸不敏感,性能要求高的场景,想要全方位替代 js 还早。
    rashawn
        25
    rashawn  
       2017-03-15 11:15:57 +08:00 via iPhone
    @ChefIsAwesome 我只是根据你假设的那句话来的啊 如果硬件不变的前提下 js 快了 10 倍 说明已经变的跟 c 很像了啊
    murmur
        26
    murmur  
       2017-03-15 11:19:12 +08:00
    @droiz 游戏有 unity ,有 cocos ,有 cryengine ,有 unreal ,各家都是先出产品再给钱的策略
    不知道 h5 以及相关技术有什么竞争力 你说的是微信里的小游戏么。。

    我玩的最好玩的 h5 游戏是钦定的小鸟
    murmur
        27
    murmur  
       2017-03-15 11:21:17 +08:00
    @int64ago 浏览器就老实做浏览器的事, java 和 c++的性能和场景都讨论了这么多年了,想要性能 c++、汇编走起

    总有一些前端想妄想一统江山,用 c++写 web 的又不是没有, hadoop java 的也有公司用 c++重构, js 以及 js 衍生物咋就那么香呢
    Cbdy
        28
    Cbdy  
    OP
       2017-03-15 11:22:09 +08:00
    @hronro 我知道 es 是什么,我这里把 es 与 js 分开说主要是为了区分标准与实现
    es 也作出过一些努力,比如'use strict'。但是标准仅仅是标准,只是一个建议, js 的实现掌控在大厂手里
    hronro
        29
    hronro  
       2017-03-15 11:30:18 +08:00
    @Cbdy #28 但你这么说,很容易让人产生误解。
    `JavaScript 中的糟粕的比重超出了预料`,这其中的糟粕,其实都是 ECMAScript 标准定义而产生的,所以把 ECMAScript 放到`better JavaScript`中去未免有些牵强
    Cbdy
        30
    Cbdy  
    OP
       2017-03-15 12:10:18 +08:00 via Android
    @hronro '都是 ECMAScript 标准定义而产生的',这句话不对
    droiz
        31
    droiz  
       2017-03-15 13:42:20 +08:00
    @murmur 我指的是网页上的游戏
    hst001
        32
    hst001  
       2017-03-15 14:05:40 +08:00
    @SourceMan 不要拿小程序跟这个比,完全两个不一样的东西
    SourceMan
        33
    SourceMan  
       2017-03-15 15:45:46 +08:00
    @hst001 #32 哟,急了~
    pathen
        34
    pathen  
       2017-03-15 19:31:13 +08:00 via Android
    首先受益的应该是 webgl
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4895 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:02 · PVG 18:02 · LAX 02:02 · JFK 05:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.