STUDY
React 맛보기
수밈
2023. 8. 28. 22:53
장고와 Python만 작업해보다가, 잠시 React 프로젝트를 살펴보게 되었습니다.
예전에 Node.js 스터디를 해본적이있지만, 기억이 하나도 안나더라구요.
보기전에 레포 로컬에 설치하면서 궁금했던 것 및 개념좀 정리해 보았습니다.
Javascript
- 자바스크립트는 프로그래밍 언어중 하나로 웹 표준 (HTML/CSS/Javascript) 중 하나로 채택되어 사용됨
- HTML/CSS 는 정적인 언어로 한번 설정하면 못바꿈.
- 로그인을 하거나 페이지를 이동하기위한, 즉 이벤트가 발생했을때 변경해줄 수 있는 방법이 필요했음
- 이벤트로 변경이 필요한경우 Javascript 를 통해 동작을 변경
- 따라서 웹 브라우저에서 자바스크립트를 실행할 수 있는 런타임 환경을 제공함
- 결론은, 클라이언트에서 동적인 기능을 담당하고 있음.
Node.js
- Node.js는 JavaScript를 브라우저 외부에서 실행할 수 있는 런타임 환경임.
- 옛날옛적, 서버를 자바스크립트를 사용해서 코드를 짜는게 어떻겠냐라는 흐름이 생김
- 서버는 PHP, Ruby, Python 등의 언어로 작성되며, 클라이언트는 HTML, CSS, JavaScript를 씀
- 에전에는 풀스택이기 때문에 여러 언어를 썼어야함. 나라도 프로그래밍 언어 하나만 이해하고 싶었을 것 같음.
- 무튼 그래서 서버쪽에서 자바스크립트 사용이 필요해짐
- 관련 런타임 환경이 필요해졌고, 나온게 Node.js
- 서버에서 사용하다보니 서버에 필요한 로직들이 필요해짐
- 웹 서버 구축이나 데이터베이스, 파일 접근하는 로직등
- 이런 로직들을 만들어놓고, 갖다 쓸 수 있는 패키지 매니저가 제공함
- 그게 NPM(Node Package Manager)
- 여러 개발자들이 미리 만들어진 라이브러리 도구를 가져다 쓸 수 있는 도구임
- Package.json에 패키지들을 저장하고, `npm install` 명령어를 입력하면, 관련 라이브러리 모듈들이 깔림
- 이 .json 파일에 버전 및 어떤 의존성이 있는지 확인 가능
런타임
코드가 실행할 수 있는 환경을 의미합니다. 코드를 빌드하고 실행하는 작업을 제공해주는 환경이라고 생각하면됩니다.
React
- 내생각에 html/css 가 각각 페이지마다 만들어지다보니, 중복 코드가 장난아니었을 것 같음
- 그런 코드들을 하나의 컴포넌트로 관리하고, 좀 상태적인 처리가 필요했던것 같음.
- JSX를 사용함
- 써보니까 javascript, html, css 한번에 짬뽕해서 한 페이지에 쓸수있는 문법임
- 클라이언트 사이드 렌더링을 제공해준다함.
- 리액트를 써서 만들면 브라우저에서 해당 코드들을 전부 짬뽕해서 조합해줌. 빠르다함
Next.js
- react 위에서 작동하는 웹 개발 프레임워크
- 서버 사이드 렌더링을 제공함. 서버에서 웹 페이지를 렌더링함. 브라우저가 추가작업할 필요가 없음
- 서버사이드 렌더링을 안하더라도, 정적 페이지 생성을 제공하기 때문에 서버리스로 정적 파일을 생성하고 클라이언트에 전달하는 기능도 존재
- 이거때매 리액트에서 사용하는듯
React Framework
https://react.dev/learn/start-a-new-react-project
리액트 프로젝트를 시작하려고 사이트에 들어가보면, 풀스택 프레임워크 설치법을 알려준다.
node.js 위에서 사용된다
시작
npx create-next-app
npx 는 node.js 의 패키지 실행 도구이다. npm 이 node.js 패키지를 설치한다면, npx 는 일회성 작업을 실행하기 위해 사용된다.
$ npm install
$ npm start
overview
component
리액트는 컴포넌트 단위로 이루어진다
function MyButton() {
return <Button> I'm a button</Button>
}
호출방법
<컴포넌트이름 />
<MyButton />
export default
파일의 구성요소를 지정한다
export default function Myapp () {
}
or
function Myapp(){}
export default Myapp;
파일 하나마다 지정하는건지 파악 필요
jsx
javscript 랑 html 을 같이 사용할 수 있도록 한 문법인듯?
{} 치고 내부 자바스크립트 사용 가능
스타일 추가
.class 문법은 .className 으로 사용 가능