2019년 05월 22일
배포 시 앱을 업데이트 하는 것이 아닌 서버에 코드를 업데이트하는 방식이다.
npm install expo-cli --global
expo init react-native-weather
? Choose a template: expo-template-blank
? Choose which workflow to use: managed
✔ Please enter a few initial configuration values.
Read more: https://docs.expo.io/versions/latest/workflow/configuration · 100% completed
? Yarn v1.13.0 found. Use Yarn to install dependencies? Yes
expo login
? Username/Email Address:
? Password: [hidden]
cd react-native-weather
yarn start
Expo 로컬 홈페이지가 열리면 Run simulator 또는 모바일에서 Expo 앱을 설치하여 QR코드를 인식한다.
전체 소스코드 Github 참고
PropTypes, Error handle, Loading, StyleSheet, StatusBar, Etc.
App.js
componentDidMount() {
navigator.geolocation.getCurrentPosition(
position => {
this.getWeather(position.coords.latitude, position.coords.longitude);
},
error => {
this.setState({ error });
}
);
}
getWeather = (lat, long) => {
fetch(
`http://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${long}&appid=${API_KEY}`
)
.then(res => res.json())
.then(json =>
this.setState({
temperature: json.main.temp,
name: json.weather[0].main
})
);
};
render() {
return (
<Weather temp={Math.ceil(temperature - 273.15)} weatherName={name} />
);
}
}
Weather.js
import { LinearGradient } from "expo";
import { MaterialCommunityIcons } from "@expo/vector-icons";
const weatherCases = {
Rain: {
colors: ["#00C6FB", "#005BEA"],
title: "Raining like a MF",
subtitle: "For more info look outside",
icon: "weather-rainy"
},
...
};
const Weather = ({ temp, weatherName }) => {
return (
<LinearGradient
colors={weatherCases[weatherName].colors}
>
<View>
<Text>
<MaterialCommunityIcons
color="white"
size={144}
name={weatherCases[weatherName].icon}
/>
</Text>
<Text>{temp}º</Text>
</View>
<View>
<Text>{weatherCases[weatherName].title}</Text>
<Text>
{weatherCases[weatherName].subtitle}
</Text>
</View>
</LinearGradient>
);
};
처음 React Native를 공부했을 때는 React 경험이 없어서 어렵고 이해 안 되는 부분이 많았다.
지금이야 React 개발자가 되어 공부해보니 생각보다 쉽고 재미있었다.
다만, 기초적인 부분이기도 하고 사용했던 LinearGradient, Vector-Icons 모듈처럼 여러 모듈의 존재 여부를 모르는 부분이 React Native를 개발하면서 난관일 것이라고 생각한다.
Github : react-native-weather
Reference : nomadcoders
2019년 05월 24일
## Typescript? Typescript는 프로그래밍 언어로 Javascript + Type의 합성어이다. 컴파일 시 Javascript로 변환된다. Javascript가 유명한 건 엄격한 규칙이 없기 때문에 사용하기 쉽고, 우리가 원하는 방향으로 수정하기도 쉽다. 하지만 큰 프로젝트에서 일을 하거나 버그를 최소화하고 싶다면 위의 장점이 단점이 된다. Typescript로 작성하면 기능 예측이 가능하며, 코드를 읽기 쉬워지게 된다. ## 설치 ```bash yarn add typescript yarn add tsc-watch --dev yarn add crypto-js ``` 참고 : `yarn global add typescript` 로 설치하는 경우, tsc-watch가 인식하지 못하는 오류가 있습니다. ## 설정 **tsconfig.json** Typescript => Javascript 변환할 떄 반영하는 설정 ```json { "compilerOptions": { "module": "commonjs", "target": "ES2015", "sourceMap": true, "outDir": "dist" } } ``` > `"module": "commonjs"` node.js 평범하게 import, export 한다. > `"target": "ES2015"` ES5 버전으로 컴파일 한다. > `"sourceMap": true` Sourcemap을 설정한다. ( Sourcemap 이란? ) > `"outDir": "dist"` dist 파일로 컴파일된 파일을 출력한다. > `"include": ["src/**/*"]` 컴파일 과정에서 포함할 파일 ( src 폴더 내 전체 파일 ) > `"excude": ["node_modules"]`...
2019년 05월 24일
## 1. Sourcemap 이란? 많은 개발 환경은 Webpack 등으로 빌드 과정을 거치고있다. 만일 빌드 후 취합되거나 변환 된 CSS, JavaScript 파일들이 오류가 발생한다면, 개발자 도구에서는 빌드 된 파일에서 오류를 출력하고 있을 것이다. 하지만 우리가 원하는 것은 **빌드 전 오류난 파일 및 라인**을 알고싶은 것이다. 예를 들면, SCSS에 오류가 있고 Webpack으로 빌드를 진행하면 웹페이지에서 오류를 알려주는 부분은 빌드가 완료된 CSS를 출력한다. JavaScript도 마찬가지로 오류가 나면 취합하고 minify된 JS를 출력하고있다. 이럴때 Soucemap을 설정하면, **코드상의 위치를 기억하고 알려주기 때문에 빌드 전 어떤 파일, 라인에서 오류가 났는지 확인할 수 있다.** ## 2. 설정 ### 2.1 Webpack Dev 환경에서만 작동하도록 설정하였다. ```json { "devtool": env.mode === "development" ? "source-map" : "" } ``` ### 2.2 Typescript ```json { "compilerOptions": { "sourceMap": true } } ```
2019년 05월 22일
계속 업데이트 되는 문서입니다. LinearGradient 배경색이 그라데이션으로 출력되는 View import { LinearGradient } from "expo"; ... <LinearGradient colors={["red","blue"]} /> Vector-Icons expo 에서 제공하는 여러 폰트의 아이콘 모음이다. 아래 링크에서 아이콘 및 라이브러리를 확인하고 import하면 작동한다. vector-icons import { Ionicons, AntDesign } from "@expo/vector-icons"; ... <Ionicons color="white" size={144} name="ios-rainy" /> Text 태그 내 사용 시 배경색을 투명으로 변경한다. {backgroundColor: "transparent"}