我今天在IE Edge中尝试了我的Aurelia应用程序,加载首页需要20秒。切换页面也花了不合理的时间,所以我谷歌aurelia边缘性能,发现添加Bluebird JS库有助于所有浏览器的性能。除了在system.js
之前添加它的指令外,我无法找到一个完全如何添加此库的示例。
所以现在而不是:
<script src="/jspm_packages/system.js"></script>
<script src="/config.js"></script>
<script>
System.import('aurelia-bootstrapper');
</script>
我有这个:
<script src="//cdn.jsdelivr.net/bluebird/3.4.1/bluebird.min.js"></script>
<script src="/jspm_packages/system.js"></script>
<script src="/config.js"></script>
<script>
System.import('aurelia-bootstrapper');
</script>
整个应用程序就像过去一样,我基本上尝试过每一个视图及其功能,除了一个之外;
在每次路由成功时,我都会在<html>
元素中添加一个id(用于样式目的),以匹配当前查看的路径。因此,在主页上我将<html id="home-page">
并登录页面<html id="login-page">
。
这是在app.js
方法的attached()
(根元素)中完成的,如下所示:
this.eventAggregator.subscribe('router:navigation:success', event => {
if (event.instruction && event.instruction.router && event.instruction.router.currentInstruction && event.instruction.router.currentInstruction.config) {
document.documentElement.id = event.instruction.router.currentInstruction.config.name + '-page';
}
});
出于某种原因,在第一页加载时,仅在第一页加载时,此事件永远不会触发。去另一条路线工作正常,并回到事件从未在第一次发射的路线正常工作。只有在第一页加载时它才会触发。
如果我删除蓝鸟,它会再次开始工作。
是否有人任何想法可能导致此问题?就像我说的那样,我所做的唯一改变就是将蓝鸟script
元素添加到index.html
。我在实际应用程序代码中根本没有做任何更改。
答案 0 :(得分:0)
所以我解决它的方式是我现在检查当前页面的加载以及router:navigation:success
事件。这件事停止与Bluebird合作有点令人讨厌,但同时该网站现在可用于IEdge ......
// Give <html> an ID representing the current page
if (this.router.currentInstruction) {
document.documentElement.id = this.router.currentInstruction.config.name + '-page';
}
// Listen to route navigation changes and change the ID
this.navigationSubscription = this.eventAggregator.subscribe('router:navigation:success', event => {
if (event.instruction && event.instruction.router && event.instruction.router.currentInstruction && event.instruction.router.currentInstruction.config) {
document.documentElement.id = event.instruction.router.currentInstruction.config.name + '-page';
}
});