티스토리 뷰
# 시작
[나만의 블로그]의 FrontEnd는 React-Apollo, Hooks, TypeScript를 사용합니다.
전체적인 Css는 Free Template를 사용하며 디테일한 부분만 Styled Components를 이용합니다.
Free Template 관련 파일은 Github의 MyBlog/frontEnd/src/static/assets, images 디렉터리에 있습니다.
https://github.com/eonnine/MyBlog.git
# 준비
- Visual Studio Code : 개발 IDE
- Node.js 설치 : 패키지 관리 도구. https://nodejs.org/en/
# 개발 환경 구성
이전 포스팅에서 서버를 구성했던 MyBlog 디렉터리로 이동해서 아래 명령어를 순서대로 입력합니다.
$ mkdir frontEnd & cd frontEnd & npm init
$ code .
실행된 VS Code를 보면 package.json만 덩그러니 있을 텐데요. 다음과 같이 디렉터리를 구성합니다.
이제 필요한 의존성을 설치합니다.
$ npm -g i parcel-bundler
$ npm -S i react react-dom react-router-dom styled-components
$ npm -S i graphql graphql-tag react-apollo react-apollo-hooks apollo-cache-inmemory apollo-client apollo-link-http
$ npm -D i babel-core babel-preset-env babel-preset-react
$ npm -D i typescript @types/react @types/react-dom @types/react-router-dom
설치가 끝난 package.json 파일의 dependencies.
Type Script까지 설치가 되었다면 아래 명령어를 실행하여 tsconfig.json파일을 생성합니다.
$ tsc --init
tsconfig.json파일을 열어보면 각 옵션들이 주석 처리되어 있는 걸 확인할 수 있습니다. 기본적인 옵션들을 정의합니다.
{
"compilerOptions": {
/* Basic Options */
"target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
"allowSyntheticDefaultImports": true,
"outDir": "./build",
"jsx": "react", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
"watch": false,
"strictNullChecks": true,
"skipLibCheck": true,
/* Strict Type-Checking Options */
"strict": true, /* Enable all strict type-checking options. */
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules"
]
}
기본적인 디렉터리 생성과 패키지 설치가 끝났으니 환경 설정을 시작합니다.
아래처럼 각 파일의 내용을 작성해주세요.
. babelrc
{
"presets": ["env", "react"]
}
src/App.tsx
import React, { Fragment } from "react";
const App = () => {
return (
<Fragment>
Hello My Blog!
</Fragment>
)
}
export default App;
src/index.tsx
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
ReactDOM.render(<App />, document.getElementById("root"));
src/index.html
<body>
<!-- Free Template -->
<link rel="stylesheet" href="static/assets/css/fontawesome-all.min.css" />
<link rel="stylesheet" href="static/assets/css/main.css" />
<noscript><link rel="stylesheet" href="static/assets/css/noscript.css" /></noscript>
<script src="static/assets/js/jquery.min.js"></script>
<script src="static/assets/js/jquery.scrollex.min.js"></script>
<script src="static/assets/js/jquery.scrolly.min.js"></script>
<script src="static/assets/js/browser.min.js"></script>
<script src="static/assets/js/breakpoints.min.js"></script>
<script src="static/assets/js/util.js"></script>
<script src="static/assets/js/main.js"></script>
<!------------------->
<div id="root"></div>
<script src="./index.tsx"></script>
</body>
package.json에 scripts 추가
"scripts": {
"start": "parcel src/index.html -p 3000 --open",
"build": "tsc"
},
@start
-p 3000 : 포트를 3000으로 설정.
--open : 번들링 후 운영 체제의 기본 브라우저로 open.
# 실행
개발 서버를 시작합니다.
$ npm start
브라우저 창이 열리고 Hello My Blog! 가 정상적으로 출력되는지 확인합니다.
# 마치며
다음 포스팅에서는 Apollo Client를 이용해 서버에서 샘플 데이터를 가져와보겠습니다.
# GitHub
'프로젝트 > 나만의 블로그' 카테고리의 다른 글
Spring Boot & Nashorn으로 SSR [BE] (0) | 2019.08.25 |
---|---|
React & Apollo [FE] (0) | 2019.08.24 |
Spring Boot & GraphQL (2) [BE] (2) | 2019.08.18 |
Spring Boot & GraphQL (1) [BE] (0) | 2019.08.18 |
Spring Boot & PostgreSQL [BE] (0) | 2019.08.18 |
- Total
- Today
- Yesterday
- 실행 문맥
- JPA
- 동적계획법
- Docker
- Apollo
- Nashorn
- CI
- typescript
- 프로그래머스[이분탐색]
- 프로그래머스[정렬]
- Handshake
- 프로그래머스[Lv1]
- PostgreSQL
- execution context
- 프로그래머스[스택/큐]
- react
- Web
- 웹 사이트 최적화
- Kubernetes
- Spring Boot
- 프로그래머스[힙]
- Jenkins
- 프로그래머스[해시]
- 알고리즘
- graphql
- Pipeline
- CD
- javascript
- 프로그래머스
- CRP 최적화
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |