JavaScript的奇妙之旅(一)

概要

JavaScript是当前最流行编程语言之一,JavaScript发展过程是怎么样的?它有哪些重要的发展阶段呢?

初始时代

JS是1995年网景为自家浏览器设计的用于网页交互的脚本语言. 其由Brendan Eich设计, 借鉴了Scheme , 当时如日中天的Java ,以及Smalltalk的特性. 所以JavaScript在主流编程语言显得很奇怪, 首先它带有很强的Scheme的印记,函数是第一公民,原型链;但是它也同样有着Java的一些标志。

AJAX

AJAX(asynchronous Javascript and XML)可谓是Web发展的重要里程碑, 它极大地提高了Web应用程序的交互性。 浏览器在用户界面和服务器之间添加了一个抽象层面, 通过JavaScript来控制XMLHttpRequest对象,专门向服务器发送数据以及接受来自服务器的数据,并且在处理数据后并控制界面的变化反馈给用户。

AJAX的优点:

  • 减少了静态资源的重复请求,无缝刷新界面
  • 提高了交互性,给予了前端构建富应用的能力

JQuery

Jquery是将原生的JS的DOM操作进行封装, 正如其核心理念:Write less,Do more. 使用Jquery能大大地减少形如getElementById之类繁琐的操作, 以更加简洁的方式来操作DOM树以及进行Ajax的操作,同时解决了一部分浏览器兼容问题。

前端框架与JS

浏览器的发展和JS的进化,以及三大框架出现时间,重要的节点如下:

  • 2008年的V8引擎发布
  • 2008年ECMAScript 5.0发布
  • 2009年AngularJS
  • 2011年React
  • 2014年Vue
  • 2014年Angular2
  • 2015年ECMAScript 6发布 ,且改名为ECMAScript 2015( ES6大多数情况就是指这一版本, 也有情况作为每年6月新标准的含义 )

不大的时间跨度中,前端变化可谓是日新月异,各种框架层出不穷。

当前而言,前端情况基本稳定下来,当然,是相对之前的日新月异而言。

相较之前的变化:

  • JS通过框架的分层架构的MV*,控制着ViewModel,声明式地完成业务代码,原有的DOM操作由框架来完成
  • 组件化,非常有意义
  • 另外React通过将JSX 转换成虚拟DOM,也就是将HTML转换成JS对象,对DOM有了完全的控制
  • ES6解决了许多过去语言层面的问题,一些新的特性对开发者更加友好。

后端NodeJS

在Node出现之前,JavaScript在后端上没有太多可说的,只是少部分作为脚本语言输出拼接html传递到浏览器。NodeJS的出现给JavaScript推开了另一个世界的大门,其作者本身是为了编写一个高性能服务器,选择JavaScript的原因是
1. JavaScript在服务端没有历史包袱,可以尽情发挥
2. V8引擎的高性能
3. 异步IO和事件驱动的机制

Node作为「服务端语言」,其适用的场景是高I/O的场景,然而现在Node更像是一个平台:活跃的社区,NPM中数量庞大的包。
主要应用:

  1. 后端框架如Express,Next
  2. 前端工具链的基础设施
  3. 服务端渲染

Node对Web相关的支持做得很好,而且与前端没有语言的切换成本,所以对于全栈定位非常合适,但是和传统后端语言Java以及Go比较还是有不少问题的。

其它方面

另外出现了很多类JS的语言如:

  • TypeScript:其实是JS的超集, 可编译成JS代码. 由微软主持开发,其中有Anders Hejlsberg参与. TS写起来感觉更有安全感, 而且许多面向对象特性引入,让设计更加舒畅 .而且三大框架都在积极使用Typescript, 十分值得开发者学习.
  • Dart: 感觉更像是Java的JS, 很多人大概也是由于2019以来Flutter的火热才接触学习这门语言. 而且写Flutter应用的时候, 很多逻辑和React相似, 官方也提到了参考了React. 另外:Dart最初是google为了替代JS而推出的语言,曾经Chrome内建了Dart VM,但很遗憾没有太多后续,Chrome也在移除了Dart的支持。

end