Каковы плюсы и минусы UI-SREF?

Я начинаю работать над устаревшим проектом с использованием Angular 1.5 и он использует оба href а также ui-sref,

Я не вижу смысла использовать последний, особенно для верхнего меню.

пример

menu.html

<a ui-sref="expense-home">
    <i class="fa fa-money"></i>
    <translate>Expenses claims</translate>
</a>

app.route.js

.state('expense-home', {
    url: '/expenses',
    template: '<expenses-home></expenses-home>',
})

Вопрос

Не могли бы вы предоставить некоторые плюсы и минусы ui-sref а сценарии где это полезно?

2 ответа

Решение

Плюсы:

1. URL абстракция

Самый важный выигрыш от использования ui-sref это то, что вы работаете над именем штата, которое является абстракцией над адресом URL.

Так что при использовании ui-sref вы действительно независимы от реальных URL, и, например, если вы когда-нибудь решите изменить их (что, поверьте мне, действительно происходит;)), вы просто измените .state Конфигурация и все URL в вашем приложении меняются.

Таким образом, вы также можете локализовать свои URL, и, например, в некоторых случаях ui-sref="contact" указал на /contact-us в то время как в других /kontaktiere,

2. независимость от параметров порядка

Другое дело, что когда вам нужно передать несколько параметров в ваш URL (скажем, определение URL users/:userId/albums/:albumId) вам не нужно запоминать / заботиться о порядке параметров и просто использовать объект:

<a ui-sref="albumDetails({userId: user.id, albumId: album})">
  {{album.name}}
</a>

3. неинтерполируемое значение для предотвращения href attr

Кроме этого, как указал другой ответ, когда вы используете href непосредственно в жизненном цикле вашего приложения есть момент, когда браузер видит <a href="{{ sth }}"> - Angular еще не интерполировал выражение - если вы нажмете на такую ​​ссылку, он попытается указать вам что-то вроде http://example.com/%7B%7B%20sth%20%7D%7D, ng-href, ui-sref (и наиболее заметно ng-src на изображениях) предотвращает это, так как они не интерпретируются браузерами.

Минусы:

Что касается минусов - мне еще предстоит встретиться с одним:)

href (как и ng-href) генерирует фактическую ссылку, которая интерпретируется браузером (и это может быть любой URL, даже внешние URL), а ui-sref обрабатывается javascript.

Другие вопросы по тегам