AngularJS 的路由、控制器和 digest 循环要一起理解
· 阅读需 3 分钟
AngularJS 真正用到多页面切换时,很多新问题会一起冒出来。为什么切个路由控制器就重新执行了?为什么某个值明明变了,页面却没有马上更新?为什么 watch 一多以后页面开始变慢?这些问题如果分开看,很容易越学越乱。
AngularJS 真正用到多页面切换时,很多新问题会一起冒出来。为什么切个路由控制器就重新执行了?为什么某个值明明变了,页面却没有马上更新?为什么 watch 一多以后页面开始变慢?这些问题如果分开看,很容易越学越乱。
2014 年前端最明显的变化之一,就是大家开始不再满足于“jQuery 把页面拼起来”这种方式了。页面逻辑越来越复杂,数据与视图之间的关系也越来越需要一种更系统的组织方法。
刚接触 AngularJS 时,如果只看到模板语法和双向绑定,很容易把它理解成“更会操作页面的 jQuery”。但真正让项目组织方式发生变化的,往往是 service 和依赖注入这套东西。它让数据请求和公共逻辑开始有了固定归宿。
第一次看 AngularJS 的指令示例时,很容易觉得它像一种“什么都能包起来”的能力。按钮、列表、弹层、表单,似乎都可以做成指令。这个想法没错,但如果刚入门就把所有逻辑都往指令里塞,通常很快会把自己绕进去。