跳到主要内容

把服务和依赖注入用在数据请求里,AngularJS 才开始像个框架

· 阅读需 2 分钟
一介布衣
全栈开发者 / 技术写作者

刚接触 AngularJS 时,如果只看到模板语法和双向绑定,很容易把它理解成“更会操作页面的 jQuery”。但真正让项目组织方式发生变化的,往往是 service 和依赖注入这套东西。它让数据请求和公共逻辑开始有了固定归宿。

不要把所有 AJAX 都继续写在 controller 里

如果沿着 jQuery 时代的习惯走,控制器里很快就会堆满请求、数据转换、错误处理和界面状态切换。页面少的时候还能忍,页面一多就会发现很多逻辑其实在反复复制。

把这些请求动作收进 service,最大的好处不是“看起来高级”,而是同一份逻辑终于可以被多个控制器稳定复用。控制器专注于当前页面要展示什么,service 负责如何拿到数据,这个边界一清楚,代码阅读压力就会下降很多。

依赖注入让模块关系变得显式

AngularJS 的依赖注入刚开始会让人有点不适应,因为你不再是到处 new 一个对象或者直接引用全局函数,而是把需要的能力列在参数里,让框架帮你准备。

但用久了会发现,这种方式有个很实在的好处:一个模块依赖了什么,一眼就能看见。控制器要用 $http、要用自定义的 userService,它们都明明白白写在入口上,不容易藏着掖着长成隐式耦合。

复用和测试都会因此轻松一些

只要公共逻辑已经从控制器里抽出去,后面不管是换接口、补 loading 状态,还是给不同页面共用一套数据处理流程,都会比散在模板脚本里容易调整。哪怕团队当下还没做系统化测试,代码的可替换性和可阅读性也已经提升了一截。

小结

AngularJS 让人真正感到“这不只是个视图库”的瞬间,往往不是第一次写出双向绑定,而是第一次把请求逻辑放进 service,再通过依赖注入把它接回页面。那时你会明显感觉到,页面代码终于开始有结构了。