10,000 Hour Rule

๊พธ์ค€ํžˆ, ์ฒœ์ฒœํžˆ ๊ธฐ๋กํ•˜์ž

Next.JS

[Next.js] Next.js Page ํŽธ์ง‘ ๋ฐ ์ƒ์„ฑ(feat. Pages)

Dochi.Dev 2021. 9. 22. 02:12

๐Ÿ“€ Pages 

Next.js์˜ ์žฅ์  ์ค‘ ํ•˜๋‚˜์ธ ๊ธฐ๋Šฅ์ด๋‹ค.

Pages ๋ฐ‘์— ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์ฝ”๋”ฉํ•˜๋ฉด ๊ทธ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๊ฐ€ URL๊ฒฝ๋กœ๊ฐ€ ๋˜์„œ ๋ผ์šฐํŒ…์ด ํŽธ๋ฆฌํ•˜๋‹ค(ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ผ์šฐํŒ…)

Next.js๋Š” ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š” ์ฆ‰์‹œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํŽ˜์ด์ง€๋ฅผ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค.

React Developer Tool์ด๋ผ๋Š” ํฌ๋กฌ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์ด์šฉํ•˜๋ฉด ๋ณด๊ธฐ ์‰ฝ๋‹ค.

 

Next.js ๊ฐœ๋ฐœ ์„œ๋ฒ„์—๋Š” Fast Refresh๊ฐ€ ํ™œ์„ฑํ™” ๋˜์–ด์žˆ์–ด์„œ ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ์ฆ‰์‹œ ์ ์šฉํ•˜์—ฌ ์ƒˆ๋กœ๊ณ ์นจ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ƒˆ๋กœ๊ณ ์นจ์„ ์ผ์ผํžˆ ํ•  ํ•„์š”๊ฐ€ ์—†์–ด์„œ ํŽธ๋ฆฌํ•˜๊ณ  ๋น ๋ฅธ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

(์ฐธ๊ณ ) https://nextjs.org/docs/basic-features/fast-refresh


๐Ÿงญ Next.js์˜ ํŽ˜์ด์ง€

Next.js์—์„œ ํŽ˜์ด์ง€๋Š” ํŽ˜์ด์ง€ ๋””๋ ‰ํ† ๋ฆฌ(Pages)์˜ React Component ํŒŒ์ผ์ด๋‹ค.

ํŽ˜์ด์ง€๋Š” ํŒŒ์ผ ์ด๋ฆ„์— ๋”ฐ๋ผ ๊ฒฝ๋กœ์™€ ์—ฐ๊ฒฐ๋œ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค๋ฉด,

  • pages/index.js => '/' ์ฆ‰, root๊ฐ€ ๋˜๊ณ  ex. (https://localhost:1111/)
  • pages/user/10 => '/user/10' ์˜ ๊ฒฝ๋กœ๊ฐ€ ๋œ๋‹ค. ex. (https://localhost:1111/user/10)

๐Ÿ› ๏ธ ์ƒˆ ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

์˜ˆ์‹œ๋กœ ํŽ˜์ด์ง€ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.

pages ์•„๋ž˜์— about ํŽ˜์ด์ง€๋ฅผ ์˜ˆ์‹œ๋กœ ํ•ด๋ณด๊ฒ ๋‹ค.

pages ์•„๋ž˜์— about.js ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

 

export default function About(){
	return <h1>Made by Dochi</h1>
}

๊ณต์‹ ๋ฌธ์„œ์—๋Š” ์ด๋ ‡๊ฒŒ ์ž‘์„ฑ๋˜์–ด ์žˆ์ง€๋งŒ

 

const About = () => {
	return <h1>Made by Dochi</h1>
}

export default About;

์ด ๋ฐฉ์‹์ด ๋” ์ต์ˆ™ํ•˜๋‹ค.

(๋‚˜์ค‘์— PropTypes๊ฐ™์€๊ฑฐ ์ ์šฉํ•˜๊ฑฐ๋‚˜ ํ•  ๋•Œ ์ข€ ๋” ์ˆ˜์›”ํ•˜๋‹ค.)

 

์•”ํŠผ ์ด๋ฆ„์€ ์ƒ๊ด€ ์—†์ง€๋งŒ export default๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

์•„, ์ฐธ๊ณ ๋กœ

import React from 'react';

์ด๊ฑฐ๋ฅผ ํ•  ํ•„์š”๋Š” ์—†๋‹ค.

ํ•จ์ˆ˜ํ˜•์œผ๋กœ ์ž‘์„ฑํ•  ๋•Œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ React.Component ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋กœ ๋งŒ๋“ค ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

class About extends React.Component{
	...
}

 

ํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” import๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

import { Component } from 'react';

class About extends Component{
	...
}

 

Next.js์˜ ๊ณต๋™ ์ €์ž์ธ Tim Neutkens๊ฐ€ ๋งํ•˜๊ธธ,

Next.js automatically adds the React import when JSX is used indeed.
However keep in mind that we do still need to import React from 'react'
when the React variable is used.

 

"Next.js๋Š” JSX๊ฐ€ ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋  ๋•Œ ์ž๋™์œผ๋กœ React๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ React Variable์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š”

์—ฌ์ „ํžˆ import React from 'react' ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•ด์•ผ ํ•œ๋‹ค." ๋ผ๊ณ  ํ•˜์˜€์œผ๋‹ˆ

์•„๋ฌด๋ฆฌ ํ•„์š” ์—†๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋”๋ผ๋„, ์ฃผ์˜ํ•  ํ•„์š”๋Š” ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

(์‚ฌ์‹ค ๋‚œ ๊ทธ๋ƒฅ ๋ชจ๋“  ๊ณณ์— ์“ด๋‹ค).

 

์ด๋ ‡๊ฒŒ ๋งŒ๋“ค๊ณ 

http://localhost:1111/about ์„ ์ฃผ์†Œ์ฐฝ์— ์ž…๋ ฅํ•˜๊ณ  ๋“ค์–ด๊ฐ€ ๋ณด๋ฉด 

๊ตฌ๋ถ„์„ ์œ„ํ•ด์„œ ์ž„์˜๋กœ ๋ฐฐ๊ฒฝ์„ ์น ํ–ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋œฐ ๊ฒƒ์ด๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์„ค๋ช…์ด๋‹ค.

๋‹ค์Œ์—๋Š” Link์— ๋Œ€ํ•œ ๊ธ€์„ ํฌ์ŠคํŒ…ํ•˜๊ฒ ๋‹ค.