Pull to refresh

Comments 8

Непонятны два момента:
1. Как задаются стили элементов? Как оно выглядит, когда задаваемых свойств много, допустим 10?
2. Вся работа производится в JVM, в натив через JNI не думали переносить?
  1. Т.к UI в коде, то можно написать стиль как метод, который получает Builder и проставляет нужные пропсы. Но также есть поддержка андроидных стилей, например, в Text.create() можно передать либо styleId, либо themeAttrId, и которых будут взяты значения TextAppearance и тд
  2. Litho — это JVM. А вот Yoga кроссплатформенная. Т.е измерения элементов и учёт их layout_props идёт через Йогу и будет одинаково работать на разных платформах. Она под капотом у Litho, ComponentKit, ReactNative и во многих других браузерных решениях

Круто, что можно вынести ещё больше расчётов из главного потока, но мне всегда не нравилось программировать аннотациями, так как в моём понимании здесь проще ошибиться. Может быть, Вы развеете мои опасения: насколько легко ошибиться в описании тех или иных компонентов, что это выявится только на этапе кодогенерации или, ещё хуже, на этапе выполнения? Были ли добавлены линт-правила, чтобы на этапе компиляции некоторые ошибки отлавливать?

С кодогенерацией действительно возникают сложности удовлетворения контрактам – вместо фич языка (т.е прямо во время написания кода в IDE) вас будет ограничивать компилятор. Но это явные правила, ошибки с ними легко отлавливаются, т.к компилятор явно ругается (не нужно никаких линт-правил, Litho-процессор покрывает эти ситуации), однако за счёт этих контрактов и статических методов можно явно запретить пользователям ввести Состояние (поля класса, например) там, где не надо. Что при неправильном использовании, вызвало бы очень хитрые и трудноотлавливаемые ошибки при многопоточной обработке UI. Так что это меньшее из зол.


А для того, чтобы раньше отлавливать ошибки, не дожидаясь компиляции мы и работаем над плагином к IDE – он и методы правильно поможет описать, и ошибки подсветить прямо в IDE, и компоненты сгенерить без сборки всего приложения

Непонятно зачем нужен этот фреймворк, когда уже на подходе находится Jetpack Compose. Точнее понятно зачем фейсбук создал его, но за пределы фейсбука он вряд ли выйдет.

Во-первых, фреймворк создан был 5 лет назад, а заопенсоршен 3. Гораздо раньше, чем о Компоузе начали думать. Т.е это уже production-proven решение. Да, это проблема, что в маркетинг вкладывалось недостаточно усилий, и, например, на территории СНГ мало кто о нём слышал. Но предположение, что его никто больше не использует ошибочно – взгляните сюда для контекста: https://www.appbrain.com/stats/libraries/details/litho/litho


Второй момент в том, что не так много приложений, которые сталкиваются с реальными проблемами при работе с тяжёлыми списками, скажем. И в таких ситуациях, вместо того, чтобы тратить кучу времени на ручные оптимизации, можно использовать готовый Litho.


И третий момент в том, что все разработчики знают, как работать с View, разбираться в декларативке мало кто хотел. А если UI работает и на привычных View, то зачем трогать. С годами ситуация менялась в лучшую сторону, появлялись Epoxy и прочие, обёртки над View, типа Anko. А теперь вообще создан хайп вокруг этого и люди, даже если раньше не хотели вникать в новый подход, начинают тянуться за модой

Очень интересно, но пока ничего не понятно

Как мы можем это исправить? :)

Sign up to leave a comment.