Javascript 在Aurelia.js中,我如何使路由器支持html按需加载而不是启动?

Javascript 在Aurelia.js中,我如何使路由器支持html按需加载而不是启动?,javascript,mvvm,url-routing,aurelia,Javascript,Mvvm,Url Routing,Aurelia,在Aurelia.js中,如果您查看网络流量,似乎路由器的所有html页面都是在开始时加载的(因为我正在绑定,所以由system.js加载)。这会使我的页面加载变慢。我需要它们按需加载,就像单击路由器对应的超链接一样 这是一个有趣的想法。我不是一个核心团队成员,所以也许有人对路由器有深入的了解,可以对你的要求发表评论。我知道我下面要说的并不能直接回答你的问题,但我会提供它,以防它仍然有用 通常,大多数人在部署到生产环境之前都会“捆绑”他们的应用程序。有关如何在Aurelia中执行此操作的示例,请

在Aurelia.js中,如果您查看网络流量,似乎路由器的所有html页面都是在开始时加载的(因为我正在绑定,所以由system.js加载)。这会使我的页面加载变慢。我需要它们按需加载,就像单击路由器对应的超链接一样

这是一个有趣的想法。我不是一个核心团队成员,所以也许有人对路由器有深入的了解,可以对你的要求发表评论。我知道我下面要说的并不能直接回答你的问题,但我会提供它,以防它仍然有用

通常,大多数人在部署到生产环境之前都会“捆绑”他们的应用程序。有关如何在Aurelia中执行此操作的示例,请参见。默认情况下,Aurelia Skeleton应用程序也连接了此构建管道()

捆绑减少了网络请求的数量,但它仍然可以一次加载整个应用程序。你必须把SPA应用想得更像桌面应用。您编辑的HTML模板或“视图”模板实际上被编译成JavaScript,然后与“视图模型”所需的数据相结合。
一种减少下载的方法是将一个大型单片应用程序分解为几个较小的应用程序。您可以创建单独的Aurelia应用程序,这些应用程序在不同的服务器URL上加载。然后,您可以混合使用服务器路由(在应用程序之间路由用户)和客户端路由(在应用程序中路由用户)。但这显然会在开发生命周期中造成复杂性。

发生了几件事

  • 这个问题可能有点令人困惑。路由器没有调用资源;他们只是在消费。此外,它还与启动速度有关。这一点必须明确

  • 确保捆绑正确-将配置文件复制到部署服务器,确保捆绑所有必要的文件,等等(我没有)。如果捆绑正确完成,您可以获得启动时间的巨大增长。查看开发人员工具,并注意任何可疑的东西

  • 如果您在使用大型应用程序时仍然遇到问题,您可以尝试使用多个捆绑包。请参阅Aurelia关于捆绑的文档

  • 这是beta 1。beta 2和release#1应该会有一些性能增强。到目前为止,在Beta 1中,对于相同的浏览器,linux在启动时间上似乎比Windows快得多。IE和Edge在使用aurelia时比其他浏览器慢

  • 这可能有助于解决一些问题。在外部脚本调用上添加了async属性(根据需要,延迟也可以工作)。在img标记上还添加了“lazyload”属性。它只适用于IE和Edge,但它的帮助,因为IE和Edge在许多情况下是最慢的浏览器


捆绑减少了加载时间,但仍然很大。将一个小应用程序拆分为不同的应用程序不是一个好的选择(这会使它更加复杂)。不过,谢谢你看这个问题。如果有一个好的答案,我认为SPA(使用HTML5的compose和template标签以及aurelia.js)从一开始就可以进一步减少构建多页应用程序的需要。作为一种解决方法,您的服务器是否会gzip响应?如果不是的话,这是看到速度提高的最简单方法。@MikeSW我写了我用来加速应用程序的方法,并补充了一些说明。不知什么原因,有人对我的问题和答案投了反对票,没有解释。