
西部世界是一部美剧,最近开始播放第三季了,主要讲由一座巨型高科技以西部世界为主题的成人乐园,提供给游客杀戮与性欲的满足,随着接待员有了自主意识和思维,他们开始怀疑这个世界的本质,进而觉醒并反抗人类的故事。
no Pain no Gain no Gavin
西部世界是一部美剧,最近开始播放第三季了,主要讲由一座巨型高科技以西部世界为主题的成人乐园,提供给游客杀戮与性欲的满足,随着接待员有了自主意识和思维,他们开始怀疑这个世界的本质,进而觉醒并反抗人类的故事。
前端三大框架vue,angular,react,今天来聊聊Angular发展史。
前端开发的基础仍然是HTML+CSS+Javascript。原始的Javascript(以下简称JS)写法是程序员撰写的JS代码和发布版JS基本相同,最多用混淆工具对单个文件做一些混淆处理。这个阶段的JS开发模式是手工+工具。
Jquery的出现让JS在前段开发中重要性大大提高,html和css的所有动态调整都可以由JS完成。但是由于Jquery只是对Javascript的框架封装,开发者的开发模式依然是手工+工具。
Node.js是对JS开发方式的一种重要改进。程序员基于Node.js编译器开发JS代码,开发后的文件由Node.js转换成发布版JS。发布过程中的优化、整合、混淆等等,完全有Node.js编译器完成。至此JS开发进入集成开发环境阶段。
Angular、React、Vue以及很多最新的前端开发框架(包括微信小程序)都是基于Node.js,因此它们都具有Node.js提供的特性。它们也被前端开发工程师形象称为“脚手架”
Angular开发的一个主要特点在于使用Typescript作为开发语言,源码文件以.ts结尾。Typescript是一种Javascript超集,最终也依赖Node.js编译器转化成发布的js文件。个人觉得使用Typescript的一个潜在好处是开发者可以明显的区分开发用的ts和发布的js文件。
AngularJS指的是早期的Angular版本,就是从2009年诞生的那个版本,那个时候AngularJS版本更新很慢,直到2016年,AngularJS的版本才是1.7*,而在这之后,AngularJS不在继续老版本的更新了,而是推出了一个全新的版本Angular 2,这个版本因为从底层彻底重构了,所以它和之前的AngularJS可以说不是一个框架了,因此,现在人们讨论的Angular一般意义上是指Angular v2及以上版本。它是一种前端应用框架,使用TypeScript语言。第一个版本实际使用Javascript,因此被称为AngularJS。
具体时间线如下:
Anguar 10马上要发布了,要知道之前用了8年才发布了一个主版本,而现在4年时间已经发布了8个版本。这是因为现在Angular采用了语义本版本控制,每个6个月就会升级一个大版本。
angular能够高速发展是因为它有三驾马车全力牵引着它。
TypeScript
现在的ts已经成为了各个开发框架的首选的语言。vue3.0也是使用的TypeScript。TypeScript是JS的超集,提供了比js更多的语法特性,具有面向对象的全部特性,非常适合开发大型项目。而Angular就采用了typescript来进行框架的构建,这样使得它的开发迭代变得异常迅猛。
rxjs
它是使用Observables进行响应式编程库,表示我们可以订阅异步数据流。该库提供了内置的运算符,用于观察,转换和过滤流,甚至将多个流组合在一起以一次创建更强大的数据流。Angular将所有信息作为从路由参数到HTTP响应的可观察流处理。
Zone.js
js是异步执行的,当代码很多的时候,如果想要统计执行时间将变得非常困难,而zone.js解决了这些问题,zone.js能实现异步Task跟踪,分析,错误记录、开发调试跟踪等,通过它的钩子,我们只要将函数执行挂在到它的上面,我们就能统计分析函数执行效率。
软件开发强调低耦合,而依赖注入就是将被依赖的对象(service)实例传递给依赖对象(client)的行为。将被依赖的对象传给依赖者,而不需要依赖者自己去创建或查找所需对象是依赖注入的基本原则。正是这样的设计思想,让angular的各个功能都通过依赖注入,使得代码耦合大大降低。
它是angular提供的下一代编译和渲染引擎,通过使用Ivy,我们AOT编译速度将得到大幅度提升。代码将变得更加简洁,代码将会得到大幅压缩,而这也是Angular 9默认开启的,当然,如果你不想使用这个引擎的话,也可以进行关闭。
“简单却不失优雅,小巧而不乏大匠”。很多使用过vue的程序员这样评价它,“vue.js兼具angular.js和react.js的优点,并剔除了它们的缺点”。授予了这么高的评价的vue.js,也是开源世界华人的骄傲,因为它的作者是位中国人–尤雨溪(Evan You)。
Vue.js 是一个JavaScript MVVM库,是一套构建用户界面的渐进式框架。它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计。相比于Angular.js,Vue.js提供了更加简洁、更易于理解的API,使得我们能够快速地上手并使用Vue.js;同时比起 React + Redux 相对复杂的架构,Vue.js 更加轻量级也更加容易上手,是初创项目的首选前端框架。Vue 的核心库只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合。并且作者是华人的关系,Vue拥有着对华人开发者最友好的api文档和官方教程。
时至今日,Vue已成为全世界三大前端框架之一,Github 上拥有近 17 万 Star 领先于 React 和 Angular,在国内更是首选。它的设计思想、编码技巧也被众多的框架借鉴、模仿。
Vue最初的目标是成为大型项目的一个良好补充。
设计思想是一种“渐进式框架”,淡化框架本身的主张,降低框架作为工具的复杂度,从而降低对使用者的要求。
<!-- v-bind -->
<div v-bind:class="box">全写</div>
<div :class="box">缩写</div>
<!-- v-on -->
<button v-on:click="btn">全写</button>
<button @click="btn">缩写</button>
2.0版本对Vue做了大幅度的重构,性能有了很大的提高,也为日后的跨端发展打下了基础。
性能提升
2.0 用一个 fork 自 snabbdom 的轻量 Virtual DOM 实现对渲染层进行了重写。在其上层,Vue 的模板编译器能够在编译时做一些智能的优化处理,例如分析并提炼出静态子树以避免界面重绘时不必要的比对。新的渲染层带来了巨大的性能提升,也让 Vue 2.0 成为了最快速的框架之一。
服务端渲染
Vue 2.0 支持服务端渲染 (SSR),并且是流式的,可以做组件级的缓存,这使得极速渲染成为可能。
3.0 是非常大的重构,源码使用 TypeScript 重写,目前的代码 98% 以上使用 TypeScript 编写。目前 Vue 3 的进展情况可以通过这个链接查看:https://github.com/vuejs/vue/projects/6 。