摘要: 对JSer来说,这是很有意思的1年。

本文灵感来自JavaScript Weekly周报,欢迎大家订阅。

The State of JavaScript 2018

The State of JavaScript调研已经连续做了3年(2016, 2017, 2018),今年一共调研了2万多个JS开发者。有这样一些有意思的发现:

  • 绝大多数开发者都用过ES6,同时TypeScript也越来越流行了;
  • React依然最流行的前端框架,同时Vue也越来越受欢迎了;
  • Express依然是最流行的Node.js框架(Node 8已经支持async函数了,Koa的价值应该少了很多);
  • Visual Studio code远远超越Sublime,成为最流行的JS编辑器;

作为一个后端用Express框架,尽量使用最新的ECMAScript语法,而前端用着TypeScript,不过框架还是AngularJS 1(这事要怪版本帝Angular不向后兼容),抛弃价值70刀的Sublime,今年加入VS code阵营的JSer,我也是算是够主流了吧!那你呢?

ECMAScript 2018

TC39(ECMAScript标准委员会)这些年越来越勤快了,从2015年(ES6)开始,每年发布一个新的ECMAScipt标准。今年大佬们继续忙于处理各种proposalECMAScript 2018,即ES9,则在6月如期发布了,其新增的特性并不多:

主要新特性:

新的正则表达式特性:

其他新特性:

如果想了解ES9的细节,阔以看看Axel Rauschmayer博士写的Exploring ES2018 and ES2019

Node 10

Node 10在4月发布并且在10月成为LTS,即长期支持版本。

Node 10使用了新的V8引擎6.8,因此性能提升了很多,比如Promise与Async函数的性能提升就非常明显,因此建议大家升级。

Node新版本的发布日期一直非常稳定,做到这一点也是不容易啊!

Vue 3.0

Vue.js Conference Toronto 2018上,尤雨溪发表了主题演讲Vue 3.0 Updates,新版本将会有这些变化:

Vue 3.0预计将在2019发布,大家期待吧!

Babel 7

2年多时间commit了4000多次,Babel 7终于发布了,新增了下面这些特性:

  • babel-upgrade: 升级Babel的工具;
  • babel.config.js:学习ESLint与Webpack,使用JS文件配置;
  • overrides:允许同一个项目使用不同的Babel配置,例如前端代码的targets为Chrome 60,而后端代码的targets为Node 8;
  • ...

主流浏览器对新的ECMAScript特性已经支持得不错了,不过还是存在并且永远存在很多非主流浏览器,于是我们还是离不开神奇的Babel。

jQuery 3.3.0

曾经风靡一时的jQuery发布了3.3.0,这个版本放弃了(deprecated)一系列方法:

  • jQuery.now
  • jQuery.isWindow
  • jQuery.camelCase
  • jQuery.proxy
  • jQuery.type
  • jQuery.isNumeric
  • jQuery.isFunction
  • Event aliases

这些方法大多会在jQuery 4.0中被删除,因此jQuery官方鼓励大家使用替代的方法。

从这个更新也能看出端倪,jQuery时代已经逐渐过去了,GitHub的极客们干脆完全抛弃了jQuery

V8引擎10周年

强大的V8引擎已经发布10周年了,它的命名灵感来自超级性能车的V8引擎,果然名副其实!其性能一直稳步提高:

V8引擎当初是为Chrome浏览器开发的,但是早已成为一个独立的项目。国内的众多浏览器,包括搜狗、360、猎豹、QQ、百度、UC都是基于Chromium浏览器开发,而Chromium相当于开源版本的Chrome,自然也是基于V8引擎的。因此,众多"国产"浏览器实际上都是基于V8的。融资了2.5亿元红芯浏览器也不例外,他们干脆打包了Chrome浏览器的安装包,果然有钱任性!还有,就连浏览器界的一朵奇葩Microsoft也投靠了Chromium阵营

另外,Node.js也是基于V8引擎的。

NPM模块event-stream被黑客攻击

这件事闹得沸沸扬扬,不过只是有很多噱头,如果认真分析黑客干了什么,其真实影响没那么大,至少Vue开发者没啥好担心的:

  • 比特币钱包copay依赖event-stream模块;
  • 黑客从骗取了event-stream模块的npm发布权限;
  • 黑客为event-stream模块添加了依赖flatmap-stream
  • flatmap-stream含有黑客代码,仅会在copay项目中正确执行,窃取用户的密码、私钥等信息,从而盗取比特币;
  • 有人说什么Vue可能遭受攻击,其实没有这回事,因为黑客代码只会在copay项目中正确执行。只有copay项目的package.json中的description字符串"A Secure Bitcoin Wallet"能够解密黑客代码;而且,黑客的代码是为copay量身定做的,对其他项目没有作用;再说,黑客是来窃取的比特币的,又不是挖矿,你的项目有比特币给人家偷吗?

