
브라우저에서 사이트에 들어가면 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 에 추가된다.scriptsnpm run start3) .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.scssMain.js, Main.scssreset.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...!