链接:http://www.sitepoint.com/javascript-2015-review/

JavaScript经历了一个不平凡的一年。尽管到5月份已经20年了,关于JS的新闻、项目和兴趣继续成倍增长。或许这是一个奇怪怪圈,但是我想不出另一个技术有类似发展速度。JS变得越来越难以跟上,所以我希望这篇总结文章有助于大家更加了解JS.

ECMAScript 快速发展

七年的漫长等待,在2015年6月ECMAScript Harmony 或ECMAScript6.0 规范正式发布。

ES6很快又称为ES2015,尽管我不知道有谁这样叫过。名字的更改是好的;2015年完成了规范。JavaScript引擎现在可以完全支持ES2015而且每个人都能理解。不幸的是,营销类不会喜欢这点;没人回叫ES2015,似乎2016年一月一日它听起来就过时了。

ES2015对开发者来说意味着什么?做好准备吧类似:

  • classes
  • enhanced object literals
  • let and const
  • arrow functions
  • template strings
  • iterators
  • generators
  • destructuring
  • proxies
  • weakmap and weakset
  • symbols
  • promises
  • reflection

其中大部分是语法糖。例如,JavaScript将保存原型继承但是提供classical 继承,例如对于那些从其他语言迁移来的开发人员提供了 class 结构。

ES2015的支持仍然是不完整的,但是可以使用转换器如Babel 将大部分代码转换为ES5。这样也很好但是需要额外的工作使测试和调试变得更加复杂。就我个人而言,我是一个JavaScript勒德分子更喜欢旧的东西直到它的支持得到改善。

但是从现在起忘记ES2015 -- 让我们继续ES7/2016!

JavaScript复仇者联盟

随着WebAssembly的公布,引起一阵狂热;一个低级地二元包装类集合的web语言!

向浏览器发布大型应用程序并不总是可行的。一个游戏或复杂的程序需要下载数百兆源代码,编译成字节码并最终以机器代码运行。WebAssembly通过编译源码成一个更简单/更快的处理使这个过程更有效,Javascript引擎兼容字节码并且打包在一个紧凑的二进制文件里。浏览器代码将因此下载并且更快的开始。没有必要比正常的JavaScript运行更快但是可以优化。

我们之前已经见过二进制的土地。Flash, Silverlight, Java和Google Native Client(NaCI)全是类似的。但是WebAssembly应该有更好的机会展现它。

1. 需要相对简单的JavaScript引擎的变化

2. 不需要浏览器插件,并且

3. 需要Google, Microsoft, Mozilla 和Apple的支持

兴奋吗?你最好温习下你的C/C++技能,因为他们是第一个WebAssembly编辑器的目标。

Node.js 分叉
    Node.js从2014一个小众技术变成2015的必备技术。Node.js无处不在;桌面, 服务器,树莓派,嵌入式设备等等。即使来着其他领域的开发人员采用Node.js使用构建工具例如Grunt和Gulp。

2015年见证了关于Node的的党派争论并以与io.js合并结束。这意味着Node.js v0.12将在9月份被Node.js v4.0取代。是的,这是一个3个整版本的跳跃因为io.js已经达到版本3.0,也不能倒退了。

当然,版本号码也不意味着什么。。。除了那些现在认为Node.js 4+比Ruby 2he Python 3更先进。V5会在一个月后到达,他也会取代.NET4. 并且在速度上会赶上PHP7!

框架疲劳

2269个新的JavaScript框架在2015年发布了。我虚构了这些数字绝对没有研究过,但是很少有人会怀疑的。很难去追逐这些框架。。。

  • AngularJS依然很流行但是使用上已经达到稳定,它在2016年推出2.0版本会有更新。
  • React已经吸引了浓厚的兴趣。
  • Meteor承诺一个全栈同构JavaScript应用平台。
  • Vue.js 达到版本1.0 并且Aurelia发布了。
  • Ember, KnockoutBackbone.js已然健在
  • 其他,例如Rendr, 看起来他们会受欢迎,但是却没有。

对于JavaScript开发者是不可能有信心去依靠一个特定的代码库。对于一体化框架能解决很多问题但是也能引起很多问题。依赖一个框架是非常危险的,根据这篇文章--前端Javascript依赖是完全错误的明智建议,需要提取框架底层技术。

如果你必须使用一个框架但是从不认为长期是可行的。新的、更好的框架替代品在你开发一半的时候出现。永远不要忘了框架是一个选项--你不需要一定要用。小而灵活,最小的依赖关系的项目是一个更安全的赌注。

