V(view)에 집중하여 개발할수 있도록 고안된 라이브러리
개발을 주도하는 회사(페이스북)
핵심개념
: 화면단에서 자주 쓰이거나 반복이 되는 부분을 쉽게 다루자
UI상의 특정 부분을 일컫는 말
리액트 숙련도의 기준은 UI에서 컴포넌트를 어떻게 분리 할것인가 ?
📒 1.반복
이 된다(여러페이지에 사용이 된다)
ex. layout
📒 2.데이터가 변경
이 된다
📒 3.최소한의 기능
을 가지고 있다
ex. button
화면에 UI를 사용자에게 보여주는 행위(그려주는 행위)
👉초기 랜더링
(Initial Rendering)
빈 도화지에 최초로 UI 그려지는 행위
👉리렌더링
(re-Rendering)
이미 그려져있는 UI가 다시 그려지는 행위
nodejs 설치 여부 확인하기
terminal에 👉 node -v
💁🏻♀️ Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다.
💁🏻♀️ Node.js는 크롬 V8 엔진을 기반으로 만들어져있는 자바스크립트 실행기
npm
(파일 관리자 프로그램(여러가지 라이브러리를 다운로드 받을수 있는 사이트))을 사용하기 위해서 nodejs를 설치한다. (조금더 오래되서 안전)yarn
(파일관리자 프로그램) (페이스북이만듬..)/속도측으로 조금더 빠르다는 소리도 있고..
두가지차이는 눈에 띄게 차이는 크게 없음 / 개인취향으로 사용 하면됨.안정성 높은것
은 npm, yarn모두
에 올라가있음.
(항상 공식문서 확인하기 ❗️ 업데이트되어서 바뀔수있음)
주소를 잘 파악해야한다.
👉 1. 내가 원하는 폴더(위치)까지 이동- cd 해서 들어간다.
👉 2. npx create-react-app 프로젝트이름npx create-react-app my-react-app
📒 리액트 프로젝트 실행시키기
폴더 경로를 내가 실행시키고자 하는 리액트 프로젝트까지 이동
cd my-react-app/
프로젝트 실행
npm start
📒 node_modules 폴더
리액트 프로젝트를 실행시키는 데에 필요한 여러가지
라이브러리(코드모음)
가 들어있는 폴더
만약node_modules
가 없으면 컴퓨터가 코드 해석 못함
📒 public 폴더
이미지, 영상
등 리소스를 모아놓은 폴더
favicon,ico
탭 부분에 표현되는 아이콘
📒 index.html
body태그
안쪽에 오로지id 가 root
인 비어있는div
하나만 갖고 있는 html 파일 html파일은index.html 파일 하나
만 있어야 한다<div id="root"></div>
안쪽에 내용물은 누가 넣어주는것인가 ?
index.js
가
📒 src 폴더
index.js
index.html
의 root div 의 자식으로 요소를 추가해준다
📒 App.test.js
app.js
에서 만들어놓은 코드가 버그가 없는지 확인(테스트
)하는 파일
초기단계에는 필요없으니 삭제(테스트할떄 다시 만들면됨)
📒 .gitignore 파일
github에 올리지않을 파일.
gitignore
파일은 이름에서 느껴지듯이git
이 관리하지 않을 파일들을 지정해두는 파일이다.
📒 package-lock.json
📍이 파일은 Node.js 프로젝트에서 사용되는 파일 중 하나로, 프로젝트의 종속성(
dependencies
)을 관리하는 데 도움을 주는 역할을 합니다. 이 파일은 주로npm
(Node Package Manager)을 통해 패키지를 설치하고 관리할 때 생성됩니다.
📍버전정보
가 들어있는 파일
📒 package.json
📍어떤파일이 들어있는지(
정보
).
📍이 파일은 Node.js 프로젝트의 루트디렉토리에 위치
하는 파일로, 프로젝트에 대한정보와 설정
을 담고 있는 파일입니다. 이 파일은 주로 npm (Node Package Manager)을 사용하여 프로젝트의 종속성(dependencies)을 관리하고 프로젝트를 실행, 빌드, 테스트하는 데 사용됩니다.
📍package.json
파일은npm init
명령을 사용하여 생성할 수 있으며, 프로젝트를 개발하거나 배포할 때 중요한 역할을 합니다. 프로젝트의 관리, 의존성 관리, 빌드 프로세스, 실행 등에 필요한 정보를 한 곳에 모아둠으로써 프로젝트를효과적으로 관리
할 수 있도록 도와줍니다.
❗️ 협업을 위해서는 우리는 같은 package.json 파일을 사용해서 각자의 컴퓨터에 동일한 패키지들을 설치하여 일관된 개발 환경을 만듭니다. 하지만 각 컴퓨터의 Node.js 버전이 다르면 문제가 발생할 수 있어요. 그러면 팀원들은 npm --version을 확인하고, 때로는 node_modules 폴더를 지워야 할 수도 있어요. (굉장히 번거롭고 시간낭비)
👉
그래서 package-lock.json이 나왔어요. 이 파일은 우리가어떤 패키지
와어떤 버전
을 설치하는지 정확하게 기록합니다. 그래서 다른 버전이나 다른 종속성으로 인한문제를 예방
할 수 있어요. 이제 우리는 이 파일을 통해 일관된 상태로 패키지를 설치하고, 버전 충돌을 피하며, 개발 환경을 효과적으로 유지할 수 있답니다.
❗️
package-lock.json
은package.json
으로는부족한 정보
를 도와주는 파일이다. 생성된package-lock.json
파일은소스 저장소
에 꼭 커밋.
📒 README.md
파일은 프로젝트의 루트 디렉토리에 위치하는
텍스트 파일
로, 프로젝트에 대한설명과 문서
를 제공하는 역할을 합니다. "README"는 "Read Me"의 약자로, 프로젝트를 처음 접하는 사용자나 개발자들에게프로젝트의 목적
,사용법
,구성
,설정
,예제
등을 알려주는중요한 문서
입니다.
자바스크립트의 확장 문법
브라우저에서 실행하기 전에 코드가 번들링되는 과정에서 바벨을 사용하여 일반 자바스크립트 형태의 코드로 변환됩니다
위의 코드들이 마치
HTML
을 작성한 것처럼유사해 보이지만
,HTML
과는다른 점
이 있습니다. 비슷하면서도 사실은 다른 것이죠. 이렇게 react에서 사용하는 코드를JSX
라고 부릅니다.
❗️
JSX
는 자바스크립트의공식적인
문법이라고 할 수는 없습니다.
즉, 자바스크립트에서HTML
을 작성하듯이비슷하게
작성할 수 있도록 해 주는 것이JSX
의 가장큰 장점
이자, 이를 사용하는 이유가 됩니다.
💁🏻♀️ 예를들어,
div 등에 class라는 속성을 설정할 때, 기존에
HTML
의 경우,<div class="classEx1"></div>
와 같이 표현했다면,
JSX
에서는<div className="classEx1"></div>
그외에도 몇가지 더 있다 🤨
과거에는
.jsx
하고.js
다른파일로 구분했지만,
현재는
.js
--> 통일함.
이런 코드는
마치html
으로 해석하는 것 처럼 보이게 착시를 일으킬뿐 엄연히js코드
이다.
js 안에서 사용하는 태그형태의 코드를jsx (JavaScript extensible)
라고 한다.