일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- MySQL
- jenkins maven
- jenkins github 연동
- Jenkins
- CI/CD
- jenkins github
- jenkins jdk
- java
- gradle
- grpc
- grafana
- 리액트
- jenkins install
- docker network
- Linux
- vue.js
- Spring Boot
- 리눅스
- MongoDB
- jpa
- spring
- subnetmask
- Jenkins Pipeline
- nginx
- Docker
- JavaScript
- REACT
- error
- jenkins 설치
- IntelliJ
- Today
- Total
뭐든 즐기면서 ;)
JSX / Babel 본문
※ JSX(JavaScript extension)란
- JavaScript의 확장 문법
- HTML 문법을 JavaScript 코드 내부에 적은 것.
- 빌드 시 Babel에 의해 자바스크립트로 변환됩니다.
- JavaScript 코드를 HTML처럼 표현할 수 있어 가독성에 좋습니다.
- JSX는 React element를 생성합니다.
※ JSX 문법
1. attribute에는 따옴표("") 또는 중괄호({})만 쓸 수 있습니다.
// 따옴표 사용 : 문자열 리터럴 정의
const element = <div tabIndex="0"></div>;
// 중괄호 사용 : JavaScript 표현식 삽입
const element = <img src={user.avatarUrl}></img>;
// 중괄호 사용 : 변수 또는 함수 삽입
const name = 'HyePark';
const element = <div>{name}</div>;
// 함수 삽입
function formatName(user) {
return user.firstName + ' ' + user.lastName;
}
const user = {
firstName: 'Harper',
lastName: 'Perez'
};
const element = <h1>Hello, {formatName(user)}!</h1>;
2. HTML attr이름 대신 camelCase 명명 규칙 사용.
- JSX 표현식은 HTML보다 JavaScript에 가깝기 때문에 camelCase를 사용합니다.
ex) <div class="sample"/> 이 아니라 <div className="sample"/>
3. 태그는 항상 닫혀 있어야 합니다. '/>'
ex) <br> 이렇게 작성할 경우 오류가 발생합니다. 반드시 <br/>과 같이 태그를 닫아주어야 합니다.
※ JSX 객체
React.createElemnet() 함수를 호출함으로써 Babel이 JSX를 컴파일합니다.
작성은 아래와 같이 두 가지 방법으로 가능합니다.
const element = (
<h1 className="greeting">
Hello, world!
</h1>
);
// 또는
const element = React.createElement(
'h1',
{className: 'greeting'},
'Hello, world!'
);
React.createElemnet() 은 몇 가지 검사를 수행하여 버그가 없는 코드를 작성하고, 아래와 같은 객체를 생성합니다.
const element = {
type: 'h1',
props: {
className: 'greeting',
children: 'Hello, world!'
}
};
이러한 객체를 "React 엘리먼트"라고 합니다.
React는 이 객체를 읽어서, DOM을 구성하고 최신 상태로 유지합니다.
※ Babel이란
- 바벨은 JavaScript 컴파일러이다.
- 바벨은 ECMAScript 2015+ code를 현재 및 예전 브라우저 환경에서 하위 호환 버전의 자바스크립트 코드로 변환하는 데 주로 사용되는 도구(toolchain=프로그램 개발 도구들의 집합)입니다.
최신 버전의 자바스크립트 문법을 브라우저가 이해하지 못하기 때문에 Babel이 브라우저가 이해할 수 있는 문법으로 변환해 줍니다.
* ECMA 버전 변화 : ES3 -> ES5 -> ES6(ES2015) -> ES7(ES2016)
// Babel Input: ES2015 arrow function
[1, 2, 3].map(n => n + 1);
// Babel Output: ES5 equivalent
[1, 2, 3].map(function(n) {
return n + 1;
});
+ babel-polyfill
*별도 설정 필요
- 바벨을 사용한다고 해서 자바스크립트 최신 함수를 사용할 수있는 것이 아니다.
바벨은 문법을 변환해주는 역할만 할 뿐. polyfill은 프로그램이 처음에 시작될 때 현재 부라우저에서 지원하지 않는 함수를 검사하여 각 object의 prototype에 붙여주는 역할을 합니다.
즉, 바벨은 컴파일 타임에 실행되고, polyfill은 런 타임에 실행됩니다.
'FRONT > React' 카테고리의 다른 글
React state와 props 차이점 / React props와 state 차이점 (0) | 2021.11.04 |
---|---|
React Components와 Props (0) | 2021.11.01 |
React Element Rendering / React 엘리먼트 렌더링 (0) | 2021.10.31 |
React 시작하기 / Node.js 설치 / React app 생성 (0) | 2021.10.29 |
React 개념 (0) | 2021.10.26 |