2016-08-04 8 views
0

Я попробовал приложение Aurelia в IE Edge сегодня, и загрузка первой страницы заняла 20 секунд. Переключение страниц также имеет неоправданно длинный характер, поэтому я показал эффективность google aurelia и обнаружил, что добавление библиотеки JS Bluebird помогает с производительностью в всех браузерах. Я не смог найти пример точно как, чтобы добавить эту библиотеку, кроме инструкции по ее добавлению непосредственно перед system.js.Добавление приложения Bluebird к Aurelia вводит ошибки

Так что теперь вместо этого:

<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> (для целей стиля), соответствующий просматриваемому в данный момент маршруту. Поэтому на домашней странице у меня будет <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'; 
    } 
}); 

По какой-то причине на первой загрузке страницы, и только на первой странице загрузки, это событие никогда не срабатывает , Переход на другой маршрут отлично работает, и возвращение к маршруту, где событие никогда не срабатывало в первый раз, отлично работает. Только при загрузке первой страницы он не срабатывает.

Если я удалю синюю птицу, он снова начнет работать.

У кого-нибудь есть любая идея, что может быть причиной этого? Как я уже сказал, единственным изменением, которое я сделал, является добавление элемента bluebird script к index.html. Я не внес никаких изменений в код приложения.

ответ

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