Ionic 3 - 每个页面都需要自己的模块吗?

Ionic 3 - Does each Page need its own Module?

我是 Ionic 的新手,正在尝试了解如何组织中型应用程序。

每个页面都应该有自己的模块吗?或者将相似的页面分组到同一个模块中更好?甚至可以这样做吗? IonicPageModule.forChild() 方法似乎只接受一页:

    IonicPageModule.forChild(AdministerUsersPage)

那么每个页面都有自己的模块可以吗?拥有这么多模块有什么缺点吗?

我们似乎从一个极端走到了另一个极端 - 没有在根上下文中声明所有内容的模块来为每个页面分隔模块。

Does each Page need its own Module?

您问题的答案是:


如果您希望页面 lazy-loaded,您 do 需要每页一个模块。您可以在以下两个链接中找到有关 Ionic 中 lazy-loading 的更多信息:

基本上,该模块将封装组件(您的页面)运行所需的所有内容,以便在您的应用程序需要时创建它。例如,您可以预加载一些用户在打开您的应用程序时会立即使用的页面,然后仅在用户尝试导航到这些页面时才加载其他页面。由于您的应用程序打开时不会加载所有页面,启动时间会更好

每个页面使用模块也与deep-linking有关。您可以查看 at the docs 以找到有关 deep-linking 和 Ionic 的更多信息,但基本上幕后的想法与 lazy-loading 特征。

Or is it better to group similar Pages into the same Module? Is it even possible to do that?

Afaik 这在 Ionic 中是不可能的,当然这不是推荐的使用方式。

So is it okay for every single Page to have its own Module? Are there any drawbacks to having this many modules?

没错。 Ionic 通过每页创建一个模块来实现 lazy-loading 功能。一个 小缺点 是您需要为每个页面创建一个模块。因此,如果您的应用程序有 20 多个页面,则需要创建 20 多个模块(但我想这不是什么大问题,CLI 会为我们完成所有工作,对吧?)。

一个更重要的问题是,如果您有一个 ComponentsModule 包装,比方说,它上面有 10 个组件,然后您在每个 PageModule 上导入 ComponentModule。这将创建大量 代码重复 (每个 PageModule 将获得整个 ComponentsModule 的不同副本)。解决此问题的一种方法是为每个组件创建一个模块,这样每个 PageModule 都可以准确导入它需要的内容。

但这仍然不是什么大问题;捆绑包会更大一些,但我想更快的启动是任何移动应用程序最重要的功能之一。


也就是说,如果您不想使用 lazy-loaded 页,则不需要为每个页面创建一个模块。请记住,您的所有页面和组件都将在您的应用程序启动期间加载,因此当用户打开您的应用程序时,一切准备就绪需要更多时间。