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

时间:2018-03-18 17:09:02

标签: ionic2 ionic3

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

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

    IonicPageModule.forChild(AdministerUsersPage)

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

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

1 个答案:

答案 0 :(得分:10)

  

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

您的问题的答案是:

如果您希望该页面延迟加载 每页需要一个模块。您可以在以下两个链接中找到有关Ionic中延迟加载的更多信息:

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

为每个页面使用模块也与深层链接相关。您可以查看 at the docs 以查找有关深度链接和离子的更多信息,但基本上幕后的想法与延迟加载功能基本相同。

  

或者将类似的页面分组到同一个模块中会更好吗?甚至可以这样做吗?

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

  

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

那是对的。 Ionic通过每页创建一个模块来实现延迟加载功能。一个次要缺点就是您需要为每个页面创建一个模块。因此,如果您的应用程序上有20多个页面,那么您需要创建20多个模块(但我认为这不是一个大问题,CLI会为我们完成所有工作,对吧?)。

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

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

话虽如此,如果您不想使用延迟加载的网页,则无需每页创建一个模块。请记住,您的应用启动时会加载所有页面和组件,因此当用户打开您的应用时,所有内容都需要花费更多时间。