工具浪潮

你还记得那些无忧无虑的日子吗,web开发只需要一个浏览器,一个文本编辑器和一个FTP客户端。现在你需要Node.js, Gulp/Grunt, git, 静态HTML生成器, Sass编辑器, Autoprefixer, minifiers, uglifiers, linters, 浏览器同步和一系列其他构建工具来一个基本的“Hello World”页面。

这是好的。我们正在开发更加复杂的web程序,工具让我们自动化平凡的流程,把精力集中到更有趣的棘手部分。2015是一个伟大的一年,因为:

  • Atom 1.0--GitHub的Node.js-提供可控制编辑器,在六月已经发布了
  • PostCSS- 快速的、模块化CSS处理器,获取了今年我的工具奖。
  • 一系列新的浏览器包括EdgeVivaldi增强许多开发工具。

是的,尽管所有这些免费优化工具,网页平均重量要多2MB,并且包含一百多个单独文件。这是进步吗?或许不是,如果你读过Klint Finley的这篇文章我关闭JavaScript整整一个星期,感觉太棒了。其实这不是科技的错误,是实践方面。关闭JavaScript广告、弹出框、对话框、无限滚动的页面、社交注册提示、时事通讯和其他一些我们认为在web页面上很重要的功能。

一些公司希望停止网页成为糟糕的替代品,例如Facebook InstantGoogle Accelerated Mobile Pages.我不相信一个隔离的非标准web是答案。

最后

    据官方消息:Node.js比PHP更好!无可否认地,这篇文章没有做出这样的表态,但是它说明了Node.js已经到来。或许PHP正在提高版本7的速度来获得赢的局面,但是最后使用任何让你觉得舒服的语言。颇有争议地,最近他们WordPress.com前端从PHP转换到Node.js.但是我怀疑指的更多关于Colypso项目的状态而非语言。

2015年的技术术语是“同构”。SitePoint已经讨论过,提供了示例代码. 但是其实这意味着JavaScript代码一次编写任何地方都能工作 - 在浏览器或者服务器上。对于小型独立的应用程序一开始是相对简单,但很快就会变得极为复杂。

jQuery 3.0首次在7月发布。承诺发布两个新的版本;一个用于现代浏览器,一个兼容版包括兼容IE8。团队期待一些有成就的突破改变。

11月,Mozilla宣布他们将停止销售JavaScript驱动的Firefox操作系统的智能手机。

这不是Firefox 操作系统的终结 -- 开发继续,并会应用到一些智能TVs -- 但是这些信号是不好的。或许最好是押注在一些还未知的操作系统的安装,离线web应用程序?

2015年最让人惊喜的JavaScript公司来自Microsoft:

  • Visual Studio Code,一个新的跨平台的扩展, 类似Sublime Text/Atom编辑器
  • vorlon.js, 一个开源的远程调试和测试公司,
  • Chakra, Edge的浏览器引擎,

鉴于最近开发网络,或许我们应该将该公司成为“新微软”?

展望2016

对JavaScript的态度已经改变了。几年前(不公平)JavaScript被嘲笑虽然难以理解,程序员避开有bug的脚本语言。现在,你无法避免这个语言,2016年工具、框架和项目的发展将会继续。

虽然不容易跟上,但是回归JavaScript不会有太大问题。

标签: 2015 回顾、ES2015, es6, javascript框架、JavaScript工具、node.js、WebAssembly

