您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    除了 async 速度翻 10 倍,JavaScript 还带来了什么?
    时间:2019-05-14 12:04 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    明天的 JavaScript 曾经无处不在了,以传统的方式运用 JavaScript,开发者可以在各种 Web 阅读器中创立 Web 运用;经过 Node.js,可以开发命令行工具与效劳器等运用;而在桌面范围,经过基于 JavaScript 与 HTML、CSS 等 Web 技术的 Electron 框架可以构建跨平台桌面运用;React Native 则可以用来开发跨平台移动运用;此外,JavaScript 甚至可以在 IoT 设备上运转。

    Ecma TC39 管理着 ECMAScript 生态的开展,它是以后 JavaScript 言语背后的标准,谷歌 V8 团队不断积极参与 JavaScript 相关标准化任务。

    V8 是谷歌开源的 JavaScript 引擎(同时也是 WebAssembly 引擎),前面提到的 Chrom、Node.js 与 Electron 等平台都基于 V8。同时除了 Chrome,基于 Chromium 的一系列 Web 阅读器,如 Opera 与行将正式发布的 Microsoft Edge 在底层也基于 V8。

    在前几天的 Google I/O 2019 上,V8 团队的 Mathias Bynens 与 Sathya Gunasekaran 分享了 JavaScript 的最新研发停顿。

    除了 async 速度翻 10 倍,JavaScript 还带来了什么?



    V8 团队表示,他们的使命是要指导现代 JavaScript 与 WebAssembly 高功用,值得关注的是,分享者用了“real-world”描画功用,并引见所谓“real-world performance”是与那些单纯为了 benchmark 数据的功用相对的,谷歌强调想要到达的是实践上在理想生活中可以做到高功用的效果,而不是那么“出生”。

    他们举了几个例子。自 Chrome 61 以来,V8 团队将原始 JavaScript 解析速度提高了一倍,这些数据是在真实网站上测试失掉的。同时他们曾经成功从主线程中移除了 40% 的解析和编译任务,网页启动变得愈加顺滑。

    除了 async 速度翻 10 倍,JavaScript 还带来了什么?

    除了 Chrome,速度提升在 Node.js 中也有很清楚的表现,Node.js 12 相比 Node.js 7,async 速度提升了 10 倍,Promise.all 速度提升了 12 倍。

    除了 async 速度翻 10 倍,JavaScript 还带来了什么?

    解析速度与运转时功用提高之外,内存占用也增加了,Chrome 70 到 Chrome 76,Android 上运转实践 Web 运用的内存消耗增加了 20%

    除了 async 速度翻 10 倍,JavaScript 还带来了什么?

    接上去演讲者分享了 JavaScript 的一些新特性,涵盖内容很多,下边复杂引见几个比较有意思的特性:

    运用方言口语化显示时间短语 API

    这是众多新 Intl.* API 中的一种,也是观众讨论比较多的一个特性,Intl.* 是指国际化特性。

    我们日常生活中提到时间的时分会说“上周”、“上个月”与“42 秒前”等口语,运用新的 Intl.RelativeTimeFormat() 函数,顺序可以运用特定言语前往这些短语,而不是方方正正的“one week ago”、“one month ago”和“42 seconds ago”。

    演讲者运用英语与泰米尔语演示了该功用,效果如下:

    除了 async 速度翻 10 倍,JavaScript 还带来了什么?

    除了 async 速度翻 10 倍,JavaScript 还带来了什么?

    目前该功用支持秒、分钟、小时、天、周、月与季的短语表示,并且支持多种言语(不清楚有没有中文支持),开发者不再需求维护一个专门的相对时间短语列表。

    globalThis

    想要编写适用于不同平台的 JavaScript,不管是 Node.js 还是 Web 阅读器,都需求有相应的代码来适配全局“this”,比如 Web 阅读器,需求运用“window”来判别,但在“window”不可用的状况下,还需求用“self”反省,在 Node 中可以用“global”判别,但假设是独立的 JavaScript shell 环境,那状况又有变化。

    除了 async 速度翻 10 倍,JavaScript 还带来了什么?

    环境要素很复杂,各种平台环境需求停止冗杂的适配进程,这关于开发者来说会很痛苦,所以 V8 团队新增了一个“globalThis”特性,它可以在不依赖环境的状况下,轻松拜访全局“this”。

    目前 Chrome、FireFox、Safari 与 Node.js 都曾经支持该特性,同时关于 polyfill 与其它需求全局拜访“this”的库也适用,从这一点来说该特性是一个比较大的改良。

    WeakRef

    通常 JavaScript 中对象引意图味着只需对对象停止了援用,那么它就不会被 GC,而弱援用中,假设其它对象都不再援用该对象,那么 GC 机制会自动回收该对象所占用的内存,不思索该对象能否还在该援用的结构中。

    目前 JavaScript 中有 WeakMap 与 WeakSet 两个弱援用办法,只需将对象添加到 WeakMap 或 WeakSet 中,GC 在触发条件时就可以将其占用内存回收。

    WeakRef 是一种愈加初级的 API,它提供了一个进入对象生命周期的窗口,可以处置 WeakMap 仅支持 object 类型作为 Key 的场景。

    演讲者以缓存图像为例,map 会锁住图像的 Key 与 Value,这样图像名和图像数据就不会被 GC,由于它不断被援用着。另一方面,弱援用 WeakMap 在这里并不会起作用,由于图像名是一个字符串类型,而 WeakMap 规则其 Key 只能为 object 类型。

    (责任编辑:admin)