2016-09-17 82 views
1

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

我该怎么做,以便不一次导入所有内容,而只是我想要使用?我相信这个问题早已为很多开发人员着手,但如何解决它 - 我不知道,因为我第一次面对这个问题。

P.S.

我的javascript是从typescript生成的(如果突然这会影响解决问题的选项)。

+0

我有同样的问题。期待任何解决方案。 –

回答

1

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

但是,根据您的应用程序大小以及您可以延迟加载的单独块的大小,只需创建缩小的包,设置超长缓存过期以及一次加载全部就可以了。可能有小的收益,增加了复杂性。