JavaScript: 2015 年回顾与展望的更多相关文章

  1. JavaScript jQuery 入门回顾

    ​$符号 $是著名的jQuery符号.实际上,jQuery把所有功能全部封装在一个全局变量jQuery中,而$也是一个合法的变量名,它是变量jQuery的别名: window.jQuery; // j ...

  2. JavaScript中作用域回顾(避免使用全局变量)(瀑布流的实现)(scroll事件)以及Django自定义模板函数回顾

    页面显示照片样式为瀑布流: 上面的div个数可以按照自己安排进行划分.img的分布可以使用模板标签以及自定义模板函数进行排布: 自定义模板函数实现可以看,最后几列:python---django中模板 ...

  3. 关于学习JAVA程序设计语言的回顾与展望

    回顾篇 时光荏苒,大学生活已然过半.看了老师分享的几篇博文,我的内心是震憾并且惭愧的.相比别人,自己做的实在是不够多,不够好.在刚刚结束的大二上半学期,我学习了JAVA初级程序设计,虽然每节课都认真听 ...

  4. 新的开始 | Arthas GitHub Star 破万后的回顾和展望

    一切新的开始,都始于一个里程碑. 2月20日上午,Java 开源诊断工具 Arthas 的 GitHub Star 突破10000,距离开源后的第一个Release 版发布仅 147 天. 从中,我们 ...

  5. JavaScript jQuery 入门回顾 2

    JQuery 滑动 利用jQuery可以在元素上创建滑动效果. slideDown() 向下滑动元素. slideUp() 向上滑动元素. slideToggle() 在 slideDown() 与 ...

  6. JavaScript 快速入门回顾

    数据类型Number JavaScript不区分整数和浮点数,统一用Number表示,以下都是合法的Number类型: 123; // 整数123 0.456; // 浮点数0.456 1.2345e ...

  7. Javascript基本类型回顾

    本文是学习和总结ECMAScript5.1规范形成的.是对规范中所提及的Javascript类型进行剖析后的个人观点的表达(如有Bug望各位道友指正).主要是各类型的实例方法,不包含任务构造函数的方法 ...

  8. SE_Work0_回顾与展望

    项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求:阅读推荐博客并回答问题 热身作业阅读部分要求 我在这个课程的目标是 提升团队管理及合作能力,开发一项满意的工程项目 这个作业在哪个 ...

  9. Apache HBase 2015年发展回顾与未来展望

    编者按:高可用架构推出 2015 年度回顾系列文章,分享在架构领域具有典型意义的年度案例,本文由张虔熙分享.转载请注明来自高可用架构公众号「ArchNotes」.   张虔熙,Hulu 网,专注于分布 ...

随机推荐

  1. Android 网络提交数据(使用Asynchronous Http Client)

    项目主页及简单使用方法http://loopj.com/android-async-http/ 页面布局就不复制了,把主要的Activity记录下来,供自己以后使用: package com.exam ...

  2. JAVA常量介绍

    常量: 在程序执行过程中,其值不发生改变的量: 1.分类:     字面值常量和自定义常量: 1.字面值常量有以下几种: 字符串常量.小数常量.整数常量.字符常量.布尔常量(true.false).空 ...

  3. 架构演进历程及为什么选择Spring Cloud

    单体式架构: 垂直拆分: 垂直拆分的特点: 分布式服务: 分布式服务的特点: SOA面向服务的架构: 服务治理: 微服务: 微服务结构: 服务调用方式: http客户端工具:

  4. Spring中统一相同版本的api请求路径的一些思考

    Spring中统一相同版本的api请求路径的一些思考 问题场景 当我们在实际开发中,可能会遇到开发相同同版本的api, 假设相同版本的api请求路径为/v1/functionA,/v1/functio ...

  5. 设置Cookie最大存活时间

    Cookie和Session都是由Tomcat自动创建的对象,Cookie的默认最大存活时间是 -1 ,即当浏览器关闭时Cookie就消失了:Session的默认最大存活时间是30分钟. 使用Sess ...

  6. ftp和sftp

    一.ftp ftp是文件传输协议,ftp协议包括两部分,一个是ftp客户端,另一个是ftp服务器. 原理:一般情况下,当使用FTP服务的时候,我们都知道默认是21号端口,其实还有一个20号端口.FTP ...

  7. HDU 1850 Being a Good Boy in Spring Festival 在春节做乖孩子(Nim博弈,微变形)

    题意: 思路: 如果全部扑克牌数目异或的结果ans为0,则必输,输出0.否则,必须要给对方一个P状态,可以对所有扑克堆进行逐个排查,将ans^a[i]就可以得到除了a[i]之外其他扑克数的异或结果tm ...

  8. COGS 1215. [Tyvj Aug11] 冗余电网

    ★   输入文件:ugrid.in   输出文件:ugrid.out   简单对比时间限制:1 s   内存限制:128 MB TYVJ八月月赛提高组第2题 测试点数目:5 测试点分值:20 --内存 ...

  9. 【TensorFlow入门完全指南】神经网络篇·MLP多层感知机

    前面的不做过多解释了. 这里定义了两个占位符,各位也知道,在训练时,feed_dict会填充它们. 定义相关网络. 这里是权值矩阵和偏差. 这里是实例化了网络,定义了优化器和损失,和上一篇一样. 最后 ...

  10. 程序员的智囊库系列之3--分布式文件系统(Distributed file systems)

    程序员的智囊库系列之3--分布式文件系统(Distributed file systems) 这是程序员的智囊库系列的第三篇文章.上一篇文章本来打算介绍几个搭建网站的框架,但由于这部分的内容较多,还需 ...