Angular2与Angular1的区别
原文地址: http://www.angularjs.cn/A2Ar
整体上来说,Angular2变得更加简洁,最核心的概念只剩下一个,那就是组件Component,其它所有的一切都是围绕着Component展开的。
从这一点来看,Angular2无疑是受到了React的强力影响,毕竟React的核心概念也只有一个,也是Component。
所以,在使用ng2的时候,大家只要会写Component就行了,其它那些什么服务啊、路由啊、管道啊,都是些小工具而已。
接下来罗列一下Angular2与之前的1.x相比带来的核心改变。
第一点:Angular2删掉了$scope的概念。
在ng1.x里面,$scope是一个相当强大又相当可怕的东西,一言不合就让开发者自己$apply。ng2响应社区的强烈吐槽,删除(或者说隐藏) 了$scope这个东西,开发者不再需要感知到它的存在,另外,由于ng2引入了zone.js,所以即使在各种回调函数中修改数据模型也不需要手 动$apply()了。
这一点说明了群众们吐槽的力量还是相当强大的!
第二点:删掉了ng-controller指令。
Controller终于和Component合体了,小僧想说的是,人家Backbone早就这么做了,你们一开始只顾着自己挖坑,也不看看友军的战法,还好浪子回头为时不晚。
第三点:大幅度演进了脏值检测机制。
大家都知道,”双向数据绑定“之所以能工作,都是因为底层有”脏值检测“这么一个神奇的东西。而实际上ng1.x里面的脏值检测机制的运行效率是非常差的,这就是为什么大家一直在吐槽绑定的对象不能太多、太深的原因。
那么,在ng2中,大幅度演进了这一机制,不仅引入了单向绑定,还引入了各种绑定策略,例如:只检测一次、利用JIT动态生成脏值检测代码等等。毫无疑问,有了这些工具之后,数据绑定效率不再是问题。
第四点:嵌套路由问题。
大家都知道,在ng1.x里面有一个非常讨厌的问题,官方的路由机制是不能嵌套的,这就导致大家在开发的过程中不得不依赖于第三方的ui-router库。ng2中没有这个问题了,因为ng2的路由是基于Component的,天然就支持嵌套。
第五点:依赖注入机制改造。
ng2里面的依赖注入简直和Java中的注解一毛一样,估计核心开发团队里面混入了Java大神。如果你熟悉Spring那一套注解的用法,那么写ng2的组件几乎没有学习成本。
第六点:框架整体上基于TypeScript开发。
这是最大的一个变更,但是大家不用害怕,因为你只要记住我一句话就再也没有顾虑了:TypeScript和ActionScript3一样,不过是变态版的Java而已。
Angular2与Angular1的区别的更多相关文章
- 浅谈angular2与angularJS的区别
简介 大家好,今天给大家介绍一下angular,相信做过前端的小伙伴们都知道angular的大名,angularJS自2012年发布起就受到了大家的广泛关注.他首次提出了双向绑定概念让所有人都耳目一新 ...
- angular2学习--根模块
最近有时间,学习一下angular2,根据自己的理解添加一些自己的理解,有什么不对的地方请指教, 学习的地址是https://angular.cn/ 下边是分享一下我学习过程 angular2和ang ...
- ng1和ng2的部分对比----angular2系列(四)
前言: angular2相比angular1做了革命性的改变.对于开发者来说,我们知道它框架的实现上改变极大.我们看到代码也能发现它写法上变化很大,似乎完全是另一个东西. 但是当我们真正去写下去的时候 ...
- angular1.5 Components
如今前端界angular react vue三大框架并驾齐驱,其中有一个共同点就是组件化开发,这也符合w3c 推行Web Components的趋势.现如今不懂组件化开发的前端绝对不是好厨子.跳槽新公 ...
- Angular2入门-架构总览
▓▓▓▓▓▓ 大致介绍 在3月23日,Angular4正式发布(没有3).似乎现在学Angular2又晚了,又晚一步-_-||.Angular2在Angular1的基础上有了较大的改变.之前向一个同学 ...
- 前端面试angular 常问问题总结
1. angular的数据绑定采用什么机制?详述原理 angularjs的双向数据绑定,采用脏检查(dirty-checking)机制.ng只有在指定事件触发后,才进入 $digest cycle : ...
- angular的常见问题
ng-if 跟 ng-show/hide 的区别有哪些? 第一点区别是,ng-if 在后面表达式为 true 的时候才创建这个 dom 节点,ng-show 是初始时就创建了,用 display:bl ...
- Angularjs2 学习笔记
angularjs2 学习笔记(一) 开发环境搭建 开发环境,vs2013 update 5,win7 x64,目前最新angular2版本为beta 17 第一步:安装node.js 安装nod ...
- AngularJS常见面试题
本文引自:https://segmentfault.com/a/1190000005836443 问题来源:如何衡量一个人的 AngularJS 水平? ng-if 跟 ng-show/hide 的区 ...
随机推荐
- P3810 【模板】三维偏序(陌上花开)(CDQ分治)
题目背景 这是一道模板题 可以使用bitset,CDQ分治,K-DTree等方式解决. 题目描述 有 nn 个元素,第 ii 个元素有 a_iai.b_ibi.c_ici 三个属性,设 f(i) ...
- flask汇总
flask框架 蓝图 随着flask程序越来越复杂,我们需要对程序进行模块化的处理,之前学习过python的模块化管理,于是针对一个简单的flask程序进行模块化处理 Blueprint概念 简单来说 ...
- Error:Execution failed for task ':app:preDebugAndroidTestBuild'. > Conflict with dependency
Error : Execution failed for task ’ :app: preDebugAndroidTestBuild’.Conflict with dependency ‘com.an ...
- Python 学习笔记:Python 操作 SQL Server 数据库
最近要将数据写到数据库里,学习了一下如何用 Python 来操作 SQL Server 数据库. 一.连接数据库: 首先,我们要连接 SQL Server 数据库,需要安装 pymssql 这个第三方 ...
- 2.docker machine 创建 包含 docker 的 linux 虚拟机
1. 启动 从https://github.com/boot2docker/boot2docker/releases下载iso到~/.docker/machine/cache/里 docker-mac ...
- android 获得存储设备状态
1.获取存储器总大小,可用大小 File path= Environment.getExternalStorageDirectory();StatFs fs = new StatFs(path.get ...
- java.lang.IllegalArgumentException: Cannot format given Object as a Date
在进行日期转换的时候遇到了这个问题, 非常的恼火 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" ...
- CSS样式表------第一章:样式表的基本概念
CSS(Cascading Style Sheets,层叠样式表),控制页面样式外观,作用是美化HTML网页. 一. 样式表的基本概念 1.样式表的分类 (1)内联样式表 -----放在元素的开始标 ...
- 一文带你了解BOM基本知识
1.1. BOM和DOM的区别DOM就是一套操作HTML标签的API(接口/方法/属性) BOM就是一套操作浏览器的API(接口/方法/属性) 1.2. BOM中常见的对象window: 代表整个浏览 ...
- 给本地web项目配置域名
给本地的web项目配置一个域名 通常访问本地问项目时,使用localhost:port/projectname或者127.0.0.1:port/projectname来实现.我们可以通过配置tomca ...