Комментарии 3
Подскажите, пожалуйста, а чем вызван такой высокий уровень абстракции? Кажется, что дерево контроллеров задается один раз и меняется довольно редко. А если и меняется, то все равно не целиком, а лишь переносятся целые ветки с места на место. В таком случае менять конкретный роутер не так уж и сложно. А с такой высокоуровневой абстракцией повышается и порог входа и стоимость реализации, а ради чего все? Да, вы указали Ваши требования к идеальному роутингу, но что стоит за ними? Какого причины такого усложнения?
Думаю, с этой информации и стоило начинать статью, чтобы помочь читателю правильно выбрать инструмент.
Подскажите, пожалуйста, а чем вызван такой высокий уровень абстракции? Кажется, что дерево контроллеров задается один раз и меняется довольно редко. А если и меняется, то все равно не целиком, а лишь переносятся целые ветки с места на место. В таком случае менять конкретный роутер не так уж и сложно. А с такой высокоуровневой абстракцией повышается и порог входа и стоимость реализации, а ради чего все? Да, вы указали Ваши требования к идеальному роутингу, но что стоит за ними? Какого причины такого усложнения?
Да, дерево навигации редко полностью перестраивается, но Nivelir и не меняет дерево полностью. Это просто DSL, который позволяет описывать сложную навигацию простыми переходами, начиная с найденного в иерархии контейнера.
Он очень полезен для глобальной навигации, например, для диплинков. В статье есть пример открытия диплинка на экран чата, который взят из нашего приложения, и его логику довольно неприятно делать стандартными средствами, получится гораздо больше сложного и плохо переиспользуемого кода, в котором очень легко допустить тяжело воспроизводимую ошибку.
Для локальной навигации модуля, в которой все ограничивается презентом и пушом, Nivelir выступает скорее как более компактная и переиспользуемая альтернатива средствам UIKit. Например, можно один раз объявить роут на модальное отображение экрана авторизации и везде его переиспользовать в минимум кода. Плюс консистентность и совместимость с глобальным роутингом.
А с такой высокоуровневой абстракцией повышается и порог входа и стоимость реализации, а ради чего все? Да, вы указали Ваши требования к идеальному роутингу, но что стоит за ними? Какого причины такого усложнения?
На самом деле, Nivelir как раз делает простым описание навигации, его легко читать и поддерживать - в этом и есть его смысл. Сложным наверняка показался из-за статьи, слишком много деталей. Причины стоят за нашими требованиями, у нас довольно сложная навигация в проекте, и мы хотели упростить ее по максимуму на стороне использования.
Думаю, с этой информации и стоило начинать статью, чтобы помочь читателю правильно выбрать инструмент.
Согласен, хотелось больше информации донести про внутреннее устройство. Но про блага использования мы еще подготовим материал, в котором постараюсь привести примеры навигации c Nivelir и без него.
Nivelir: Удобный DSL для навигации