角度模块和延迟加载

时间:2019-07-24 15:47:20

标签: angular lazy-loading

在模块化和延迟加载的逻辑划分方面,我需要一些帮助。

我有一个具有广泛管理部分的应用程序。您可以添加/删除主应用程序正在使用的不同数据。虽然管理部分内容广泛,但很少使用。将admin部分作为模块仅在有人进入其中一个admin路由时才是延迟加载的,这似乎合乎逻辑。

我所苦的是分离关注点。假设我有一个contacts的列表。在整个管理页面中,您可以添加/编辑/删除contacts。有contact.model.tscontacts.service.ts以及用于显示内容的组件。所有这些都将存在于模块中似乎是合乎逻辑的。

现在,主要部分还需要其中一些内容,尤其是contact.model.tscontacts.service.ts。我知道模型文件只是打字稿开发者糖,实际上在运行时没有任何意义。 contacts.service.ts是可注射的,似乎应该由adminmodule导出。

这是正确的方法吗?如果是这样-contacts.service.ts要么在运行时不可用,否则会导致adminmodule未加载,或者会导致adminmodulemainmodule中使用该服务时被加载因此击败了延迟加载?

1 个答案:

答案 0 :(得分:0)

我认为您的方法还不错,但是如果您想让延迟加载的模块尽可能的小巧轻便,最好将其翻转一下。

主应用程序使用的或模块之间共享的任何内容都可以视为shared。当延迟加载的模块需要shared中的内容时,它已经加载完毕,您可以想象主应用程序有时也会需要它。

admin的延迟加载模块中,仅应与admin相关。如果另一个模块需要它们,您可以重用模型和服务之类的东西。但是可以将特定的管理员服务或模型的扩展(仅管理员需要)放到AdminModule中。

希望这会有所帮助!