前端为什么需要MVC?
1.前端的代码规模越来越大,切分职责是大势所趋;
2.为了复用:很多逻辑是一模一样的;
3.为了后期维护的方便:修改一块功能不影响其他功能。
注意:MVC只是手段,终极目标是模块化和复用。
前端实现MVC的困难
Js脚本加载分为两个阶段:1.浏览器加载脚本;2.加载完成之后JIT编译执行。
1.操作DOM的代码必须等待整个页面全部加载完成。
2.多个JS文件之间如果出现相互依赖,程序员必须自己解决。
3.JS的原型继承也给前端编程带来了很多困难。
Angular的四大核心特性
1.MVC
2.模块化和依赖注入
3.双向数据绑定
4.指令
Controller使用过程中的注意点
1.不要试图去复用controller,一个控制器一般只负责一小块试图;
2.不雅在controller中操作DOM,这不是控制器的职责;
3.不要在controller里面做数据格式化,angular有很好用的表单控件;
4.不要在controller里面做数据过滤操作,ng有$filter服务;
5.一般来说,controller是不会相互调用的,控制器之间的交互会通过事件进行。
$scope
1.$scope是一个POJO(Plain Old JavaScript Object);
2.$scope提供了一些工具方法$watch()/$apply();
3.$scope是表达式的执行环境(或者叫作用域)
4.$scope是一个树形结构,与DOM标签平行
5.子$scope对象会继承父$scope上的属性和方法
6.每个angular应用只有一个根$scope对象(一般位于ng-app上)
7.$scope可以传播事件,类似DOM事件,可以向上也可以向下
8.$scope不仅是MVC的基础,也是实现双向数据绑定的基础
9.可以用angular.element($0).scope()进行调试。
$scope的生命周期
1.创建
2.注册监控
3.检测模型变化
4.观察模型是否脏
5.模型销毁
Ajax路由实现的缺陷
1.ajax请求不会留下历史记录
2.用户无法直接通过URL进入应用页面的指定页面(保存书签、分享给朋友链接)
3.Ajax对SEO是个灾难。