下面把这些核心概念串一下。
与用户直接交互的是模板,模板接收来自用户的操作,通过数据绑定与对应的组件类交互。组件类完成处理之后,更新模板视图反馈给用户。从这个图上我们就能直观地看出来,组件处于Angular2核心地位,指令和服务都是作为组件的扩展。
从图中可以看出,中间大的部分可以看成是一个应用,而用户与应用交互。Angular本身是一个客户端框架,所以开发出来的是客户端程序。客户端程序需要与服务器交互,来从服务器获取数据或者给服务器传递数据。
Angular程序至少需要包含一个模块NgModule和一个组件component。
组件:是Angular应用的基本构建块,你可以把一个组件理解为一段带有业务逻辑和数据的Html。组件之间可以有父子关系,一个父组件可以包含多个子组件,子组价也可以有它自己的组件,组件可以去调用服务。
服务:是用来封装可重用的业务逻辑,如获取商品信息的逻辑。在信息详情页,订单详情页都需要商品信息。这时候可以把获取商品信息的逻辑封装在一个服务里,然后在不同的组件中调用。另外,组件可以调用服务,服务也可以调用服务。
指令:允许你向Html元素添加自定义行为。如可以写一个自动完成的指令。把这个指令写在一个Input标签上,Input标签就会有一个自动完成的功能。Angular框架内置了大量的指令来帮我们解决日常开发中常见的一些问题。
模块:是用来将应用中不同的部分组织成一个Angular框架可以理解的单元。可以把组件,指令,服务,理解为积木中各种小块。模块可以理解外一个个小袋子。而那些可以组装成汽车的积木小块可以放在一个小袋子里,可以组成其它模型的小块放在其它袋子里。
对Angular程序来说,图中四个组件,还有两个服务,再加上某个指令,放在一起可以实现一个登陆注册的功能,就可以把这些组件,服务,指令放在一个登陆注册的模块里。如果别的项目也需要一个登陆注册功能,就可以直接把这个模块引入到另一个项目里。
总之,组件,服务,指令是用来完成功能的,模块是用来打包和分发这些功能的。