Ionic3是否需在app.module.ts中声明页面及页面模块?
Great question! Let me break this down clearly based on Ionic + Angular best practices:
1. 页面组件的声明:完全不需要
从Ionic的现代开发模式来看,你确实不需要在app.module.ts中声明页面组件。当你用Ionic CLI生成页面时,默认会启用懒加载机制——每个页面都会有自己独立的模块文件(比如HomePageModule),而这些页面组件会在各自的模块里完成声明。Angular的路由系统会通过路由配置自动按需加载这些组件,根本不需要在根模块里手动注册。
2. 页面模块的声明:同样不需要
至于你疑惑的页面模块(比如HomePageModule),答案也是不需要在app.module.ts中导入或声明。原因很直接:懒加载模式下,页面模块是通过路由配置里的loadChildren属性指定加载路径的,比如你在app-routing.module.ts里会看到类似这样的路由条目:
{ path: 'home', loadChildren: () => import('./home/home.module').then(m => m.HomePageModule) }
Angular会在用户导航到对应页面时,动态加载这个模块,完全不需要根模块提前介入。你移除这些模块声明后应用依然正常运行,正是因为路由系统已经接管了模块的加载工作。
补充:非懒加载模式的特殊情况
如果是比较早期的Ionic项目(现在CLI默认已经不生成这种结构了),采用的是非懒加载模式,那确实需要在app.module.ts里导入页面模块。但这种方式会让所有页面模块在应用启动时一次性加载,会拖慢初始加载速度,现在已经不推荐使用了。
总结
不管是页面组件还是页面模块,都不需要在app.module.ts中进行声明或导入。你移除这些内容后应用正常运行,完全符合现代Ionic的开发规范,放心保持这个状态就好。
内容的提问来源于stack exchange,提问作者chateau

