Мобильные приложения на чистом JS

Ilya Lesik

Мобильные приложения на чистом JS

Илья Лесик, Redis CA

Hands on the orange typewriter in a park

React Native

JSX


				
			
Hello, tver.io!

Архитектура

JavaScript
Bridge
Native
JavaScript JSCore (VM) Single Thread
ObjC + Swift / Java Main UI Thread Other BG Threads

Стандартные компоненты

Компонент Web
iOS
Android
View div UIView android.view.View
Text span UITextView android.widget.TextView
FlatList ul UIStackView android.widget.ListView
Image img UIImageView android.widget.ImageView
TouchableHighlight button UIControl android.view.TouchDelegate

Компоненты

Команда React Native в два раза больше команды React

API

Привычные фронтенд-решения

Стилизация


				
			
Кнопка

Флекбокс


				Библиотека Yoga
				
			
1
2
3

Здесь вам не web

Специфика платформы


			
Расширения файлов .ios.js, .android.js
Пример: BigButton.ios.js, BigButton.android.js

			В зависимости от платформы будет импортирован соответствующий файл.
			
		

Процесс разработки

XCode

Hot Module Replacement

WebStorm (или что-нибудь другое)

Отладка

React Native Debugger

Известные проблемы

Когда вы решите начать мобильную разработку:

  1. Дизайнеры, проектировщики могут оказаться к этому не готовы.
  2. Для полноценной разработки под iOS могут потребоваться дополнительные вложения:
    • Компьютер с Mac OS (XCode, Device Emulator)
    • Apple Developer Program - $99/год (iTunes Connect, TestFlight)
    • iPhone/iPad

React-like библиотеки

Android

Litho: A declarative UI framework for Android
Anvil: A micro library for building fast reactive views on Android

iOS

ComponentKit: A React-Inspired View Framework for iOS
Render is a declarative library for building efficient UIs on iOS inspired by React.

Заказ еды в офисе

Логин
Меню на неделю
Меню повара

Дальнейшее развитие

Вместо выводов

Вместо выводов

Спасибо за внимание!