本章中我们站在全局的角度上对Angular的组成、模块间的配合做了系统地学习,同时又学习了多个Angular涉及的知识点。 1. 我们掌握了Angular中的可见性:组件、指令、过滤器默认为私有;而服务默认为公有。 2. 知晓了一个Angular模块是由组件、指令、过滤器及服务四大部分构成。 3. 可见性为公有的,可以被其它的模块引用使用;可见性为私有的,不可被其它模块引用使用。 4. 模块A引用模块B时,将模块B的公有元素(组件、指令、过滤器、服务)转换了自己模块的私有。Angular以这种方式将引用限制在本模块内,避免一个多模块项目在引用方面出现混乱而变得不可控。 5. 如果一个验证器并不需要后台支持,则应该定义为同步验证器。 6. 如果一个验证器需要后台支持,则必须定义为异步验证器。 7. 在异步验证器中,往往需要注入第三方服务,所以无法像同步验证器一样直接将某个方法声明为`static`,而是采用在方法回返回一个验证方法的方式。这是一种新的思想,需要我们在理解的基础上日后勤加练习。 8. 指令的类型有两种:一个是属性型指令,另一种是结构型指令。属性型指令以属性的形式应用到宿主元素上,在属性型指令中我们可以轻构的获取到宿主元素,进而对宿主元素进行变更,我们使用它完成了还不错的`loading`指令;结构型指令用于改变元素的结构,比如`*if`使用是一个内置的结构型指令,由于时间、篇幅、难度限制,在教程中我们不进行介绍。 9. 单元测试是保障项目质量的重要手段,若想规避BUG满天飞的尴尬情况,则必然要使用单元测试。本章中我们通过解决单元测试中显示的错误,了解了单元测试中个别服务是单例的,在整个生命周期中仅被初始化一次。其实单例模式是节约资源的重要手段,以后我们将越来越多的接触到这种模式。 10. 在前期成功的引用bootstrap以后,本单中我们又成功的引用了一个第三方对话框。在引入的过程中我们学习到了结合官方文档引用第三方库的另一种方法,相较于原有更改`angular.json`的方式,这种方式更加简单也更直观。相较于原生的对话框,第三方对话框则显得非常的友好。其实不仅如此:原生的对话框会在弹出对话框时,暂停应用的执行,而第三方对话框往往不会。 11. 本章还以批量删除为例,展示了使用面向对象思想前后的不同,进一步的感受到了面向对象的魅力所在。 12. 在引用可订阅的路由后,我们还在单元测试中使用`provider`手动实现了相关服务的提供者。同时我们还测试了多模块同时提供某一服务器,它们之间的优先级。 学习上并没有捷径,我们想做的是打造一条学习梯度不太陡的学习路线,使大家在学习过程中每天都能够进步一点点。如果你感觉只是看懂了,那么则应该尝试找个小的系统练练手,如果手上没有这样的系统。那么也可以在当前教程的基础上加入课程管理: 在课程管理中,可以为每个班的学习集体排课,也可以由学生自主选择课程。老师登录系统后可以查看自己的课表、学生也可以尝看自己的课程。 完成课程管理后,如果你还是在校的学生,则强烈推荐你继续学习一门后台的框架。在当下流行的后台框架中,Spring Boot无疑是那颗最璀璨的星。