Рубрики
Без рубрики

Я видел небеса. И это написано в JavaScript.

Красота реагирования родных

Автор оригинала: Mo Bitar.

Почему реагировать родной это будущее

У меня странный способ описания программного обеспечения. И вы либо узнаете, что я имею в виду, или вы не будете. Это своего рода странно, но программные интерфейсы чувствуют, что у них есть Вес Отказ Когда я использую интерфейс, он может чувствовать себя тяжелым, или он может чувствовать свет. Ни один не лучше другого. Это просто зависит. Chrome очень легкий. Сафари чувствует себя тяжелее. И Firefox чувствует себя самым тяжелым. Это, вероятно, фигня, но это чувство, которое я получаю.

Одним из самых тяжелых чувств в моей карьере разработки программного обеспечения использовал SWIFT в XCode. О боли. Задержка. Компилятор Kanye-West, который никогда не позволяет закончить. Я прожил в этом гробовом мире в течение последних нескольких лет, создавая приложения единственным способом, которым я знал, как: RAW, ручной, одноплатформенный код. Иди родным! Верно?

Когда я узнал о реактивном родном, я был скептическими. Запишите код в JavaScript один раз и разверните нативных приложений на iOS, так и на Android? – Это должно сосать. Поэтому я проигнорировал это. И вместо этого закончился написание двух отдельных нативных приложений, один в Swift для iOS, а другой в Java/Kotlin для Android. Это было в дополнение к веб-приложению, написанному в JavaScript и приложении на рабочем столе для электронного настольного компьютера. (Приложение является зашифрованным приложением поперечной платформы, поэтому на каждую платформу доступность.)

Это работало достаточно хорошо в течение некоторого времени, но имело свои трудности. Я мог бы управлять писать приложение веб-приложения и iOS, но у меня не было опыта с Android Whatsover. На самом деле, я никогда не использовал Android-устройства всю мою жизнь более часа. К счастью, вкладчик сообщества был рад помочь в создании основ, которые позволили мне предчувствовать написанию приложения с нуля и вместо этого просто поддерживать его с помощью инкрементных изменений.

В любое время, необходимое для выполнения изменений или добавленную функцию, мне нужно было путешествовать на три отдельных база кода и написать тот же код, на трех разных языках. Быть одним человеком, это не всегда было очень эффективным. Это может занять неделю, чтобы сделать даже простейшую перекрестную смену. Результатом были приложения, которые никогда не могли бы иметь хороших вещей. Например, несколько пользователей просили возможность добавлять пароль и замок отпечатков пальцев на приложение – очень разумный запрос на приложение Notes Ancess Notes. Но реализация этого не было тривиальности: во-первых, потребовалось интерфейс настройки паролей в дополнение к интерфейсу ввода. Затем зашифруйте автономные пользовательские данные с паролем. Затем, на мобильном телефоне, указав, когда пароль или отпечаток пальца следует запрашивать (немедленно или в App quit). Мысль о написании всего этого кода в Swift, затем Java, затем JavaScript, был кошмаром. Я не мог принести себе, чтобы сделать это.

Там должен быть лучший способ.

Введите реагировать натуральный

Мне пришлось описать контекст и эмоции, за то, что он должен был поддерживать отдельные кодовые базы для приложения, так что вы знаете, что в восторве, я чувствовал, когда я начал использовать реагировать родной. В течение первой недели написания собственных приложений в атоме (!), мой рот был агапе. Я не мог поверить, насколько это легко. Нет XCode, нет SWIFT, мгновенная перезагрузка изменений, написание в постоянно легко использовать JavaScript-I был на небесах. Я бы поставил симулятор IOS и эмулятор Android бок о бок, когда был писать код, и потратил половину времени в полное неверие, что все Просто работал Отказ Мне никогда не нужно было удивляться, Ну, это хорошо выглядит на iOS, интересно, хорошо ли он будет работать на Android? По большей части, если он работает на одной платформе, она будет работать на обоих, с небольшими регулировкой.

Самая красивая часть? Я использовал все классы из моего веб-приложения! Я смог скопировать комплексные классы, связанные с моделями, контроллерами и логикой шифрования оптом с очень небольшим изменением. Весь синхронный двигатель приложения? Скопировано справа от веб-приложения. Шифрование и дешифрование? Из веб-приложения. Модели и отношения? Из веб-приложения.

Я был так счастлив, чтобы не писать все эти вещи с нуля. Синхронизация сложно, и зашифрованная синхронизация не проще. Кодовая база Web/Desktop была нашей флагмане, проверенным продуктом, а доверие к повторному использованию этих компонентов было великолепно.

