首页 > 娱乐前沿 > 科技
费时近2年,JavaScript编译器Babel 7登场
洛洛 2018-08-29 10:53:32

JavaScript编译器Babel,在上一个版本Babel△6发布3年后,终于释出了新的版本Babel△7。这次的更新除了加入了PeerDependency等新功能外,移除了年度套件集(Yearly△Preset)以及阶段套件集(Stage△Preset),并且不再支援旧版本Node,以更新本身相依工具。xds我酷网

Babel是一个工具链,主要用于将ECMAScript△2015+程式码转成支援新旧浏览器的向后相容JavaScript。不像伺服器语言,由于浏览器版本太多种,客户端通常没有办法保证使用者的JavaScript执行结果都是相同的,这样的情况在旧版本的Internet△Explorer特别严重。当开发者想要使用新语法像是class△A△{},则会在旧的浏览器上因为语法错误而获得空白的画面。xds我酷网

Babel则提供开发人员能够使用新语法,但同时做到对旧浏览器向后相容的方法,就class△A△{}这个例子来说,Babel能够将语法转为var△A△= function△A(){}。由于Babel能够转换JavaScript程式码,又可以实现新功能,因此Babel也成为JavaScript制订委员会TC39和社交,在语言以及功能发展上的沟通桥梁。xds我酷网

Babel在GitHub上,目前存在130万个相依程式码储存库,每月在npm有1,700万次下载,主要框架React、Vue、Ember、Polymer,或是Wordpress等工具都看的到Babel身影,而Facebook、Netflix和Airbnb等企业也都有采用,许多JavaScript开发者可能都在不知情的状况下使用Babel,Babel已经可以说是JavaScript开发的基础。xds我酷网

而这次Babel△7更新部分非常多,不少还是变革性的改变,官方列出了主要6项重大更新。首先,由于这次Babel版本更新有大幅的变化,因此官方决定放弃支援较旧的Node版本,包括不再维护的Node.js△0.10、0.12、4与5,来对Babel本身程式码库进行改进,并且升级相依专案和工具,诸如ESLint、Yarn、Jest和Lerna等。xds我酷网

再来,通过切换使用范围(Scoped)套件,将官方的移至#babel命名空间。而这能帮忙使用者区分官方的套件,因此过去babel-core用法,现在则使用#babel/core,babel-cli改成#babel/cli,而babel-preset-env也应改用#babel/preset-env。过去范围套件并没有被广泛使用,许多开发者甚至不知道范围套件的存在,而现在搜寻范围套件的问题已经解决,下载计数器运作正常,只剩下部分第三方注册管理服务不支援,官方认为,没有理由等待这些服务。xds我酷网

第三项重大改变,Babel△7移除了并停止发布任何年度套件集,像是带有年分的preset-es2015套件集,因为#babel/preset-env就能取代这些需求,其包含了所有年度增加的内容,以及针对特定浏览器集的支援能力。babel-preset-env是一个存在已久的预设值,但可以用来取代开发者需要的es2015、es2016、es2017或es20xx这类套件集。另外,第四、这版也抛弃了Stage套件集,像是#babel/preset-stage-0。xds我酷网

第五、重新命名部分的套件,现在任何TC39提议的插件都使用-proposal关键字而非-transform,因此过去#babel/plugin-transform-class-properties现在要改成#babel/plugin-proposal-class-properties。xds我酷网

最后一项重要更新,现在Babel△7对#babel/core中的所有插件、套件集和顶级套件,引入同侪相依功能PeerDependency。PeerDependency是程式码预期使用的相依性,而非作为实作细节的相依专案。由于babel-loader原本就具有babel-core上的PeerDependency,所以这项改变只是将命名空间改为#babel/core,让使用者不会在错误的Babel版本安装这些套件。而对于那些已经在babel-core上存在PeerDependency,但还不想要有重大变更的工具,官方也已经发布了一个新版本的babel-core,来帮忙开发者过渡更新。xds我酷网

官方提到,Babel这次的更新都来自于社交的贡献,即便Babel被广泛的利用,却没有充足的资源好好发展,虽然大家使用开源资源似乎理所当然,但也应该考虑背后维护开源专案的人,没有资源的开源专案不会健康,因此呼吁社交可以贡献时间或是金钱,维持Babel发展。xds我酷网

上一篇  下一篇

I 相关 / Other

Cloud Foundry大调查:Java和JavaScript仍是企业的最爱

IEEE△Spectrum早前发布了学术界的程式语言偏好调查,而开源云端平台Cloud△Foundry基金会也公布了企业爱用的程式语言排名,Java和JavaScript仍然稳居第一、第二名宝座,甚至有与第四名之后拉开距离的趋势,而学术界

V8引擎编译器架构打掉重练,执行速度更快、记忆体耗用更少

Nodesource资深工程师Thorsten△Lorenz在自家博客发文提到,新的V8引擎做了很大个更新,特别是在编译器架构开发团队做出了重大的改变,从Crankshaft换成了TurboFan,以突破V8引擎陷入难以扩展的窘境,这个新的V8引擎

骇客入侵JavaScript套件ESLint Scope以窃取npm存取令牌

图片来源: ESLint JavaScript工具套件出版商ESLint周四(7/12)透露,骇客盗用了该套件维护人员的npm帐号,并上传了含有恶意程式的版本,以窃取其它用户的npm凭证,在短短的几小时内,即有4,500个帐号的存取令牌(ac

Android P扩大编译器缓解漏洞措施,可防范程式码重用攻击

Google宣布在Android△P中扩展编译器缓解漏洞的作法,来让特定类型的漏洞攻击失效。当未定义行为出现在,Android△P会让Runtime操作安全的失败,这个做法综合了两部分,分别是控制流程完整性(Control△Flow△Integr

Ruby 2.6.0功能预览增加JIT编译器,官方还预告将支援Visual Studio

Ruby释出2.6.0版本第二预览版,官方提到,这次的第二预览版释出的时程比过去都还早,因为包含了重要的功能更新JIT(Just-In-Time)编译器,另外,除了部分语法更新外,在效能上也有提升。Ruby在2.6版本将首次实作JIT

I 热点 / Hot