브라우저에서 사이트에 들어가면 UI (User Interface : 보여지는 것 ) 과 UX (User Experience : 할 수 있는 것)이 많다. 이러한 이유로 웹 페이지라는 단어보다, 웹 애플리케이션이(Web Application) 이라는 단어를 자주 사용한다.
➡️ 애플리케이션의 규모가 커지고, 다양한 UI, UX를 구현하기 위해서는 이전의 방법으로는 애플리케이션을 개발하고 코드를 유지보수 하는 것이 어려워졌다.
➡️ 생산성 향상과 데이터 관리, 코드 유지보수를 위해 다양한 Frontend Framework(Library)가 등장한다.
➡️ 프론트엔드 라이브러리 혹은 프레임워크를 사용하는 가장 큰 이유 : UI를 자동으로 업데이트해 준다는 점이다.
➡️ DOM은 트리구조로 이루어져있는데, 바뀌는 부분만 찾아서 바꿔주는 기술이다.
➡️ 즉, 불필요한 UI 업데이트는 줄고 성능이 좋아진다.
✔️ npm, Node.js 설치 완료한 모습 !
: 리액트 프로젝트를 시작하는데 필요한 개발환경을 세팅해주는 도구(toolchain)
✔️ 리액트는 UI 기능만 제공한다.
✔️ 개발자기 직접 구축해야하는 것이 많다. 즉, 처음 시작하는 단계에서는 직접 개발 환경을 구축하기 어렵다.
✔️ 이러한 문제를 해결하기 위해 CRA(Create-React-App)을 만들었다.
CRA 설치 후, CRA 초기 폴더 및 파일 세팅 구성은 아래와 같이 나타났다.
📍 CRA 설치로 생성된 폴더와 파일에 대해서 알아보자!
1) node.modules
dependencies
가 있기 때문에 다른 사람도 node.modules를 사용 할 수 있다.2) package.json
dependencies
: 리액트를 사용하기 위한 모든패키지 리스트, 버전확인 가능npm install
만 입력하면 package.json에 기록되어 있는 패키지의 이름과 버전 정보를 확인하여 자동으로 설치해준다.node.modules
는 올리면 안되기 때문에 (불필요한 용량차지) .gitignore
파일에 github에 올리고 싶지 않은 폴더와 파일을 작성하면 된다!--save
를 하면 dependencies
에 추가된다.scripts
npm run start
3) .gitignore
.gitignore
파일에 github에 올리고 싶지 않은 폴더, 파일 작성.gitignore
파일에 작성된 폴더와 파일은 올라가지 않는다. 1) public index.html
2) src index.js
ReactDOM.render( <App /> , document.getElementById('root'))
3) src App.js
현재 화면에 보여지고 있는 초기 컴포넌트
Westagram에서 작성한 login, main 페이지를 ➡️ 컴포넌트,
컴포넌트로 대체하여 작업해주면 된다.추후, React Router를 배운 후에는 컴포넌트가 최상위 컴포넌트로 그 자리에 위치하게 된다.
1) public 폴더
index.html
images - 이미지 파일 관리
data - mock data 관리
2) src 폴더
+ components - 공통 컴포넌트 관리
Login.js
, Login.scss
Main.js
, Main.scss
reset.css
- css 초기화common.scss
- 공통으로 사용하는 css 속성 정의 3) component vs .pages : 컴포넌트를 선언하는 방식은 Class형 컴포넌트(Class Component) 과 함수형 컴포넌트(Functional Component) 가 있다.
<div style={{color : "red"}}>Hello React</div>
➡️ style은 객체, 그안에 stlyle 객체<input />
태그의 형식으로 작성하는 습관을 기르는게 html 작성시에도, react에서 컴포넌트를 작성할때 정확한 태그 사용할 수 있는 힘을 길러 줄 것이다!<> ... </>
에서는 DOM에 별도의 노드를 추가하지 않고하나의 컴포넌트 안에 여러 요소(자식)들을 간단하게 그룹화할 수 있는 기능이 있다.div
태그의 생성을 막을 수 있다.이론을 공부하고, 내가 이전에 만든 Westagram 코드를 React를 통해서 구현해보았다. 페이지만 구현한 것이지만 리액트 화면에 내가 만든 페이지가 나오니 얼마나 뿌듯하더지...! ✨
import React from 'react';
React ❗️필수❗️ import './Main.css';
해당 컴포넌트의 CSS (지금은 Main 컴포넌트의 CSS 파일)export default 컴포넌트
컴포넌트 아래에 적이주기 ❗️필수❗️import React from 'react';
React : node_modules 에서 바로 가져오는것 ❗️필수❗️ import ReactDOM from 'react-dom';
ReactDOM : node_modules 에서 바로 가져오는것 ❗️필수❗️ common.css
or reset.css
import Main from './pages/Main/Main';
: import ~ from의 형태를 띄고 컴포넌트를 불러온다.ReactDOM.render(<Main />, document.getElementById('root'));
컴포넌트를 랜더링 할 수 있도록 랜더 함수를 적는다.CSS background-image
background-image: url() 은 적용이 되지 않는다..이 오류를 해결하기 위해서는
➡️ url을 ""
로 감싸 주어야한다.
➡️ public을 인식하지 못하기 때문에 images 앞에 localhost:3000/
을 적어주어야 한다.
➡️ background-image: url("http://localhost:3000/images/userImage.jpg");
font-awsome
➡️ 방법1) index.html에 font-awsome link연결하기
➡️ 방법2) font-awsome react 패키지 다운 받아 사용하기
➡️ 방법3) React-icon 사용하기
현재는 방법1)로 화면을 구현하였다. 방법2)로 import는 가능하나, 기존 아이콘과 다른 두께와 이미지가 보여서 사용하지 않았다. 방법3) React 에서도 icon을 제공한다고 한다. 문서를 보니 간한하게 태그 하나로 아이콘을 넣을 수 있어서 다음 React 개발엔 패키지를 install 해서 사용해봐야겠다.
Warning Sign
화면은 정상적으로 구현되지만, Warning Sign이 떠서 왜 그런지 이유를 알아보고자 했다. 찾아보니 a태그
의 링크가 설정되어있지 않아서 발생했다. 똑똑한 React...!