同学们,不要被标题党给骗了啊!

《Refactoring》第2版改用JavaScript

《重构:改善既有代码的设计》大多数人都没看过,但是至少应该都听过。这本书刚出了第二版,所有示例代码由Java改成了JavaScript。

根据作者Martin Fowler解释《重构》这本书重点在于思想,适用于各种编程语言,所以选择什么语言并不重要。而他选择JavaScript的原因很简单,因为JS既支持面向过程编程,又支持面向对象编程,这样方便写非OOP代码重构的示例。

这里不妨引用尤雨溪的一句话:

至于重构、设计什么的,我只想说,看的是使用的人的水平,跟用什么语言没那么大关系。水平烂的人用 TS 一样写的是翔一样的代码,看看 java 就知道了。

《Refactoring》的示例代码用什么语言写根本不重要,重要的是背后的编程思想。顺便推荐一下《Clean Code》。

这本书原价54.66刀,的确有点贵,不过算是必读书,大家看着办...

GitHub抛弃jQuery

一直以来,GitHub最流行的编程语言都是JavaScript,可以说GitHub是全球最大的JS开发者社交平台了;同时,因为被IE的兼容问题折磨了多年,前端痛恨Microsoft!但是,有钱任性的Microsoft以75亿美元收购了GitHub!

另外,GitHub的技术极客们花了数年时间,以非常规范的流程完全移除GitHub网站了jQuery

  • 实现了一个ESlint插件eslint-plugin-jquery,禁止在代码中使用已经弃用的jQuery方法。这样可以防止同事使用jQuery方法。
  • 使用原生代码重写了2个依赖于jQuery的模块jquery-pjaxfacebox
  • 开发一个定制的jQuery版本,一旦完全移除某个jQuery方法,就删除jQuery中的对应代码。这样既可以减少jQuery大小,也可以防止同事使用已经移除的jQuery方法。
  • 根据用户统计数据,来逐步放弃支持低版本的IE浏览器,这样的话可以无需依赖jQuery来保证兼容性。
  • ...

是否使用jQuery各有各的想法和需求,但是GitHub弃用jQuery的流程非常专业,可以作为处理技术债的标准规范

Microsoft爱上JavaScript

土豪Microsoft似乎爱上了JavaScript,它家的Office 365, MicroSoft Teams以及Skype都开始使用JavaScript重写了。原因无疑是JS的跨平台特性。同一套代码多处运行,虽然现在还有很多问题,但是这样的未来不是挺好么?

此处应该再来感受一下大名鼎鼎的Atwood's Law

Any application that can be written in JavaScript, will eventually be written in JavaScript

在浏览器市场上,Microsoft曾经通过捆绑Windows打败了网景,不过这些年在Chrome面前一败涂地,现在终于"认输",选择基于Chromium重写浏览器。对于JSer来说,至少意味着浏览器兼容问题可以缓解很多。

根据The State of JavaScript 2018,Microsoft开发的Visual Studio code俨然已经成为最受JSer欢迎的代码编辑器,一些流行插件下载量高达上千万:

市值超过Apple,重回全球市值最高公司的Microsoft有钱任性,买下了JS开发者最多的GitHub。

IT界的罗马帝国(出处:吴军《浪潮之巅》)Microsoft又重新崛起了,这是一件很了不起的事情。

Oracle宣示JavaScript主权

Oracle明年就要开始给Java收费,虽然只是JDK 8的u192之后的更新要收费,这个行为大概会让很多Java开发者不爽...

另外,Oracle还要求一个iOS开发者将一款叫做”HTML5, CSS, JavaScript, HTML, Snippet Editor“的App从App Store下架,因为App名字中包含“JavaScript”字眼,而Oracle拥有JavaScript在美国的商标权。

Oracle这位大爷惹不起,因此大家正在一本正经地建议给JavaScript改名。当然这基本上是不可能的,这辈子都不可能。。。

参考

关于Fundebug

Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了9亿+错误事件,得到了Google、360、金山软件、百姓网等众多知名用户的认可。欢迎免费试用!

版权声明

转载时请注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2018/12/25/what-happens-in-2018-for-javascript/

