摘要: 对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. Azure Sphere–“Object reference not set to an instance of an object” 解决办法

    在开发Azure Sphere应用时,如果出现项目无法编译,出现“Object reference not set to an instance of an object”时,必须从下面两个方面进行检 ...

  2. kafka学习笔记——基本概念与安装

    Kafka是一个开源的,轻量级的.分布式的.具有复制备份.基于zooKeeper协调管理的分布式消息系统. 它具备以下三个特性: 能够发布订阅流数据: 存储流数据时,提供相应的容错机制 当流数据到达时 ...

  3. Git使用详细教程(4):git rm使用详解

    我们使用git rm 文件名来进行删除文件的操作. git rm index.php这个命令把工作区的index.php删除并暂存了. 如何撤回已暂存的删除命令? 上图中已经给出了提示,使用git r ...

  4. 用XMLHttpRequest制作一个简易ajax

    概述 jquery退出历史舞台之后,我们怎么来发送ajax请求呢?可以用相关的库,也可以自己制作一个简易的ajax. 需要说明的是,我们使用的是XMLHttpRequest 2,它几乎兼容所有主流浏览 ...

  5. [Postman]Cookies(12)

    Postman的本机应用程序提供  MANAGE COOKIES  模式,允许您编辑与每个域关联的Cookie. 前往cookie经理 要打开MANAGE COOKIES模式,请单击“ 发送”按钮下的 ...

  6. NumPy 学习笔记(二)

    数组索引: 1.ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样:   由于数组可能是多维的,所以必须为数组的每个维度指定一个切片,使用切片时返回 ...

  7. Java 程序员必备的 15 个框架,前 3 个地位无可动摇!

    Java 程序员方向太多,且不说移动开发.大数据.区块链.人工智能这些,大部分 Java 程序员都是 Java Web/后端开发.那作为一名 Java Web 开发程序员必须需要熟悉哪些框架呢? 今天 ...

  8. Docker简介以及操作

    Docker 简介 Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linu ...

  9. [EXP]Microsoft Windows 10 (Build 17134) - Local Privilege Escalation (UAC Bypass)

    #include "stdafx.h" #include <Windows.h> #include "resource.h" void DropRe ...

  10. 微信小程序 WXS实现json数据需要做过滤转义(filter)

    前言 最近有在做小程序开发,在开发的过程中碰到一点小问题,描述一下先. 本人在职的公司对于后台获取的 json 数据需要做过滤转义的很多,不同的状态码会对应不同的文字,但是在微信小程序中又没有类似 v ...