我在 https://material.angular.io/guide/getting-started 這裡看到這段代碼:
import {MatButtonModule, MatCheckboxModule} from '@angular/material';
@NgModule({
imports: [MatButtonModule, MatCheckboxModule],
exports: [MatButtonModule, MatCheckboxModule]
})
export class MyOwnCustomMaterialModule { }
imports 與 exports 都給了相同的 modules,
但我測試 imports 沒給這些 modues 也是可以執行的,像下面這樣:
import {MatButtonModule, MatCheckboxModule} from '@angular/material';
@NgModule({
exports: [MatButtonModule, MatCheckboxModule]
})
export class MyOwnCustomMaterialModule { }
請問在這有 imports 這些 modules 的作用是什麼? 哪個才是比較好的風格?
1個讚
Kevin
#2
我是想問說,既然 imports 不用匯入那些 modules,為什麼他的範例還要多此一舉?
如果你在這個module內部有使用該個module的部分內容,那麼需要import,
反之則不需,不過其實就算import也是沒關係的,在最後大小上不會影響。
Material的範例是一個比較保險的做法,或許他們那一天內部的module不再獨立了,而是有相依其他component,那麼這個時候import就有意義了,或是你在mymaterialmodule裡面放了其他自己定義的component有使用到material其中的component(當然不建議這麼做)。
我自己是都有import,自己測試過大小沒有差異。
1個讚
Kevin
#5
當所 imports 的 module 有重複時, Angular 內部會怎麼處理呢?
基本上是只會產生一次,後面有再次 Imports 的人,就會直接取之前的有產生過的 module。
基於這個理由,預先 Imports 一次,之後有載入這個 Modules 的人,就不需要重新再建立了
當然你也可以只 exports 不 imports。
@Kevin 感謝,這回答你有貼連結了,
只是我主要不是問不同地方重複 import 相同 module 會導致什麼問題,
問題比較偏 @YouShun 所回答的方向。
1個讚