React는 사용자 인터페이스를 만들기 위한 라이브러리이다.
프레임워크가 아니고, 심지어 웹에만 사용할 수 있는것도 아니다.
웹을 만들기 위해서는 React 를 ReactDOM과 함께 사용한다.
React와 ReactDOM은 다른 실제 웹 프레임워크들과 동일한 공간에서 논의되고 동일한 문제를 해결하기 위해 사용된다.
React의 주요한 목표는 개발자가 UI를 만들 때 일어나는 버그들을 최소화 하는것이다.
이를 달성하기 위해서는 React는 사용자 인터페이스의 일부를 나타내는 자족적이고, 논리적인 코드 조각인 컴포넌트들을 사용한다.
const heading = <h1> Hello! </h1>;
JSX 표현식 ( JSX expressrion) - 얼핏보면 HTML 같이 생겼지만, 실제로는 JavaScript
create-react-app은 애플리케이션의 이름을 인수로 가진다.
create-react-app은 새로운 디렉토리를 만들 때 사용한 후 그 안에 중요한 파일을 생성한다.
npx create-react-app moz-todo-react
이 명령어는 moz-todo-react 디렉토리를 만들고 다음과 같은 일을 한다.
moz-todo-react
├── README.md
├── node_modules
├── package.json
├── package-lock.json
├── .gitignore
├── public
│ ├── favicon.ico
│ ├── index.html
│ └── manifest.json
└── src
├── App.css
├── App.js
├── App.test.js
├── index.css
├── index.js
├── logo.svg
└── serviceWorker.js
scr 디렉토리는 애플리케이션의 소스코드가 있는곳으로, 가장 많은 시간을 보내는곳이다.
1-1. public 디렉터로는 앱을 개발하는 동안 브라우저가 읽을 파일을 가지고 있다. 이들 중 가장 중요한것은 index.html이다.
-> React는 코드를 html 파일에 주입하여 브라우저가 코드를 실행할 수 있게 한다.
상단의 import문은 App.js가 다른 곳에 정의된 코드들을 사용 할 수 있게 해준다.
import React from 'react';
import logo from './logo.svg';
import './App.css';
1. 첫번째 명령문은 React 라이브러리를 불러온다.
작성한 JSX를 React.createElement()로 변환하기 때문에, 모든 React 컴포넌트들은 반드시 React 모듈을 불러와야 한다.
2. 두번째 명령문은 ./logo.svg 로부터 로고를 불러온다.
./를 경로의 시작에, .svg 익스텐션을 마지막에 사용한다는것은 해당 파일이 로컬에 위치하며 JavaScript 파일이 아니라는것을 뜻한다.
React 모듈을 불러올 때는 경로나 익스텐션을 쓰지 않는다. 이것들은 로컬 파일이 아니라, package.json의 의존성 목록에 포함되어 있다. 로컬과 이들을 구분!
3. 세번째 명령문은 App 컴포넌트에 관련된 CSS를 불러온다.
어떤 변수 이름이나 from 지시가 없다. 이 import 구문은 JavaScript 모듈 구문이 아니라 웹팩 (Webpack)으로부터 온것이다.