Одной из самых сложных частей собственных приложений по строительству использование собственных IDES является пользовательский интерфейс. На iOS, это так кропотливо поглощение времени для разрабатывания интерфейсов. Вы можете сделать это через код, но он будет включать много кода. И управление динамическими ограничениями макета с кодом более адский, чем большинство задач. Вы можете использовать построитель интерфейса, но вы теряете мелкозернистый контроль и код гибкости дает вам. И удачи совершают и совместные на интерфейсных построителях изменения в Git.

В реактивном родном, динамические интерфейсы – это ветер. Вы используете CSS-подобный синтаксис для создания дизайна вашей мечты:

let containerStyles = {
  backgroundColor: "red",
  display: "flex",
  alignItems: "center",
  width: "100%"
}

let childStyles = {
  fontSize: 14,
  color: "black",
  fontWeight: "bold"
}


   Hello, future.

Это основа для наращивания всех интерфейсов в реактивном родном. И это действительно так просто, как выглядит. И большая часть?

Тематическое действие

По сути, весь ваш интерфейс является кучей свойств JSON. Вы, вероятно, уже заметили, было бы не было бы очень трудно потянуть BLOB JSON CLOB с сервера или файла и полностью изменить внешний вид приложения. Так что именно то, что я сделал:

Вы знаете, как тяжело бы это было бы в родном коде? Мой разум болит просто думать об этом.

В чем подвох?

Во время моего путешествия по небу, как я посмотрел в каждое направление в произнесении удивления и удивление, я продолжал думать, что случится? Это не может быть так легко построить родные приложения. Это было почти греховно.

Теперь это программное обеспечение и инструмент разработки программного обеспечения на этом, так что нет такой вещи, как идеально. Реагировать родной все еще под Активное развитие Так что вы будете испытывать некоторые чтены. Мои первые несколько голчас чувствовали себя экзистенциальностью. «Дерьмо! Это конец! Я знал это. Я знал, что это было слишком хорошо, чтобы быть правдой. Эта проблема полностью взорвется в моем проекте». К счастью, нет проблем, который не мог быть решен.

Например, один из более раздражающих проблем, которые я испытывал, заключался в том, что текстовый компонент реакции нативно просто не работал достаточно хорошо на Android для приложения Notes. Прокрутка была отставлена, и в любое время вы прокручивались, чтобы прочитать записку, она автоматически приведет к клавиатуре. Чрезвычайно расстраивает. Я пробовал несколько дней, чтобы взломать свой путь по вопросу каким-то образом манипулирование кодом JavaScript для предотвращения обеих проблем. Но абсолютно ничего не работало. Однако я узнал, что это не конец вашего проекта. Это начало.

React Nature позволяет вам легко построить родные компоненты для всего, что ваше сердце желает. Встроенный компонент или модуль означает, что вы можете писать интерфейс и бизнес-логику, используя собственную SWIFT/Objective-C или Java/Kotlin и легко создавать интерфейс JavaScript для управления этими модулями. В моем случае я написал пользовательский модуль TextView в Java, который сделал прокрутку намного более гладкой, и не софокусировал бы ввод в прокрутку. Это было прямо вверх Java, написанное в Android Studio. Я импортировал его в JavaScript, добавил его к иерархии просмотра, а Boom, красиво прокручивающийся текстовый ввод в реактивный встроенный. Задача решена.

Я также использовал родные модули для других вещей, включая модуль шифрования (отдельные модули для iOS и Android) и модуль аутентификации отпечатков пальцев.

Если вы используете реагировать родным?

Да, да, 100% да. Даже если вы строите одноплатформенное приложение, я бы использовал React Nature. Это просто похоже на лучший способ написать приложения. Как новое, так как Swift это, оно чувствует себя смешно устаревшим и тяжелым по сравнению с недвижимостью написания приложений в JavaScript. Я действительно желаю, чтобы Apple сосредоточилась на том, чтобы сделать его более доступным для написания замечательных приложений, а не введения самого эзотерического языка программирования, которого я столкнулся в течение некоторого времени. XCode был построен вокруг объекта-C, и Swift все еще чувствует себя вне места внутри.

Я смог повторно использовать около 70-80% кода из нашего веб-приложения в создании собственного мобильного приложения. Остальные – это интерфейсный код, который не может быть повторно использован. Я даже смог нацелиться на более низкие версии iOS и Android. Наши оригинальные SWIFT Standard Notes приложение использовали новейшую реализацию основных данных, поэтому IOS 10 требуется. Новое реагистрационное реактивное реактивное реализация работает из коробки на iOS 8 и Android 5.

Хотите посмотреть, как ощущается нативное приложение aDe? Вы можете скачать готовый продукт для IOS и Android Отказ Вы также можете проверить весь Исходный код Отказ Если у вас есть какие-либо вопросы о процессе реагирования нативный процесс развития, пожалуйста, не стесняйтесь Обратитесь в Twitter Отказ