해당 글은 강의 들은 내용을 머릿속에 정리하기 위해서 혼자 정리한 글입니다.
front 디렉토리에서 npm init
으로 package.json 생성
npm i reat react-dom
으로 리액트와 리액트돔을 설치
npm i next@9
로 next.js 9버젼을 설치
"scripts": {
"dev": "next"
},
front 디렉토리 내부에 pages
폴더를 만들어준다.
pages
폴더에 들어있는 파일들은 모두 code splitting이 된다.pages
폴더여야 한다.index.js 파일을 만들어서 아래 코드를 입력해주자.
// index.js
import React from 'react';
const Home = () => {
return (
<div>Hello, Home!</div>
);
}
export default Home;
npm run dev
를 치면 pages 안에 있는 index.js가 실행된다.Next.js 는 pages 폴더에 있는 페이지 컴포넌트를 1:1로 매핑해준다.
localhost:3000/signup, localhost:3000/profile 에 접속하면 위에서 만든 컴포넌트들이 보여진다.
페이지를 자동으로 라우팅까지 해주기 때문에 굉장히 편하다.
localhost:3000/about/...
이런식으로 주소에 추가할 수 있다.npm i prop-types
를 설치하자// AppLayout.js
import React from 'react';
import PropTypes from 'prop-types';
const AppLayout = ({ children }) => {
return (
<div>
<div>공통 메뉴</div>
{children}
</div>
);
};
AppLayout.propTypes = {
children: PropTypes.node.isRequired,
}
export default AppLayout;
// indes.js
import React from 'react';
import AppLayout from '../components/AppLayout';
const Home = () => {
return (
<AppLayout>
<div>Hello, Home!</div>
</AppLayout>
);
}
export default Home;
Link
를 사용한다.import Link from 'next/link;
// AppLayout.js
import React from 'react';
import PropTypes from 'prop-types';
import Link from 'next/link';
const AppLayout = ({ children }) => {
return (
<div>
<div>
<Link href="/"><a>노드버드</a></Link>
<Link href="/profile"><a>프로필</a></Link>
<Link href="signup"><a>회원가입</a></Link>
</div>
{children}
</div>
);
};
AppLayout.propTypes = {
children: PropTypes.node.isRequired,
}
export default AppLayout;
npm i eslint -D
npm i eslint-plugin-import -D
npm i eslint-plugin-react -D
npm i eslint-plugin-react-hooks -D
.eslintrc
파일을 만들어주자.// .eslintrc
{
"parseOptions": {
"ecmaVersion": 2020,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"env": {
"browser": true,
"node": true,
"es6": true
},
"extends" : [
"eslint:recommended",
"plugin:react/recommended"
],
"plugins": [
"import",
"react-hooks"
],
"rules": {
}
}