NodeBird 0-2
학습자료 제로초님 인프런 강좌 - React로 NodeBird SNS 만들기
1. next 설치
우선 front 폴더에 pakage.json 생성하고(npm init) next 설치
npm i next@9
강의에서 사용된 next 버전과 맞추기 위해 9버전으로 설치했다.
최신 버전을 설치하고 싶으면 npm i next만 입력하면 된다.
그 후 package.json에서 scripts의 "text" 를 "dev" : "next"로 변경한 뒤
react를 설치한다 ( npm i react react-dom )
2. pages
front 폴더 내에 pages 폴더를 생성한 후 index.js 파일을 생상한다.
참고로 pages 폴더는 무조건 이름이 pages여야한다.
이유
: Next가 pages 폴더를 인식해서 그 안에 있는 폴더들을 다 개별적인, 코드 스플리팅 된 page component로 만들어주기 때문.
참고로 next.js에서는 import로 react를 불러오지 않아도 되는데, 해당 강의에서는 습관상 그냥 쓰기로 한다.
- pages 폴더 내에 다른 폴더를 만들 수도 있다.
ex ) pages에 about 폴더 생성 > test.js 파일 생성
http://localhost:3000/about/test로 들어가보면 Hello, Test로 잘 뜨는 걸 확인할 수 있음.
- 확인 과정에서 발생한 에러
npm run dev로 화면을 띄워보려는데, 에러가 발생했다.
error:0308010C:digital envelope routines::unsupported
서치해보니 노드 버전이 높아서 생기는 문제라고 한다.
해결법 : terminal에 다음과 같이 입력
export NODE_OPTIONS=--openssl-legacy-provider
[출처] https://han-py.tistory.com/407
근본적인 해결책은 아니기에 가능하면 node 버전을 낮춰서 빌드하는 것이 좋다고 한다.
3. components
page가 아닌 component들은 front 폴더 내에 따로 components 폴더를 만들어 관리한다.
( 참고로 components 폴더는 이름 바꿔도 됨. pages만 무조건 pages라는 이름을 사용하면 된다. )
components 폴더에 공통 레이아웃을 관리할 AppLayout.js 파일 생성
//AppLayout.js
import React from 'react';
import PropTypes from 'prop-types';
import Link from 'next/link';
const AppLayout = ({ children }) => {
return (
<div>
<div>공통내용</div>
{children}
</div>
)
};
AppLayout.proptypes = { //props로 넘기는 애들을 proptypes로 검사
children: PropTypes.node.isRequired,
};
export default AppLayout;
//index.js
return(
<AppLayout>
<div>Hello, Next!</div> //이렇게 감싸진 애들이 children 자리에 들어간다.
</AppLayout>
)
결과물
4. Link
공통메뉴에 각 페이지로 전환할 수 있는 링크 만들기.
react router는 넥스트에서는 안 쓰이고, 넥스트의 자체적인 router가 있음.
//AppLayout.js
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>
)
};
- href를 a태그에 적는 것이 아니라 Link에 적는다는 것에 유의할 것!
결과물
각 텍스트를 누르면 해당 페이지로 이동한다.
5. eslint
코드 깔끔하게 정리하기 위해 eslint를 사용하여 코드 룰을 정할 예정
eslint 설치
npm i eslint -D
npm i eslint-plugin-import -D
npm i eslint-plugin-react-hooks -D
front 폴더 내에 '.eslintrc' 파일 생성
{
"parserOptions": {
"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" : {
}
}
Author And Source
이 문제에 관하여(NodeBird 0-2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wffle0505/NodeBird-0-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)