使用systemjs动态加载,如何不一次加载所有文件?

Dynamic loading using systemjs, how to not load all files at once?

有一个主 app.js 文件,其中包含 import {Route} from "./router"。路由器 - 一个 class 取决于页面的当前 url,将创建此页面处理程序的实例。例如,对于页面 /home/accountPage - 路由器将以这种方式创建处理程序:return new AccountPageHandler(params)。事实证明,在路由器中导入了所有页面的所有处理程序(以及它们这么多)。当我执行 System.import ( 'js/app.js') 时,我将加载所有脚本,包括和不必要的 - 因为它们被导入到路由器中,并且路由器在 app.js.

中导入

我怎样才能做到不一次导入所有内容,而只导入我想使用的内容?我确信这个问题对于许多开发人员来说已经很早就出现了,但是如何解决它 - 我不知道,因为我第一次遇到这个问题。

P.S.

我的javascript是从打字稿生成的(如果突然这影响了解决问题的选项)。

在没有看到实际代码的情况下,我的猜测是 SystemJS 导入了您的所有脚本,因为您 import 所有页面的所有处理程序。您可以做什么(如果您的路由器支持页面处理程序的承诺和异步加载)。是使用 System.import('specific_page_handler.js') 只导入现在需要的页面处理程序。

但取决于您的应用程序的大小,以及您可以延迟加载的单独块的大小,只需创建一个缩小的包、设置较长的缓存过期时间并一次加载所有内容就可以了。增加复杂性可能带来小收益。