3-7 模块的概念
目前我们只有根模块
如果都做在一个模块中,会让你的程序难以维护
模块和模块之间有关系,模块自己本身也有一些属性。
imports是这个模块依赖于其他的模块。例如依赖于其他的第三方的类库是 别人做好的,这里我依赖,所以导入进来。。
export:就是你的模块要给别人暴露什么,别人用你的时候,你给别人提供了什么。比如你有个组件要给别人用,那么就配置在Exports里面去。
Providers:对内,也就是对自己这个模块暴露哪些服务。
Declations:我这个模块里面有哪些组件,要在这里做声明,让我模块之间的组件互相知道彼此,但是如果你是从imports中导入一个别的组件,那个模块提供的一些组件用不着在你自己的模块里面声明它。这里只声明在自己模块内创建的组件,
我们在根模块创建的组件
我们都在根模块中声明了
例如我们赢的ngModel都是另外一个模块提供的指令
我们的模块导入了其他模块。
FormModule里面提供了ngModel指令。你要想使用这个指令,这个指令是其他模块提供的。
我们要把其他模块在Imports数组中,加载进来。否则的话就不能用了。
这个formModule对外输出了NgModel这个命令 ,所以我们你才能去使用它,它在它的module放在了Exports 。然后我们在自己的模块Import进来,就可以使用了。
bootstrap表示根模块。表示的启动的入口组件是什么。只有根模块才会有这个东西。
BrowserModule是一个特殊的模块,在根模块需要依赖BrowserModule,在其他模块是不需要的。
而且这个BrowerModule最主要的目的是Export了CommonModule和ApplicationModule这两个
ApplicationModule是整个应用的模块,为什么根模块需要它就是因为这里导出了。 ApplicationModule负责引导、初始化一些东西。
所以根模块需要依赖BrowserModule。
CommonMudule是其他模块都需要的,所以根模块不需要再单独导入CommonMudule,
CommonMudule里面提供了很多的指令。BrowerModule顺便把CommonMudule导出了一次。
Exports主要是用于模块之间的关系。Imporst决定了我们的模块依赖哪些模块。Imporst里面指定是模块,只是导第三方的模块。导入它的同时,里面包含的组件就可以用了。
Exports里面可以是模块,也可以是指令,
Providers后面讲依赖注入的时候会细讲,提供了一些服务,可注入的东西。
Declarations:内部的,只能包含组件和指令和管道。 而且只是负责自己的模块的。就是说我自己模块内部,让大家相互认识。我要在这里进行声明。
都是我自己的,跟第三方无关
回顾
结束