将Bluebird添加到Aurelia应用程序会引入错误

时间:2016-08-04 11:26:46

标签: javascript bluebird aurelia aurelia-event-aggregator

我今天在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。我在实际应用程序代码中根本没有做任何更改。

1 个答案:

答案 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';
    }
});