作者自己在公司和自己的项目,使用angular1.x的过程中,随着项目规模一步步扩大,之前的代码组织方式弊端已经相当明显,每次功能拓展都是痛彻心扉的重构,一直在思考如何更有效率的组织代码,如何正确的使用Controller、Directive和Service
网上这方面的论述比较分散,打算把之前的经验总结一下
Controller只是初始化scope对象,在scope上添加方法
controller应该纯粹地用来把service、依赖关系、以及其它对象串联到一起,然后通过scope把它们关联到view上
业务逻辑应该存在于服务中,而非控制器
控制器永远都不应该去操作DOM,或是持有DOM选择器
其他所有过程都不应该出现在Controller中
所有与视图逻辑(或者说交互逻辑)无关的部分都应该写成Service
请求资源与数据缓存的东西放进service
集中管理所有数据,然后通过某种方式来请求修改它
强烈建议要仔细考虑和使用数据,以及如何存储数据
全部使用 Directive,也就是组件化(component)开发,不是只有公用组件才需要 Directive
需要用到 Controller的地方都都封装成自己的 Directive
DOM操作在指令中去写
数据需要格式化的东西用filter处理。
遵循单一职责原则(SRP)
服务、指令等应该拥有尽可能少的依赖关系
控制器是视图和模型间的协调者
逻辑就应该尽量少,有利于更好地进行测试
借鉴Angular 2.0的一些最佳实践
引用Trotyl Yu在知乎的回答: Angular 2 就是 Angular 1.x 最佳实践的延伸,所以了解 Angular 2 中的做法,就可以了解 Angular 1.x 中应该怎么做