首先我们要明确一点,angular在web应用的角色,在传统的多页面web应用程序中,服务器根据输出数据和html模板渲染好页面所需的html输出到页面(所谓的服务器装配程序),随着单页面应用程序和ajax化的流行,页面应用程序开始利用ajax技术实现局部刷新的页面体验和快速响应的效果;但是这一切或是大多是的html渲染都是服务器来处理(当然也有各种js模板技术实现在客户端组装数据),每次发送的html片段会根据数据量的多少变化。 angular实现了服务器只需要将数据和html模板片段输出到客户端,让客户端进行装配数据,即减少了服务器cpu时间,又及大的降低了单次响应页面的大小。
再说关于mvc,传统的mvc被广泛的应用在c++/java/php/net等后端技术,由于前端技术不断的发展,js由单一的提交表单到大量应用于校验、与服务器通讯和各种提高体验等场景的应用而被不断的完善。它不在是浏览器上的一个小特性,而是一门流行的网站脚本语言(当然js也包括服务器开发场景nodejs,只不过我们熟知的场景多应用于网站开发),因此angular的应用中将前端代码引入了mvc(当然它不是第一个基于mvc的前端框架,例如ember也采用mvc,类似的基于事件监听、依赖注入和数据绑定的方式工作),angular中view层是html片段,Controller则是javascript类(在js中可以是function的体现也可以是angular中控制器的实现),model被存储在($scope)对象的属性中
引入三个新词汇
1、数据绑定:把UI中部分需要变更dom映射到js属性上,让他们根据更改自动同步到显示界面的过程
<html ng-app><!--如果需要angular解析应用,必须加入ng-app,不过根据angular需要操作的html片段可以选择写在其他标签内--> <script src="js/angular.js"></script> <script> function databinding($scope) { $scope.say = 'hello'; } </script> <body> <div ng-controller="databinding"> <input type="text" ng-model="say"> <span>{{say}}, world</span> </div> </body> </html>
2、依赖注入:给一个对象传入一个实例,并对该实例进行操作(http://www.cnblogs.com/xingyukun/archive/2007/10/20/931331.html)
3、指令:angular内置了很多非html规范中的属性,来实现数据绑定、视图和控制器的功能,以ng-开头