推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
Cbdy

JavaScript 的 WebAssembly 正逐渐走向主流

  •  
  •   Cbdy · Mar 14, 2017 · 9603 views
    This topic created in 3347 days ago, the information mentioned may be changed or developed.

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

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

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

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

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