Комментарии 24
Я бы не стал так обобщать. Реакт очень удобен для создания мелочей вроде мобильного клиента какого-либо сайта, плюс с минимальным количеством нативного кода можно неплохой функционал реализовать, так какой смысл писать полностью нативное приложение с тем же функционалом? Как пример — работа с bluetooth, конечно, ради нее можно все приложение писать дважды — под андроид и яблоко, а можно набросать шаблон на реакте, а само взаимодействие с bluetooth реализовать в виде небольшой подключаемой нативной либы, чем плох подобный подход?
если приложение сложное — больше времени займет подгон отображения под единый вид и борьба с багами на платформах.
Я еще ни одного «сладкого хлеба» в разработке не встречал, за который не пришлось бы чем то расплачиваться. В РН это отлов багов, ограниченность средств разработки и общая нестабильность.
не подходит для проектов, выходящих за границу “отправил запрос — получил ответ”, немного примеров: фоторедактор, плеер, работа с Bluetooth, AI, ML, соц. сеть, мессенджер;
На ReactNative еще не писал. Почему не подходит для плееров? Объясните подробнее, пожалуйста.
- никакущая стабильность.Заставить приложение не падать — большой квест, особенно когда у тебя больше 5 экранов. Обновление версии языка — игра в русскую рулетку.
- сборка. Добавляешь одну либу — тянется десяток зависимостей — перестает собираться вообще все. Начинаешь выставлять зависимости — обнаруживаешь, что либы ссылаются на самые нестабильные ветки — беты, эксперименталы и пр. Запускаешь билд на другой платформе (скажем, тестировал на иос, собираешь андроид) — повторяешь квест. И так можно до бесконечности
- само по себе наличие библиотек в бете (впрочем, как и самого языка) — отсутствие гарантий в разработке релизных продуктов
- графические артефакты и уникальные для платформы фичи. Сколько бы разговоров о мультиплатформе не было, текстовые поля отображаются по разному, в отрисовке теней вечно возникают артефакты. Верстать что-то простое можно, но ни об идентичности, ни о сколько-нибудь приемлемом виде верстки из коробки для сложных приложений речь даже не идет.
- отсутствие нормальной связки с железом и особенностями оси. Да, все можно прикрутить в качестве либ, но тогда теряется время разработки, ухудшается стабильность. В итоге выйгрыша в сравнении с нативной разработкой уже нет.
никакущая стабильность.Заставить приложение не падать — большой квест, особенно когда у тебя больше 5 экранов. Обновление версии языка — игра в русскую рулетку.
Не могу согласиться. Бывают проблемы на этапе сборки, но в рантайме, как правило, все хорошо. За последний месяц у нас 100% crash-free users. Экранов уже десятки.
Вопрос к тем, кто активно работал с React Native. Я читал, дескать, там неплохо реализована поддержка FlexBox. А как насчёт inline + inline-block? Для одного из проектов, которые моя контора планирует реализовать на RN это очень критично. Т.е. нужна удобная возможность иметь строчную и строчно-блочную вёрстку. Условно это когда содержимое одного <span/>
может начинаться в произвольном месте одной строки, занять ещё 3, и на 5-ой закончиться где-нибудь в середине, и при этом в этом же контексте могут быть блочные элементы. В общем речь про display: inline
& display: inline-block
.
Ещё вопрос: а как там с поддержкой SVG
? Есть сложные интерактивные графики функций, с drag-n-drop-ом, установкой точек на канве, и прочими штуками, которые не во всех браузерах поддерживаются.
У React Native огромное сообщество, которое постоянно растет и реализует различные библиотеки, в том числе подходящие под Ваши задачи. Первое, что приходит в голову, это рендерить html, например используя следующий компонент: https://github.com/jsdf/react-native-htmlview
Что касается SVG, то тут посложнее, но, думаю, найдется и что-то подобное. Опять-таки никто не мешает написать нативно и обернуть в JavaScript.
Я читал, дескать, там неплохо реализована поддержка FlexBox
Это не вполне так, за лейаут в RN отвечает yoga у которой нет цели реализовать спецификацию CSS flexbox. Он похож, но не совсем. Такого понятия как
display: inline
в нем не существует. Разве что заворачивать каждое слово в свой контейнер и ставить flex-wrap.Ещё вопрос: а как там с поддержкой SVG?
Паршиво, из коробки нет даже базовой поддержки, только растр. Через либы можно вставлять иконки, а вот живые графики вряд ли. Canvas можно поставить через сторонние библиотеки, но непонятно насколько он хорошо будет работать.
Просто недавно как раз увидел вопрос на тостере, там рекоменловал в тч такой вариант. Ну а по мануалам на офсайте всё, вроде бы, не сложно.
Для мобильного с Vue есть смысл попробовать nativescript-vue, если хочется именно приложение.
Либо делать на нём PWA, которое будет работать в WebView без Cordova.
React Native с точки зрения мобильного разработчика