Android, ios처럼 각각의 운영체제 환경에 맞춰서 개발한 앱을 말합니다. 즉, 개발을 할 때 Android는 Android Studio, ios는 Swift를 이용해서 개발합니다. Native App은 성능이 웹앱 , 하이브리드 앱에 비하여 가장 높지만, 플랫폼에 의존적이기 때문에 해당 언어를 다룰 수 있어야 개발 가능하다는 단점이 있습니다.
2. React Native
Native App과 달리, 운영체제에 구애 받지 않고 하나의 언어로 앱을 개발하는 방법도 있습니다. 이를 Hybrid App이라고 하고, React Native를 이용해서 개발 가능합니다.
3. Electron
Node.js 기반의 플랫폼으로, 데스크탑 App 개발이 가능합니다. 대표적인 앱으로는 VScode, Atom 등이 있습니다.
4. Reactive Native 실습
💡
React Native로 5분만에 완성하는 웹앱(구름IDE + Expo) 실습은 유튜브에서도 확인할 수 있습니다.😉 (https://bit.ly/3iN5Bb9)
4.1. 실습 전 준비 사항
구름 IDE 로그인 & React Native 컨테이너 생성 (회원이 아니면 회원가입부터 진행해 주세요!)
앱스토어 / 플레이스토어에서 Expo 설치 또는 snack(https://snack.expo.io/) 준비
다만, Snack의 경우 대기 시간이 걸리기 때문에 Expo 설치를 권장합니다.
snack 사용법
실습 중 아래와 같은 화면이 뜨면 'Add dependency'를 클릭해 의존성을 추가하면 됩니다.
import * as React from 'react';
import { Text, View, StyleSheet } from 'react-native';
import Constants from 'expo-constants';
// You can import from local files
import AssetExample from './components/AssetExample';
// or any pure javascript modules available in npm
import { Card } from 'react-native-paper';
export default function App() {
return (
<View style={styles.container}>
<Text style={styles.paragraph}>
Change code in the editor and watch it change on your phone! Save to get a shareable url.
</Text>
<Card>
<AssetExample />
</Card>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
paddingTop: Constants.statusBarHeight,
backgroundColor: '#ecf0f1',
padding: 8,
},
paragraph: {
margin: 24,
fontSize: 18,
fontWeight: 'bold',
textAlign: 'center',
},
});
import * as React from 'react';
import { Text, View, StyleSheet } from 'react-native';
import Constants from 'expo-constants';
// You can import from local files
import AssetExample from './components/AssetExample';
// or any pure javascript modules available in npm
import { Card } from 'react-native-paper';
export default function App() {
return (
<View style={styles.container}>
<Text style={styles.paragraph}>
Hello World!
</Text>
<Card>
<AssetExample />
</Card>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
paddingTop: Constants.statusBarHeight,
backgroundColor: '#ecf0f1',
padding: 8,
},
paragraph: {
margin: 24,
fontSize: 18,
fontWeight: 'bold',
textAlign: 'center',
},
});
import * as React from 'react';
import { WebView } from 'react-native-webview';
export default class App extends React.Component {
render() {
return <WebView source={{ uri: 'https://paullab.co.kr/about.html' }} style={{ marginTop: 20 }} />;
}
}