2018年,JavaScript都经历了什么?的更多相关文章

  1. 一个页面从输入url到页面加载显示完成,中间都经历了什么

    第一种解释: 一般会经历以下几个过程: 1.首先,在浏览器地址栏中输入url 2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容.若没有,则跳到第三步操作. 3 ...

  2. 访问了一次百度网页,你都经历了什么?https及tcp协议揭秘

    打开https://www.baidu.com/ 网页一个简单的动作,都经历了什么?你想探究内部的原理吗?那我们一起去探索吧 1.准备工作 安装好wireshark.Wireshark(前称Ether ...

  3. django从请求到返回都经历了什么[转]

    原文地址:http://projectsedu.com/2016/10/17/django从请求到返回都经历了什么/ 从runserver说起 ruserver是使用django自己的web serv ...

  4. 一条SELECT查询语句在数据库里执行时都经历了什么

    每天都在跟 mysql 打交道,你知道执行一条简单的 select 语句,都经历了哪些过程吗? 首先,mysql 主要是由 server 层和存储层两部分构成的.server 层主要包括连接器.查询缓 ...

  5. 一次完整的HTTP事务的过程、从输入URL到网页展示,浏览器都经历了什么?

    详细介绍:老生常谈-从输入url到页面展示到底发生了什么 (1)一次完整的HTTP事务的过程 基本流程: a. 域名解析 b. 发起TCP的3次握手 c. 建立TCP连接后发起http请求 d. 服务 ...

  6. 大型面试现场:一条update sql执行都经历什么?

    导读 Hi,大家好!我是白日梦!本文是MySQL专题的第 24 篇. 今天我要跟你分享的MySQL话题是:"从一条update sql执行都经历什么开始,发散开一系列的问题,看看你能抗到第几 ...

  7. 前端回答从输入URL到页面展示都经历了些什么

    浏览器和服务器涉及大量网络通信内容,此处做了弱化介绍,作为前端主要关注第四部分.一. 网络环境保障我们先假定我们访问的URL为www.abc.com并且地址不在局域网内:首先我们所处的局域网的总路由应 ...

  8. 2018年JavaScript现状报告

    前言 JavaScript(后面统称JS)在过去五年得到飞速地增长,早期JS实现类似微博的“点赞”这样的功能都需要刷新一次页面. 后来开发者通过JS来制作SPA(单页面应用程序),在浏览器加载一次,后 ...

  9. 新手学JavaScript都要学什么?

    要从事网页开发,不知从何下手? 会JavaScript语言但是不知道该如何进阶! 最好的方法就是不断地做网页.写代码,不断地看别人的代码,研究别人的代码! 用代码实践JS的每个技巧点:多听多看多问多写 ...

随机推荐

  1. 暴走Python之运算符与条件语句

    本文原创作者:LoneliNess,本文属i春秋原创奖励计划,未经许可禁止转载   本文来源:i春秋学院   i春秋(ichunqiu.com)网络安全平台能提供专业的网络安全技术.网络渗透技术.网络 ...

  2. 一分钟理解 HTTPS 到底解决了什么问题

    本文原作者“虞大胆的叽叽喳喳”,原文链接:jianshu.com/p/8861da5734ba,感谢原作者. 1.引言 很多人一提到 HTTPS,第一反应就是安全,对于普通用户来说这就足够了: 但对于 ...

  3. Ubuntu18.04版本设置root账户

    Linux系统下文件的权限十分重要,大多数操作都需要一定的权限才可以操作,Ubuntu18.04默认安装是没有设置root账户的,因此想要获得root账户登录可以使用以下步骤:   1.首先获得临时的 ...

  4. FTP服务器搭建

    FTP 服务器架设: 关闭防火墙 service iptables stop 关闭SELinux setenforce 0 安装所需依赖及编译工具 yum install -y gcc openssl ...

  5. 《http权威指南》读书笔记6

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  6. JavaScript 对象(上)

    简述: 1.是 JavaScript 的基本类型 2.是一种复合值,可通过名字访问这些值 3.可看作属性的无序集合,每个属性都是一个名/值对(属性名是字符串或标识符) 4.可以从一个称为原型的对象继承 ...

  7. python pip 安装库文件报错:pip install ImportError: No module named _internal

    解决方法: pip2.7, you can at first curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py then python2. ...

  8. axios的秘密

    vue自2.0开始,vue-resource不再作为官方推荐的ajax方案,转而推荐使用axios. 按照作者的原话来说: “Ajax 本身跟 Vue 并没有什么需要特别整合的地方,使用 fetch ...

  9. PostgreSQL踩坑现场

    1.PostgreSQL表名.字段名.别名等大小敏感,默认都会转化成小写形式.如果名字中有大写字母,必须分别添加双引号.在写后台时,注意添加\ 如表名:TestTable中有个字段名userName ...

  10. 1.numpy的用法

    numpy创建ndarray对象的三种方法 1.1.list转化 In [8]: import numpy as np In [9]: a = [1,2,3,4] In [10]: x1 = np.a ...