Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Тимофей Плотников - Введение в React-Native

gdg_rnd
September 17, 2017

Тимофей Плотников - Введение в React-Native

Я расскажу о React-Native с позиции бывалого мобильного разработчика. Стоит ли обратить внимание на кроссплатформенную разработку, какие подводные камни вас ждут и постараюсь представить куда будет двигаться мобильная разработка в будущем

GDG South DevFest 2017

gdg_rnd

September 17, 2017
Tweet

More Decks by gdg_rnd

Other Decks in Programming

Transcript

  1. темы доклада Project manager, S Media Link @timofey_plotnikov vk.com/kristoft Тимофей

    Плотников 2 года разработки и проектирования под Android 1 приложение под iOS Использовал Kotlin даже до RC Люблю осваивать и внедрять новые технологии
  2. темы доклада Hello world для react-native - не сегодня Что

    такое кроссплатформенность Какие проблемы хотим решить Как эти проблемы решает react-native Подумаем о том, куда движется мобильная разработка Обзор
  3. темы доклада Кроссплатформенность - это способность программного обеспечения работать более

    чем на одной аппаратной платформе и (или) операционной системе.
  4. темы доклада Любой язык (в теории) Одно Activity/ViewController на полный

    экран Отрисовка на OpenGL или другом нативном рендере Не «нативный» внешний вид Производительность напрямую зависит от реализации Independent
  5. темы доклада Любой язык (в теории) Связь с платформой через

    мост Использование нативных View «Нативный» внешний вид Производительность платформы (в теории) Native-based
  6. темы доклада made by Facebook born in 2015 (2 years

    old) v.0.48 (alpha!) declarative UI single-threaded still much of platform-specific code Overview
  7. темы доклада public class MainApplication extends Application implements ReactApplication {

    private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { @Override public boolean getUseDeveloperSupport() { return BuildConfig.DEBUG; } @Override protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( new MainReactPackage() ); } }; @Override public ReactNativeHost getReactNativeHost() { return mReactNativeHost; } @Override public void onCreate() { super.onCreate(); SoLoader.init(this, /* native exopackage */ false); } }
  8. темы доклада #import "AppDelegate.h" #import <React/RCTBundleURLProvider.h> #import <React/RCTRootView.h> @implementation AppDelegate

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSURL *jsCodeLocation; jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil]; RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@«App» initialProperties:nil launchOptions:launchOptions]; rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; UIViewController *rootViewController = [UIViewController new]; rootViewController.view = rootView; self.window.rootViewController = rootViewController; [self.window makeKeyAndVisible]; return YES; } @end
  9. темы доклада import React, { Component } from 'react'; import

    { StyleSheet, Text, View, Button } from 'react-native'; export class App extends Component { render() { return ( <View style={styles.container}> <Text>Hello, React Native!</Text> </View> ); } } var styles = StyleSheet.create({ container: { display : 'flex', backgroundColor: 'orange', height: '100%', flexDirection: 'column', justifyContent: 'center' } });
  10. темы доклада Любой, кто знает React, может написать мобильное приложение

    с помощью React Native. Если ты не знаешь / не готов узнать нативную разработку, то серьезного приложения у тебя не получится
  11. темы доклада Написанный один раз код хорошо будет работать как

    на iOS, так и на Android На самом деле многие функции работают по-разному на разных платформах. Особенно это касается верстки
  12. темы доклада Будьте готовы, что технология ещё в альфе React-native

    - это не полноценный фреймворк для написания приложений, это лишь View-часть Не смотря на заявленную кроссплатформенность, придется писать платформозависимый код Вы сможете быстро создать прототип, очень быстро Но этот прототип может доставить вам множество приключений Итоги