1. 비주얼 스튜디오 코드에 sample.js 파일을 생성한다.
2. 코드 작성 후, Ctrl + S로 작성한 코드를 저장한다.
3. Ctrl + J로 비주얼 스튜디오 코드의 터미널을 오픈한다.
4. 경로가 해당 폴더에 있는 것을 확인한 후, 터미널에 명령어를 입력한다.
node sample.js
// js파일을 node.js로 실행하는 명령어
1. 패키지 단위로 관리하기 위한 루트 폴더를 생성한다.
2. 비주얼 스튜디오 터미널에서 다음 명령어를 입력한다.
npm init
// Node.js를 초기화하는 명령어
// 초기화: Node.js 패키지를 구성하는 데 필요한 최소한의 구성 요소를 자동으로 생성하는 과정
3. 모든 질문에 Enter 키를 누른다.
4. Is This OK? 문구가 나올 시 yes입력 후 Enter 키를 누른다.
1. 루트 폴더에 있는 package.json의 scripts 항목을 다음과 같이 수정한다.
{
(...)
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
(...)
}
2. 비주얼 스튜디오 터미널에서 다음 명령어를 입력한다.
npm run start
// npm run : 뒤에 나오는 스크립트 실행
// 즉, npm run start는 package.json에 기록한 scripts에서 일치하는 명령어를 찾아 실행
// start 항목에 node index.js라고 지정했으므로 해당 명령어 실행
package.json에 아래 코드를 작성하면 Node.js 패키지는 모듈 시스템으로 ESM을 사용
{
"name": "week04",
"version": "1.0.0",
"description": "",
"main": "Study04.js",
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"type": "module" // 해당 줄의 코드를 추가
}
개별 내보내기
// circle.js
// ESM에서는 export 키워드를 변수나 함수 선언 앞에 붙이면 해당 값을 모듈에서 내보낼 수 있다.
export const PI = 3.141592;
export function getArea(radius){
return PI * radius * radius;
}
export function getCircumference(radius) {
return 2 * PI * radius;
}
// circle.js
// 한 번에 여러 값을 내보낼 수 있다.
const PI = 3.141592;
function getArea(radius){
return PI * radius * radius;
}
function getCircumference(radius) {
return 2 * PI * radius;
}
export {PI, getArea, getCircumference};
개별 불러오기
// index.js
import {PI, getArea, getCircumference} from "./circle.js";
console.log(PI, getArea(1), getCircumference(1));
// 터미널에서 npm run start로 실행 시 해당 값을 정상적으로 볼 수 있음
전부 불러오기
// index.js
import * as circle from "./circle.js";
console.log(circle.PI, circle.getArea(1), circle.getCircumference(1));
기본값으로 내보내기
// circle.js
const PI = 3.141592;
function getArea(radius){
return PI * radius * radius;
}
function getCircumference(radius) {
return 2 * PI * radius;
}
export default {PI, getArea, getCircumference};
// index.js
import circle from "./circle.js";
console.log(circle.PI, circle.getArea(1), circle.getCircumference(1));
// lodash 라이브러리 사용 예시
import lodash from "lodash";
const arr = [1,1,1,2,2,1,1,4,4,3,2];
const uniqueArr = lodash.uniqBy(arr);
console.log(uniqueArr);
// 컴포넌트 작성
function MyHeader() {
return (
<header>
<h1>안녕하세요.</h1>
<header>
);
}
<!--컴포넌트 호출-->
<!DOCTYPE html>
<body>
<!-- MyHeader 컴포넌트를 호출하여 <header>태그 불러오기 -->
<MyHeader />
</body>
</html>
1. 문서 폴더 아래에 루트 폴더 생성 후, 비주얼 스튜디오 코드에서 루트 폴더를 연다.
2. 비주얼 스튜디오 코드의 터미널을 열고 다음 명령어를 실행한다.
npx create-react-app .
// 점(.)은 현재 폴더를 의미
// 즉, 현재 폴더에 리액트 앱을 만들라는 명령어
1. 비주얼 스튜디오 코드의 터미널을 열고 다음 명령어를 실행한다.
npm run start
2. 리액트 앱의 주소 http://localhost:3000에 접속한다.
3. 터미널에서 Ctrl + C를 누르면 리액트 앱을 종료한다.
1. npx create-react-app으로 생성한 리액트 앱의 주소는 기본적으로 http://localhost:3000으로 설정되어 있다.
2. 브라우저가 자동으로 리액트 서버에 http://localhost:3000을 요청한다.
1. localhost:3000으로 접속을 요청하면 public폴더의 index.html을 반환한다.
2. index.html은 src 폴더의 index.js와 해당 파일이 가져오는 자바스크립트 파일을 한데 묶어 놓은 bundle.js를 불러온다.
3. bundle.js가 실행되어 index.js에서 작성한 코드가 실행된다.
4. index.js는 ReactDOM.creatRoot 메서드로 돔에서 리액트 앱의 루트가 될 요소를 지정한다.
5. render 메서드를 사용해 돔의 루트 아래에 자식 컴포넌트를 추가한다.
6. App 컴포넌트가 렌더링된다.
<프로그래밍 문제>
1. 다음과 같이 circle.js 파일을 작성하였을 때, index.js에서 해당 모듈을 받는 코드를 작성하시오. (복수 정답 인정)
const PI = 3.141592;
function getArea(radius){
return PI * radius * radius;
}
function getCircumference(radius) {
return 2 * PI * radius;
}
export default {PI, getArea, getCircumference};
2. <p> 태그에 감싸진 채로 Hello world를 출력하는 컴포넌트를 작성하시오.
1.
import {PI, getArea, getCircumference} from "./circle.js";
console.log(PI, getArea(1), getCircumference(1));
import * as circle from "./circle.js";
console.log(circle.PI, circle.getArea(1), circle.getCircumference(1));
2.
function HelloP() {
return (
<p>Hello world</p>
);
}
출처 : 이정환, 『한 입 크기로 잘라먹는 리액트』, 프로그래밍인사이트(2023), p130-177.
Corner React.js 3
Editor: lyonglyong
[리액트 스타터3] project 1 [카운터] 앱 만들기 6장. 라이프 사이클과 리액트 개발자 도구 (0) | 2023.11.17 |
---|---|
[리액트 스타터3] 5장. 리액트의 기본 기능 다루기 2 (0) | 2023.11.10 |
[React.js 3] 5장. 리액트의 기본 기능 다루기 1 (1) | 2023.11.03 |
[React.js 3] 2장. 자바스크립트 실전 (0) | 2023.10.06 |
[React.js 3] 1장. 자바스크립트 기초 (0) | 2023.09.29 |