AngularJS学习

1、AngularJS四大特性:MVC 、模块化、双向数据绑定、指令系统。
(1)MVC:一个古老的框架,MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
这里写图片描述
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
(2)模块化:在做angularjs时首先要考虑到的就是模块化(module),因为其他的东西都是挂在module下面的。只有将模块创建出来后才能去调用config、filter、controller之类的。所以首先要创建模块,然后在模块下创建控制器。
(3)指令系统:可以自定义一堆指令。ng-app就是一个指令,它类似于main方法,当遇到它时,就是说明开始使用angularjs。angularjs就是从ng-app启动的,所以单页也只能有一个。
(4)双向数据绑定:首先要说一下
单向数据绑定*它是将已经做好的模板和model从后台读取的数据相互绑定,生成HTML标签并将其插入到文档流里面生成视图,这就是经典的单向数据绑定。缺点是因为生成的HTML标签一旦生成就不能改变,一旦数据改变就要从新再次读取数据并进行绑定,将整体替换。*backbonejs不实现双向数据绑定的解释:大概的意思就是双向数据绑定在实际的运用中很少,没必要。
这里写图片描述
双向数据绑定视图与数据是对应的,当视图里面的数据发生变化时(例如表单数据发生变化,当用户在前端页面完成输入后,不用任何操作,我们就已经拿到了用户的数据存放到数据模型中了。),数据模型里面的数据也要发生变化。当数据模型里面的数据发生变化时,视图里面的数据也会自动去更新。这里就需要借助一个事件机制。实现双向数据绑定的前端框架主要有AngularJS,VueJS等。
这里写图片描述
2、为什么需要MVC?
前端代码规模越来越大,切分职责是大势所趋
为了复用:很多逻辑是一模一样
为了后期维护方便:修改一块功能不影响其它功能

MVC只是手段,终极目标是模块化和复用

3、前端实现MVC的困难
操作dom的代码必须等待整个页面全部加载完成
多个js文件之间如果出现互相依赖,程序员必须自己解决
js的原型继承也给前端编程带来了很多困难

因为:浏览器加载脚本是以字符串形式加载的,然后通过内部的JIT进行编辑
4、MVC实现方式:这里写图片描述
一个控制器对应一个视图,当多个控制器有通用的东西,我们会把它抽出来,作为一个服务service来调用而不是让控制器继承通用的控制器(易错点)
注意
不要用视图去复用Controller,一个控制器一般只负责一小块视图,同时控制器里面也有一些业务逻辑,业务逻辑的可复用性不强;
不要在Controller中操作DOM,这不是控制器的职责,DOM操作进行封装放在指令里面(操作DOM的效率很低,因为HTML标签的改变会造成浏览器去重写和重绘);
不要在Controller里面做数据格式化,ng有很好的表单控件;
不要在Controller里面做数据过滤,ng有$filter服务;
一般来说,Controller是不会相互调用的,控制器之间的交互会通过事件。 控制器之间进行互相交互的方法:通过scope或者是数据模型上的事件去进行交互,controller在内部去进行监控事件,来实现一些操作。
这里写图片描述
5、如何复用model:
ng-modle运行机制:页面加载完成后angular启动,当找到ng_app之后angular就自动认为ng_app内的内容都是由它负责,然后去找这些程序里面所有的指令,并进行编译操作。找到ng-modle,生成ng-modle里面定义的数据模型,这个数据模型是挂在所谓的** rootScopengappangularnewangular scope对象的上面。
这里写图片描述
这里写图片描述
6、如何复用view(利用指令去实现视图的复用)
这里写图片描述
7、AngularJS的MVC是借助$scope(作用域)实现的,遵循js属性查找机制,会向上查找。
AngularJS也有事件机制,向上传播与向下传播。
这里写图片描述
可以使用firebug上面的插件进行辅助调试。
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值