Комментарии 84
NavigationExperimental уже эволюционировал в https://reactnavigation.org/ "Learn once, navigate anywhere". Я не знаю всей истории, но похоже, что это будет рекомендованным решением (сейчас он на этапе беты).
И об этом даже не написано в документации, хотя как раз об этом-то стоило упомянуть, ну не знаю, ЖИРНЫМ КРАСНЫМ МИГАЮЩИМ ЗАГОЛОВКОМ в самом верху описания компоненты.
Разработчики RN на все зарепорченные на эту тему баги вяло отмахиваются, что решение это из перформанс соображений, а на просьбы хотя бы добавить информацию об этом в документацию отвечают почему-то «вам тут не стековерфлоу».
Чем NavigatorExperimental по сути отличается от Navigator, в документации тоже не описано (спасибо автору статьи, теперь хоть буду знать).
Только там Drawer необычайно тормозной, вместо него использую https://github.com/react-native-community/react-native-side-menu
Пожалуйста, можно пример, как выполнить переход между экранами?
https://github.com/aksonov/react-native-router-flux/tree/master/Example
А как бы побыстрее собирать проект на этапе разработки под Android? На IntelXDK сборка проекта PhoneGap выполнялась шустро, если не путаю. Судя по видео в конце доклада, для Mac-а тоже Simulator готов к изменениям кода практически в реальном времени. А в Android Studio наблюдаю задержку 20 сек.
- XCode и $100 в год на Developer account, чтобы собирать и публиковать приложения
- Терпение + Android Studio + SDK + Эмулятор
Можно немного срезать угол, по крайней мере на этапе прототипирования, если использовать Exponent:
Exponent lets web developers build truly native apps that work across both iOS and Android by writing them once in just JavaScript.
It's open source and free and uses React Native.
Верно?
У них есть два режима и они не взаимоисключающие. Можно быстро и бесплатно получить своё приложение на телефоне запустив его через клиент, а можно собрать пакет и опубликовать в стор, тогда и появляется +$100 на iOS и +$50 на Android. Эта идея не нова, как минимум я такое видел для приложений "PhoneGap поколения", например, AppGyver.
Написал заметку про это чудо: Быстрый старт на React Native.
Недавно закончил небольшой хобби проект
Веб (react-native-web) + андроид (react-native).
http://ru.quizexer.com/
От работы с React Native остались по большей части положительные впечатление.
Из всего кросплатформенных решений (веб/мобайл) что перепробовал, этот вариант считаю наиболее удачный.
Да, есть баги и пока не хватает нативных модулей, но код получился практически идентичный,
что для хобби проекта главный плюс.
И вместо js можно использовать любой язык который в него компилируется, что тоже большой плюс.
По опыту, каких компонентов не хватает? Автор доклада уверяет, что уже можно найти все, что угодно.
Redux — это архитектура приложения. Хотя камрады на Clojure со мной не согласны. У них свои велосипеды.
Насколько мне известно, Redux — библиотека (http://redux.js.org/ — Redux is a predictable state container for JavaScript apps. ), реализующая подмножество Flux архитектуры.
Смысл такой: 2 потока, в основном — нейтивный гуй, во втором — логика на js.
А что творилось с PhoneGap на iOS в мою бытность полтора года назад — это не передать литературными словами. Тогда и родилась мечта освоить React Native.
Что же там творилось? И почему не NativeScript?
На видео выше — летает, если сравнивать с поделкой на Meteor-е. Второй проект PhoneGap на Phaser — уже лучше. Хотя там только HTML5-canvas, а все равно лаги. Crosswalk обещал помочь, но я этого уже не дождался.
NativeScript = Angular. Чур меня! :)
Ionic — редкостный тормоз. Нашли с чем сравнивать.
Я вам по секрету скажу — в WebView тоже можно использовать аппаратное ускорение анимаций.
Экран обычно не очень большой, так что число одновременно видимых виджетов весьма ограничено, что позволяет используя ленивый рендеринг получать хорошую отзывчивость.
А в нативе не тормозили? Впрочем, емнип, начиная с 4 нативный браузер использует уже движок хрома. Ну и crosswalk подключается одной командой в консоли. Правда увеличивает бандл на 20 метров.
1. Инструменты для разработки очень глючные (по состоянию на месяц обратно), постоянно приходится что-то перезапускать.
2. React Native намертво привязан к React.
3. Продукт слишком сырой в целом: плохая документация, частые изменения API, куча багов в компонентах и т.д.
4. React Native ничего не знает про нативные стили компонент, создалось впечатление, что он на самом деле нативные компоненты вообще не использует, а тупо их эмулирует в нативном коде вместо WebView.
5. Приходится писать слишком много разного кода для двух платформ. С тем же успехом можно делать просто два нативных приложения и не страдать с глючным реактом.
Наш вывод: если есть желание использовать JS для разработки приложений, то стоит использовать NativeScript.
React Native намертво привязан к React.
Может это был основной вопрос? Я сам очень долго испытывал аллергию к JSX.
React тянет за собой Redux (или навязывает, пока не разобрался до конца с глаголами). И это же счастье, когда мне кто-то говорит, как нужно обустроить порядок в проекте — снимает большой головняк, когда ресурсы ограничены. Мы все умрём, как известно. Просто некоторые относятся к вопросу беспечно.
Я тоже думал, что вообще возьму Relay, и заживу наконец-то, как белый человек. Но Redux затягивает, и другого счастья мне уже не надо. :)
Инструменты для разработки очень глючные (по состоянию на месяц обратно), постоянно приходится что-то перезапускать.
Это видимо под Android, или под iOS тоже?
Наш вывод: если есть желание использовать JS для разработки приложений, то стоит использовать NativeScript.
Не понял, а вы ушли с JS?
Уточнил у автора доклада: какие компоненты использовал для SVG?
Смотря для чего нужен svg.
react-native-svg — это реализация svg поверх нативных компонент. Я ее как-то раз использовал, чтобы рисовать хитрые фигуры и круговые градиенты. react-native-svg-uri работает поверх нее и позволяет загружать svg из внешних источников. Ничего лучше для svg я пока не нашел.
Если ты хочешь использовать svg-оконки, как это принято в вебе, то это плохоая идея. SVG работает не очень быстро. Лучше использовать обычные png через require, которые, например, можно генерировать из svg.
Разложите по полочкам, кто знает. Для разработки под Android — это неизбежные тормоза сборки? Пора переходить на Мак, или можно еще обождать?
Общие картинки и прочая статика?
Что можно вынести в общую часть проекта?
Это что, правда, что React Native текущей версии не работает на более ранних андроидах?
Штука безусловно привлекательная, но огорчают некоторые моменты:
- Глюки пока встречаются очень часто
- Бардак в react-native/Libraries — без поиска найти нужный компонент очень затруднительно
- Между некоторыми релизами очень трудно обновляться. Особенно досадно, когда зависишь от сторонней библиотеки, в которой поддержку новой версии внедрят через несколько месяцев, а то и никогда.
- Зачастую разработчикам приходится пройти семь кругов ада чтобы влить PR
- Проблемы выбора. До недавнего времени было 3 реализации навигатора, все 3 были признаны устаревшими, а рекомендуемое решение появилось только через 2-3 месяца, и то все-еще в бете.
- Очень много неочевидных из документации моментов, подводных камней
- Многие баги в JSX иногда очень трудно отлаживать, сообщения об ошибке не сильно помогают.
Несмотря на это, продолжаю пользоваться и надеюсь на то что со временем детские болезни уйдут.
Немного поправок,
- rnpm уже включен в RN
- в 0.42 появилась возможность задавать не только абсолютные величины, но и проценты
Кстати, про неудобство отладки, обнаружил недавно трюк — дебаг при помощи console.log без вмешательство в код.
Как то я не удовлетворился нативным реактом, попробовал использовать сторонний компонент, все сломалось, попробовал кодить на виндах так он эмулятор андроида не видит. Короче как-то все выглядит сыровато и невдохновенно.
Полторы недели работы вместе с дизайном (чтобы понимали никогда до этого не писал под мобильные/javascript и вообще я дизайнер который прочитал статью, что дизайнер тоже должен кодить и пошел искать чтобы такого написать). Есть баги, но уверен, что нативно я бы писал это месяц.
Что использовалось:
1. Список с автоподгрузкой и пултурефреш
2. Карты
3. Кастомные экраны и анимация (просмотр мастера, на скрине в эпсторе видно)
4. Реалтайм чат на сокетах
5. Хранение внутри приложения данных
Из интересного, не использовал redux, etc так как не знл что он существует, когда узнал было поздно, но в то же время многие опытные ребята говорят, что если ты справился без него, значит он тебе просто не нужен и не волнуйся на эту тему.
На счет "не нужен" сомнительно. Redux сильно облегчает жизнь.
Кроме Redux есть и другие библиотеки управления состоянием, хорошо интегрированные с React, реализующие другие подходы. А в целом, даже автор redux рекомендует сначала научить писать на голом реакте, а уж когда станет тесно, изучать редакс
React Native — одного JS мало