웹의 규모가 커지고 복잡한 애플리케이션을 개발하여 생산성과 유지보수, 많은 데이터 양을 관리하기 위해 Frontend Framwork(Library)가 등장했다.
Library의 종류
npm -v
node -v
// 1. Desktop - wecode 폴더 진입
cd Desktop/wecode
// 2. westagram-react 프로젝트 설치
npx create-react-app westagram-react
// 3. westagram-react 프로젝트 진입
cd westagram-react
// 4. 로컬 서버 띄우기
npm start
"dependecies"
는 리액트를 사용하기 위한 모든패키지 리스트와 버전확인이 가능하며, 실제코드는 bode.modules
폴더에 존재한다.node.modules와 package.json에서 이중으로 패키지를 관리하지 않는다.
- 실제 작성한 코드와 설치한 패키지는 로컬로만 존재하며, github에 push할때 작성했던 코드와 함께 package.json을 넘긴다. 다른사람이 pull하여 npm install을 하면 package.json에 기록되어있는 패키지의 이름과 버전 정보를 확인하여 자동으로 설치하는데, node.modules는 올리면 안된다. .gitinore파일에 github에 올리고 싶지 않은 폴더와 파일을 작성한다.
"scripts"
npm run start
).gitignore
파일에 github에 push하고 싶지 않은 폴더와 파일 작성가능index.html
<div id="root"></div>
ReactDOM.render( <App /> , document.getElementById('root'))
이름은 함부로 수정하면 안된다!!
<Router/>
컴포넌트가 최상위 컴포넌트로 위치한다.public폴더의 역할
서버와 연결된 특정 url에 접근하면 해당파일의 파일을 요청할 수 있는데 /index.html을 요청하게 된다. 일반적으로/
는 public 폴더를 의미한다. 우리가 CRA을 배포를 했을 때, 실제 서버에 배포되는 폴더가 바로 public폴더이다.
Main.js
, Main.scss
components파일과 pages파일
여러 페이지에서 동시에 사용하는 컴포넌트는 components폴더에서 관리하며( ex: Header, Nav, Footer...),
페이지 컴포넌트의 경우만 pages폴더에서 관리한다.
해당 페이지 내에서 사용하는 컴포넌트의 경우 해당페이지 폴더 하위에서 관리하면 된다.
import React from 'react'
class Component extends React.Component {
render() {
return (
<div>
<h1>This is Class Component!</h1>
</div>
)
}
}
export default Component
import React from 'react'
const Component = () => {
return (
<div>
<h1>This is Functional Component!</h1>
</div>
)
};
export default Component
Hook
기능이 추가되면서 함수형컴포넌트에서 state를 사용할 수 있게되어 클래스형은 현재 거의 쓰지않게 되었다.className
으로 표기한다.<div />
처럼 바로 태그를 닫을 수 있다.<></>
)<>
<div className="loginBtn" onClick={() => console.log("click")}>Login</div>
<br />
<div style={{backgroundColor: "grey", height: "10px"}} />
</>