36
ITS485 Lecture 1: React Native Introduction Dr. Kobkrit Viriyayudhakorn iApp Technology Limited http://www.kobkrit.com

React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Embed Size (px)

Citation preview

Page 1: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

ITS485 Lecture 1: React Native Introduction

Dr. Kobkrit Viriyayudhakorn iApp Technology Limited http://www.kobkrit.com

Page 2: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript
Page 3: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Course Outline

Page 4: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Course Outline

Page 5: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Grading Policy• Quizzes: 10% • At the beginning of the class (Always

be on time). • Term Project: 20% • Midterm exam: 35% (Open Books) • Final exam: 35% (Open Books)

Page 6: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Term Project• Making a 5-10 Screens Mobile Application. • Group & Project Assignment after the midterm exam. • Set up a group of three. (36/3 = 12 groups) • 15% - Group scores - Usefulness, App Business

Model, UI, UX, Functionality, Code Style, and Pitching.

• 5% - Individual scores - App development questions target to each person during presentation.

• 10 minutes presentation: Pitching 3 minutes, Code Explanation 2 minutes, Question & Answering 5 minutes.

Page 7: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Books & Reference• https://facebook.github.io/reactnative/

• Bonnie Eisenman, Learning React Native Building Native Mobile Apps with JavaScript, O'Reilly Media, December 2015.

• https://github.com/jondot/awesome-react-native

• https://js.coach/react-native/

Page 8: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript
Page 9: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

What is React Native?• JavaScript framework for building iOS and Android

mobile apps.

• Based on popular JavaScript Web framework called React.

• Created by Facebook. Firstly release iOS version on March 2015 and Android version on September 2015

• Writing the app by using JavaScript and XML-esque markup (JSX)

• React-Native bridges and invokes the Native rendering API in Objective-C (iOS) and Java (Android)

Page 10: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Approach of Mobile App Dev.

Approach Platform Logic UI UX Dev Time*

NativeObject C, Swift

(iOS), Java (Android)

Native Native Smooth 6-24 weeks

HTML5 Hybrid

PhoneGap, Cordova, Ionic JS HTML,

CSS Laggy 2-8 weeks

Native Hybrid

React Native, NativeScript JS Native Smooth 2-8 weeks

* 20-30 screens mobile apps approximated based on instructor experiences

Page 11: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Why React Native?• Native Experience

• One language rules them all, JavaScript.

• Fast & Great Development Experience

• Don’t Waste Time Recompiling (Hot Reloading)

• 80% Share code between Android & iOS

• Great Debugging Tool using Chrome Developer Tools

• Be able to bridge with Native Code when we need to.

Page 12: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Native Experience

Page 13: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Hot Reloading

Page 14: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Debugging with Chrome Developer Tools

Page 15: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Why not React Native?

• React-Native is still relatively young compared with Native iOS and Android Communities (Released on 2015)

• Some of Native API still are not supported. (But you can use the native libraries through)

• Add one additional layer to mobile app project.

Page 16: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

What is React?• Declarative, Efficient,

and Flexible JavaScript Library that Building User Interface on Website.

• React Native is rooted from React.

• React treats every thing as a Component.

A React Component

Page 17: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

How React Native Works?• Q: How a Web framework (React) can be improved and

become a Native Mobile Development Platform?

• A: Flexibility of React’s Virtual DOM

• React aimed to make Web application fast as much as possible.

• DOM Changing (Changing the content of webpage) dynamically is expensive step. Re-rendering DOM is significant impact on performance.

• Rather than directly render change DOM in the page, React compute the only diff that need to be render in memory by Virtual DOM and re-renders the minimal amount necessary.

Page 18: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Virtual Dom, Technique of React => Root of React Native

Page 19: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Another Benefits of Virtual DOM

• Performance benefits.

• Abstraction layers.

• FB Engineer: What if React could render to a target other than the Web Browser’s DOM?

• Instead of rendering HTML/CSS to the browser’s DOM. Why can’t we rendering mobile app by using Objective-C APIs to render to iOS, and invokes Java to render to Android.

Page 20: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript
Page 21: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Rendering Lifecycle

Mounting Component

Re-rendering Component

Page 22: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Async Rules• Good benefits of JavaScript is their asynchronous

natures.

• React-Native is running on separated thread using JavaScript asynchronous call via the event bridge to invokes the host native platform’s underlying APIs and UI elements. (Objective-C, Java)

• Since, React-Native don’t run on the main UI rendering thread, it can do asynchronous call without impact user’s experience (such as delay).

Page 23: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

AndroidNative

UI

Event Bridge

JS World Android World

Thread 1 Main Thread

AsyncCall(Non-Blocking)

Page 24: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

How React-Native Draw?• React for the Web, render normal HTML elements

• React Native, render cross-platform (or platform-specific) native UI component.

Cross Platform (iOS, Android) Platform Specific

<DatePickerIOS>

Page 25: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Example of Platform Specific Components

<Switch>

<SwitchIOS><SwitchAndroid>

Page 26: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

JSX• Combining JavaScript and XML-markup syntax to create view.

• Single File Concept (Write down at Component Class), Not Seperate Files (Split HTML, CSS, JS)

• Separation of concerns > Separation of technologies

JSX (Underlined) Rendered View

Page 27: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Styling• In Web, We have CSS, necessary part of the Web.

• In React-Native, We have something similar to CSS, called Flexbox Layout Model.

{ background-color : ‘white’}

{ backgroundColor : ‘white’}

CSS

Camel Case in React

Page 28: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript
Page 29: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

React-Native Support• Mac OS can develop

• iOS

• Android

• Windows OS can develop

• Only Android

Page 30: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

HomeBrew Installation

• Open Terminal (Click on Find icon on the top right of the screen)

• Type “Terminal”

• Enter $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Page 31: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Install React-Native in Mac for iOS Development.

Page 32: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

React-Native-Cli Command

Page 33: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Try

• $ react-native init sampleProject

• $ cd sampleProject

• $ react-native run-ios

Page 34: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

IDE• Any Text Editor is fine.

• Atom

• React

• React-Snippet

• Atom-React-Native-CSS

• Atom-React-Native-Autocomplete

• Sublimes

• Visual Studio Code

Page 35: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Project Structure

Page 36: React Native Introduction: Making Real iOS and Android Mobile App By JavaScript

Download Lecture Note After Class & Video

http://www.kobkrit.com