ํด๋ผ์ด์ธํธ ์ธก ๋ผ์ฐํ
์ ์ํ ํ ๋ Link
๋๋ Router
๊ฐ ์๋์ ์ค์งํฉ๋๋ค. HMR์ด ํ์ด์ง ๊ฐ ์ ํ์ ๋ฐฉํดํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฑ์ด ์ ํด ์ํ์ด๊ฑฐ๋ ์ ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์์ ๋ ๊ฐ์ฅ ์์ฃผ ๋ฐ์ํฉ๋๋ค (์ ํด ์ํ๊ฐ ์๋ ๊ณณ์ ํด๋ฆญํ๋ ๋์ ๋ฐ์ํ๋ ๊ฒ์ ๊ฒฝํํ์ง๋ง).
๋์์ ์ฌํํ๋ ๋จ๊ณ, ์ฝ๋ ์กฐ๊ฐ ๋๋ ์ ์ฅ์๋ฅผ ์ ๊ณตํ์ญ์์ค.
npm install
npm run dev
์๋ฒ ์คํ๋ชจ๋ ๊ฐ๋ณ ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธ ํ ์์์ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค.
ํ์ด์ง๊ฐ ํน์ ๊ฒฝ๋ก๋ก ์ด๋ํ์ง ์์ต๋๋ค. ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์นจํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
"์ ๋ณด"๋ฐ "์ฐ๋ฝ์ฒ"๋งํฌ๊ฐ ๋ชจ๋ ์๋ํ์ง ์์ต๋๋ค (๊ฐ ๊ฒฝ๋ก์ ์ฒซ ๋ฒ์งธ ์๋์์ HMR ๋ก๊ทธ์ ์ ์ํ์ญ์์ค). ํ์ด์ง ์๋ก ๊ณ ์นจ ํ ์์๋๋ก ์๋ํฉ๋๋ค. ๋ค์ ์ฝ 2 ๋ถ ๋์ ์ฑ์ ์ ํด ์ํ๋ก๋๋ฉด ๋ฌธ์ ๋ก ๋ค์ ์์๋ฉ๋๋ค.
์ฝ์์ด ์ด๋ฆฌ๋ฉด ๋ผ์ฐํฐ ์ด๋ฒคํธ routeChangeStart
๊ฐ ๋ฐ์ํ์ง๋ง routeChangeComplete
๋ ๋ฐ์ํ์ง ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ์๋ค
ํ๋ก๋์ ํ๊ฒฝ์์๋์ด ๋ฌธ์ ๋ฅผ๋ณด๊ณ ์์ผ๋ฏ๋ก HMR์ด ๋ฌธ์ ์ ์ ์ผํ ์์ธ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
@ernerock ์์ ์๋ฅผ ์ฌ๊ธฐ์ ๋ฐฐํฌํ์ง๋ง ๋ฌธ์ ๊ฐ ์ผ๋จ ๋ผ์ด๋ธ๋ก ๋ฐ์ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ๋ก๋์ ํ๊ฒฝ์์ ์ฌํ ํ ์ ์์์ต๋๊น?
@malimccalla ๋ด ๋ฌธ์ ๊ฐ ๊ทํ์ ๋ค๋ฅธ ๊ฒ ๊ฐ์ง๋ง ํ์ ๋์์ ๋์ผํฉ๋๋ค. ๋ด๊ฐ ํ์ํ๋ ํ์ด์ง์ CSS ๊ฐ์ ธ ์ค๊ธฐ๊ฐ์๋ ๊ฒฝ์ฐ
import 'react-alice-carousel/lib/alice-carousel.css';
ํ์ ๋์์ ๊ทํ๊ฐ๋ณด๊ณ ํ ๊ฒ๊ณผ ๋์ผํฉ๋๋ค. '@ zeit / next-css'์ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
# 5291์์ ์ด๋ฏธ๋ณด๊ณ ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ _app.js์์ CSS ํ์ผ์ ๊ฐ์ ธ ์์ ๋น์๋๋ฉด ์ผ์์ ์ผ๋ก 'ํด๊ฒฐ'ํ ์ ์์ต๋๋ค.
@ernerock ๋งค์ฐ ์ด์ํฉ๋๋ค, ๊ทธ๋ค์ ์ด๋ค ๋กํฐ๋ฆฌ ๋ฐฉ์์ผ๋ก ๊ด๋ จ ๋ ์ ์์ต๋๋ค!
์ฌ๊ธฐ์์ ๊ฐ์ ๋ฌธ์ ๋ ํ์ด์ง๊ฐ / home ๋ฐ / home / subpage๋ก ์ค์ ๋์ด ์์ผ๋ฉฐ Router.push๋ฅผ ์ฌ์ฉํ์ฌ / home์์ / home / subpage๋ก ์ด๋ํ๊ฑฐ๋ withRouter HOC ๋๋ Link๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ํ์ง ์์ต๋๋ค.
์ด์ ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ป์์ต๋๋ค. / home์ ์ด๋ฆ์ / home / welcome์ผ๋ก ๋ฐ๊พธ๋ ค๊ณ ํ์ง๋ง ์์์ ์ค๋ช ํ ์ฌ๋ก๊ฐ ์ฌ์ ํ ์๋ํ์ง ์์ต๋๋ค.
@ maciej-ka ์ ์, push
์์๋ ๋ฐ์ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. Link
๋ฟ๋ง์ด ์๋๋๋ค. ์ฝ๊ฐ ์คํด์ ์์ง๊ฐ ์์ผ๋ฏ๋ก ์ ๋ชฉ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค.
@timneutkens @ ๋น์ ์๊ฒ ์ฃ์กํฉ๋๋ค ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ง์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ๋ํด ์ฝ๊ฐ์ ๋์ ๊ฐ์ง ์ ์์ต๋๊น? ๋๋ ์ด์์ด ์ผ์ฃผ์ผ ๋์ ๊ทธ๊ฒ์ ๋ฐ๋ฅ์ ๋๋ฌํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ๊ทธ๊ฒ์ ์ ๋ง๋ก ๊ฐ๋ฐ์ ๋ฐฉํดํ๊ณ ์์ต๋๋ค.
์จ ๋๋งจ๋ ์ ๋ ฅ ๋ฐ ํ๊ธฐ์ ๊ด๋ จ์ด์์ ๊ฐ๋ฅ์ฑ์ด ๊ฐ์ฅ ๋์ต๋๋ค.
๋๋ ์ฝ๊ฐ ํ๊ณ ๋ค์๊ณ ํ์ด์ง๊ฐ ํ๊ธฐ๋์ด ๋ฐ์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ๋ก๊ทธ ๊ฐ ๋ํ๋๋ฉด ํ๊ธฐ ๋ ํ์ด์ง๋ฅผ ๋ ์ด์ ํ์ ํ ์ ์์ต๋๋ค.
> Disposing inactive page(s): /
์ค๋ ๋ฐค์ ์ข ๋ ์ฌ์ธต ๋ถ์์ ํ ์๊ฐ์ด ์๊ณ PR์ ์ด์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. @timneutkens ์ด๊ธฐ ํต์ฐฐ๋ ฅ์
๋๋ ์ด๊ฒ์ ๊ณ ์น๋ ค๊ณ ๋
ธ๋ ฅํ์ง๋ง ๊ด๋ จ ํ์ผ์์ ๋ง์ ์ผ์ด ์ผ์ด๋๊ณ ๋ถํํ๋ ๊ทธ ๋ฐ๋ฐ๋ฅ์ ๋๋ฌํ์ง ๋ชปํ์ต๋๋ค. ์ด ๋ฌธ์ ๊ฐ์๋ ๋ค๋ฅธ ์ฌ๋์ ์ํด ํ์ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ํ์ด์ง๊ฐ ์ญ์ ๋๊ธฐ ์ ์ ๊ธฐ๊ฐ์ ์ฐ์ฅํ๊ธฐ ์ํด next.config.js
์์์ด ๊ตฌ์ฑ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
onDemandEntries: {
// period (in ms) where the server will keep pages in the buffer
maxInactiveAge: 25 * 1000,
// number of pages that should be kept simultaneously without being disposed
pagesBufferLength: 5,
},
์ด ๋ฌธ์ ๋ ์์ต๋๋ค.
๋๊ตฐ๊ฐ ์ด๊ฒ์ ์กฐ์ฌํ๊ณ ์์ต๋๊น? ๋๋ ๋ํ์ด ๋ฌธ์ ๊ฐ ์์ง๋ง ๋ชจ๋ ๊ฒฝ๋ก์ ๋ฐ๋์ ํ์ํ ๊ฒ์ ์๋๋๋ค. ์ด๋ค ๊ฒฝ๋ก / ๊ฒฝ๋ก๊ฐ ์๋ตํ์ง ์๋์ง๋ ๋ฌด์์์ด์ง๋ง ๊ฒฐ๊ตญ ๋ชจ๋ ์ํ๋ฉ๋๋ค.
๋ค์ ์๋ฒ / ๋๋ค ๋ฌธ์ ์ ์ด์ ์ ๋ง์ถ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ ์กฐ์ฌ ํ ์ ์์ง๋ง ์ฃผ๋ฌธํ ์ ๋ ฅ๊ณผ ๊ด๋ จ์ด์์ ๊ฐ๋ฅ์ฑ์ด ๊ฐ์ฅ ๋์ต๋๋ค.
๋ค, ๊ทธ๋ ์ต๋๋ค. ํ๊ธฐ ํ ๋ฐ์ํฉ๋๋ค.
์ ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ์ด๊ฒ์ด ํ๋ก๋์ ๋ฌธ์ ๊ฐ ์๋์ ํ์ธํด ์ค ์ ์์ต๋๊น?
๋๊ตฐ๊ฐ๊ฐ ์ด๊ฒ์ด ํ๋ก๋์ ๋ฌธ์ ๊ฐ ์๋์ ํ์ธํด ์ค ์ ์์ต๋๊น?
ํ๋ก๋์ ๋ชจ๋์์๋ ๊ด์ฐฎ์ต๋๋ค. ENV๋ฅผ ํ๋ก๋์ ์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ต๋๋ค.
์ ๋ ๊ฐ๋ฐ๊ณผ ํ๋ก๋์
๋ชจ๋์ ์ด๊ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ํ์ด์ง๊ฐ ๋นํ์ฑ ์ํ์ธ์ง ์ฌ๋ถ ๋ฑ์ ์ค์ํ์ง ์์ต๋๋ค. ์๋ก๋ก๋ ํ ์ ์์ผ๋ฉฐ ์๋ํ์ง ์์ต๋๋ค. dev์์ ์๋ฒ ์ฝ์
> Building page: /contact
WAIT Compling...
success client complied in 462ms
๊ทธ๋ฌ๋ ํ์ด์ง๋ ํด๋ผ์ด์ธํธ์์ ๋ ๋๋ง๋์ง ์์ต๋๋ค. ๋์์ ํด๋ผ์ด์ธํธ ์ฝ์์์ :
[HMR] bundle rebuilding
๋ฉ์์ง๊ฐ ํ์๋๋ฉด ์๋ฒ ์ฝ์์ด ๋ค์์ ์ ๊ณตํฉ๋๋ค.
Disposing of inactive page(s): /, /contact
๋ธ๋ผ์ฐ์ ์ mysite.com/contact๋ฅผ ์
๋ ฅํ๋ฉด ์ ์์ ์ผ๋ก๋ก๋๋ฉ๋๋ค.
maxInactiveAge
๋ฐ pagesBufferLength
์ค next.config.js
์์ ์์
์ ์๋ํ์ง๋ง ์๋ฌด ์์ฉ์ด ์์ต๋๋ค.
[๋ง์ ์ฌ๋๋ค์ด ๋งํ ๊ฒ์ฒ๋ผ ๋จ์ง dev์ ์๊ธฐ๋ฅผ ๋ฐ๋ฌ๋ค]
ํธ์ง : ๊ตฌ์ฑ ์์์ import 'node-mod/dist/theme.css
๊ฐ ์์ต๋๋ค. ๊ฐ์ ธ ์ค๊ธฐ๋ฅผ _app.js
๋ก ์ฎ๊ฒผ๊ณ Link
์ด ์๋ํฉ๋๋ค.
์ฌ๊ธฐ์๋ ๋์ผํ ๋ฌธ์ , ์ฒ๋ฆฌ ํ dev ๋ชจ๋์์ ๊ฒฝ๋ก๊ฐ ์๋ฃ๋์ง ์์ต๋๋ค. ์ ๋ง ์ง์ฆ๋ฉ๋๋ค.
@roytsang "๊ฐ์ ๋ฌธ์ "๋ฅผ ๋งํ๋ ๋์ ๋ฌธ์ ์ ๐๋ฅผ ์ฌ์ฉํ์ธ์. ๐์์ ์ ๋ ฌ ํ ๋ +1
๋งค๋ด์ผ์ด ๊ณ ๋ ค๋์ง ์์ต๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. _app์์ Head from next / head๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ชฉ๊ณผ ํ๋น์ฝ์ ์ ์ฉํ๊ธฐ ์์ํ ํ ์ค๋๋ถํฐ ์์๋์์ต๋๋ค.
@Atmospheres @malimccalla ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด
๋๋ ์์ง ๊ทธ๊ฒ์ ๋ํด ๋ค๋ฃจ์ง ์์์ง๋ง ๊ณง ๊ฐ ๊ฒ์ ๋๋ค. ๋ฌธ์ ๊ฐ ์ธ์ ๋ฐ์ํ๋์ง์ ๋ํ ๋ ๋ง์ ์ ๋ณด๊ฐ ํด๊ฒฐ์ฑ ์ ์ฐพ๋ ์ฌ๋์๊ฒ ์ ์ฉ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
์ ๋ฐ์ดํธ : ์ค๋ ์์นจ์ ๋ช ๊ฐ์ง ํ ์คํธ๋ฅผ ์ํํ์ผ๋ฉฐ ์ฌ๊ธฐ์ ์ ๊ฐ ๋ฐ๊ฒฌ ํ ๊ฒ์ด ์์ต๋๋ค.
์ด์ ๋ฌธ์ ๊ฐ ์์ ๋๊ณ , ๋ด๊ฐ ๊ตฌํ ํ ์ ์ผํ ์๋ก์ด ๊ฒ์ ๋ค์์ ํค๋์ ๋๋ค. ์คํ์ผ์๋ก๋ํ๋ ๋ฐ ์ฌ์ฉ๋๋ _document์ ํค๋๋ฅผ Head๋ก ๋ณ๊ฒฝํ์์ ๊นจ๋ฌ์์ต๋๋ค. ๋ํ Head๋ฅผ _app.js์ ์ถ๊ฐํ์ฌ ์ ๋ชฉ๊ณผ ํ๋น์ฝ์ ์ค์ ํ์ต๋๋ค. _app.js์์ Head๋ฅผ ์ ๊ฑฐํด๋์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์์ต๋๋ค. _app ๋ฐ _document์์ ํค๋๋ฅผ ์ ๊ฑฐํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก _document์ Head๋ฅผ ๋ค์ ๋จธ๋ฆฌ๋ก ๋๋๋ฆฌ๊ณ _app์ Head๋ฅผ๋๊ณ ์ ๋ชฉ๊ณผ favicon์ ์ค์ ํ๋๋ฐ ์ด์ ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ก์ต๋๋ค.
์ด๋ค ์ด์ ๋ก ๋ ๋ฌธ์ ๊ฐ ๋ค์ ๋ฐ์ํ๋ฉด ์ฌ๊ธฐ์์ ๋ค์ ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค. ์ด ์ ๋ณด๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ ๋ฐ์ดํธ 2 : ๋ฌธ์ ๊ฐ ์ง์๋์ง๋ง ๋ฐ์ ๋น๋๋ ์ ์ต๋๋ค. ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋ฉด ํด๋น ํ์ด์ง์ ๋ํ js๋ฅผ๋ก๋ํ๋ ์คํฌ๋ฆฝํธ ํ๊ทธ๊ฐ ์ค๋ณต๋๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฒ์์ผ๋ก ํ์ด์ง "x"๋ฅผ๋ก๋ํ๋ฉด to the body. Now this script tag should only be added to the body once, but on the times it fails to load I see the script tag added a 2nd, and then if I click the link again it is added a 3rd time, and so on. These additional script tags are only added a few times while staying on the same page and clicking the link, however if I navigate to another page and back to where the link was, I can click it and add several more script tags.
Update 3: Problem happens after a while on a single link. Tested loading my home page and not clicking anything, after a couple minutes the Elements tab in Chrome dev tools flashes, I'm assuming a HMR, and ALL Links were broken. I hope all of this information wasn't just a waste of time for you guys. The issue doesn't seem to be happening in production, so I guess I'll just ignore it for the moment.
๋๋ ์์ง ๊ทธ๊ฒ์ ๋ํด ๋ค๋ฃจ์ง ์์์ง๋ง ๊ณง ๊ฐ ๊ฒ์ ๋๋ค. ๋ฌธ์ ๊ฐ ์ธ์ ๋ฐ์ํ๋์ง์ ๋ํ ๋ ๋ง์ ์ ๋ณด๊ฐ ํด๊ฒฐ์ฑ ์ ์ฐพ๋ ์ฌ๋์๊ฒ ์ ์ฉ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
์ ๋ฐ์ดํธ : ์ค๋ ์์นจ์ ๋ช ๊ฐ์ง ํ ์คํธ๋ฅผ ์ํํ์ผ๋ฉฐ ์ฌ๊ธฐ์ ์ ๊ฐ ๋ฐ๊ฒฌ ํ ๊ฒ์ด ์์ต๋๋ค.
์ด์ ๋ฌธ์ ๊ฐ ์์ ๋๊ณ , ๋ด๊ฐ ๊ตฌํ ํ ์ ์ผํ ์๋ก์ด ๊ฒ์ ๋ค์์ ํค๋์ ๋๋ค. ์คํ์ผ์๋ก๋ํ๋ ๋ฐ ์ฌ์ฉ๋๋ _document์ ํค๋๋ฅผ Head๋ก ๋ณ๊ฒฝํ์์ ๊นจ๋ฌ์์ต๋๋ค. ๋ํ Head๋ฅผ _app.js์ ์ถ๊ฐํ์ฌ ์ ๋ชฉ๊ณผ ํ๋น์ฝ์ ์ค์ ํ์ต๋๋ค. _app.js์์ Head๋ฅผ ์ ๊ฑฐํด๋์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์์ต๋๋ค. _app ๋ฐ _document์์ ํค๋๋ฅผ ์ ๊ฑฐํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก _document์ Head๋ฅผ ๋ค์ ๋จธ๋ฆฌ๋ก ๋๋๋ฆฌ๊ณ _app์ Head๋ฅผ๋๊ณ ์ ๋ชฉ๊ณผ favicon์ ์ค์ ํ๋๋ฐ ์ด์ ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ก์ต๋๋ค.
์ด๋ค ์ด์ ๋ก ๋ ๋ฌธ์ ๊ฐ ๋ค์ ๋ฐ์ํ๋ฉด ์ฌ๊ธฐ์์ ๋ค์ ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค. ์ด ์ ๋ณด๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ ๋ฐ์ดํธ 2 : ๋ฌธ์ ๊ฐ ์ง์๋์ง๋ง ๋ฐ์ ๋น๋๋ ์ ์ต๋๋ค. ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋ฉด ํด๋น ํ์ด์ง์ ๋ํ js๋ฅผ๋ก๋ํ๋ ์คํฌ๋ฆฝํธ ํ๊ทธ๊ฐ ์ค๋ณต๋๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฒ์์ผ๋ก ํ์ด์ง "x"๋ฅผ๋ก๋ํ๋ฉด to the body. Now this script tag should only be added to the body once, but on the times it fails to load I see the script tag added a 2nd, and then if I click the link again it is added a 3rd time, and so on. These additional script tags are only added a few times while staying on the same page and clicking the link, however if I navigate to another page and back to where the link was, I can click it and add several more script tags.
Update 3: Problem happens after a while on a single link. Tested loading my home page and not clicking anything, after a couple minutes the Elements tab in Chrome dev tools flashes, I'm assuming a HMR, and ALL Links were broken. I hope all of this information wasn't just a waste of time for you guys. The issue doesn't seem to be happening in production, so I guess I'll just ignore it for the moment.
I think I also noticed the same thing a long ago, the day I shifted from NextJs 5 to NextJs 6 but ignored it since it's just dev problem. My production is working fine :)
์ง๊ธ์ด ๋ฌธ์ ๋ฅผ ์กฐ์ฌํ๊ณ ์์ต๋๋ค.
# 5994์์ ํด๊ฒฐ๋จ
๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง, ์ง๊ธ ์ ๊ทธ๋ ์ด๋ ํ ์์๋ ๊ฒฝ์ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์๋ ค ์ฃผ์ค ์ ์์ต๋๊น? ์๋ฅผ ๋ค์ด CSS ๋ก๋ฉ๊ณผ ๊ด๋ จ์ด ์์ต๋๊น? ๊ตฌ์ฑ์์ ๋ณ๊ฒฝํ ์ ์์ต๋๊น?
@ jon64digital ์ ๋ # 5994์์ด ๋ฌธ์ ์ ๋ํ ์์ ํ ๊ธ์ ์ผ์ต๋๋ค. ํ๊ธฐ ์๊ฐ ์ ํ์
@timneutkens ์ ๋ 8.1.1-canary.24
ํ๊ณ ์์ผ๋ฉฐ ๋ฒ๊ทธ๊ฐ ์ฌ์ ํ ์กด์ฌํฉ๋๋ค. ์ด๋ค ์๊ฐ?
ํธ์ง : ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์์ ๋ด์ญ์์ค. ์ ๊ทธ๋ฐ์ง ๋ชจ๋ฅด๊ฒ ์ด์ ... :
index.tsx ๋ฐ index.less ํ์ผ์ด ์์ต๋๋ค. ๋ด netxt.config.js ํ์ผ์์ cssModules๋ฅผ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค (withLess ์ฌ์ฉ). /subpage
๋ก๋ํ๊ณ /
(๋ค์๊ณผ ๊ฐ์ ์คํ์ผ ๊ฐ์ ธ ์ค๊ธฐ : import css from './index.less';
)๋ฅผ ์ฐธ์กฐํ๋ ๋งํฌ๊ฐ ์์ผ๋ฉด ์คํฌ๋ฆฝํธ๊ฐ ๋์ ์ผ๋ก๋ก๋๋ฉ๋๋ค ( http://localhost:3000/_next/static/development/pages/index.js
) ๊ทธ๋ฌ๋ ๋ ๋๋ง๋์ง ์์ต๋๋ค. ์ฌ์ค URL์ ์ ํ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. ๋ฉ์ถ ๊ฒ ๊ฐ์ต๋๋ค ... ์ ์ ํ์ผ ๊ฐ์ ธ ์ค๊ธฐ๋ฅผ ์ ๊ฑฐํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
์ํธ๋?
Edit2 : https://github.com/zeit/next-plugins/issues/282 ๋ก ์คํ์ค์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ ์ฌ์ ํ 8.1.0
์์๋ ์ด๋ฐ ์ผ์ด ์ผ์ด๋๊ณ ์์ต๋๋ค. ๋๋ ์ฌํํ๊ณ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ด โโ๊ฒ์
๋๋ค
๋์๊ฒ๋ / about ๊ฒฝ๋ก๋ก ์ด๋ํ์ง ์์ผ๋ฉด ๋งค๋ฒ 404๊ฐ ์ ๊ณต๋ฉ๋๋ค! ๋ผ์ฐํ ์ ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ํ์คํ์ง ์์ต๋๋ค!? : /
package.json ์ข ์์ฑ :
"dependencies": {
"cross-env": "^5.2.0",
"express": "^4.17.0",
"next": "^8.1.0",
"react": "^16.8.6",
"react-dom": "^16.8.6"
}
@jsbimra ํญ์ ์ ์ฒด ๋ณต์ ๋ฅผ ์ ๊ณตํ์ญ์์ค. "๋์๊ฒ ์ผ์ด๋ ์ผ"์ ์กฐ์ฌํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
@jsbimra _ ํญ์ _ ์ ์ฒด ๋ณต์ ๋ฅผ ์ ๊ณตํ์ญ์์ค. "๋์๊ฒ ์ผ์ด๋ ์ผ"์ ์กฐ์ฌํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋ฌธ์ ๋, ๊ทธ๊ฒ์ @timneutkens ๊ท์ฐฎ๊ฒํด์ ๋ฏธ์ next.js์ ํ์ด์ง ํด๋ ์๋ ํ์ด์ง๋ฅผ ๋ง๋๋ ๋ฐ์๋ ๋จ๊ณ๋ก ๊ด๋ จ์ด ๋ฐ๊ฒฌ
์ด๊ฒ์ ๋ํ ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น? ํ๋ก๋์ ์์๋ ์ด๋ฐ ์ผ์ด ๋ฐ์ํฉ๋๊น? ๊ฐ๋ฐ์์์๋ ๋์๊ฒ ๋ฐ์ํ๊ณ ์๊ธฐ ๋๋ฌธ์ 2018 ๋ ๊ณผ 2019 ๋ 5 ์ 22 ์ผ์ ๋ฒ๊ทธ๋ ์ฌ์ ํ์ด ๋ฒ๊ทธ๊ฐ ์์ ๋์ง ์์์ต๋๋ค. ํ๋ก๋์ ์์ ๋ฐ์ํ์ง ์๋ ๊ฒฝ์ฐ์๋ ๊ทธ๋ค์ง ์ผ๋ คํ์ง ์์ง๋ง ๋ฐ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ ๋ง ํฐ ๋ฌธ์ ...
2018 ๋ ๊ณผ 2019 ๋ 5 ์ 22 ์ผ์ ๋ฒ๊ทธ ์ฌ์ ํ์ด ๋ฒ๊ทธ๋ ์์ ๋์ง ์์์ต๋๋ค.
@malimccalla ๊ฐ ์ ๊ณต ํ ๋ณต์ ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ ๋์์ต๋๋ค.
์ด๊ฒ์ด ํ๋ก๋์ ์์ ๋ฐ์ํ์ง ์๋ ๊ฒฝ์ฐ ๋๋ ๊ทธ๋ค์ง ๊ฑฑ์ ํ์ง ์์ต๋๋ค
๊ทธ๋ ์ง ์์ต๋๋ค.
์ด ์๊ฒฌ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ ๊ฒ์ ๋๋ค. ์ด์ ์ ์ฌ๋ฌ ๋ฒ ๋งํ๋ฏ์ด :
ํญ์ ์ ์ฒด ์ฌ์์ฐ์ ์ ๊ณตํ์ญ์์ค. "๋์๊ฒ ์ผ์ด๋ ์ผ"์ ์กฐ์ฌํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ต์ ๋ฒ์ (8.1.0)๊ณผ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ต์ ๋ฒ์ (8.1.0)๊ณผ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋๋ ์ด์ ๋๊ฐ์ ๋ฉ์์ง๋ก 3 ๋ฒ ์ ๋ ๋ต์ฅ์ํ์ต๋๋ค. ๋ณต์ ๋ฅผ ์ ๊ณตํ์ญ์์ค .
์ด ์๊ฒฌ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ ๊ฒ์ ๋๋ค. ์ด์ ์ ์ฌ๋ฌ ๋ฒ ๋งํ๋ฏ์ด :
ํญ์ ์ ์ฒด ์ฌ์์ฐ์ ์ ๊ณตํ์ญ์์ค. "๋์๊ฒ ์ผ์ด๋ ์ผ"์ ์กฐ์ฌํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
~ / index.tsx
์ ์ก์ธ์ค ํ ์ ์๋ค๋ ๋ฌธ์ ๋ก ๊ณ ๋ฏผํ์ต๋๋ค.
ํ์ง๋ง ๋ง์นจ๋ด ์์ธ์ ์ฐพ์์ต๋๋ค!
react-activity
๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง๋ง ๋์์ CSS๋ฅผ ๊ฐ์ ธ์์ผํ์ต๋๋ค.
๋ค๋ฅธ ๊ณณ์์ ๊ฐ์ CSS๋ฅผ ๋ ๋ฒ ์ฝ์ผ๋ฉด ๋ง์ด๊ทธ๋ ์ด์
ํ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
_app.tsx
์ ์ฝ์ ๊ฒฐ๊ณผ ์ฑ๊ณต์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ ์์์์ต๋๋ค.
@timneutkens ์ข์์, ๋ฌผ๋ก ์ฒ๋ฆฌ ์๊ฐ์ ๋๋ฆด ์ ์์ง๋ง ์๋ฒ๊ฐ ์ฒ์์ผ๋ก ์์๋๋ ์ํฉ์ ์ด๋ป์ต๋๊น? ํด๋น ํ์ด์ง๋ ์์ง ๋น๋๋์ง ์์๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ํ์ ํ ์ ์์ต๋๋ค. ๐ค
๋๋ ์ง๊ธ ๋๊ฐ์ ๋ฉ์์ง๋ก 4 ๋ฒ ์ ๋ ๋ต์ฅ์ํ๋ค. ๋ณต์ ๋ฅผ ์ ๊ณตํ์ญ์์ค .
์ด ์๊ฒฌ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ ๊ฒ์ ๋๋ค. ์ด์ ์ ์ฌ๋ฌ ๋ฒ ๋งํ๋ฏ์ด :
ํญ์ ์ ์ฒด ์ฌ์์ฐ์ ์ ๊ณตํ์ญ์์ค. "๋์๊ฒ ์ผ์ด๋ ์ผ"์ ์กฐ์ฌํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
ํน์ ์ง๋ฌธ์ ๋ตํ๊ธฐ ์ํด ํ์ด์ง๋ ์ฃผ๋ฌธํ์ผ๋ก ์์ฑ๋๋ฉฐ์ด ์์คํ ์ ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค. ๊ตฌ์ฑ์ webpack์ด ํ์ผ์ ์์ฑ ๋ ๊ฒ์ผ๋ก ํธ๋ฆฌ๊ฑฐํ์ง ์๋๋กํ๋ ๊ฒ์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์์ฐ์ด ์๊ธฐ ๋๋ฌธ์ ๋งํ๊ธฐ ์ด๋ ต๊ฑฐ๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋ํ ์์ ์ธ๊ธ ํ ํน์ ๋ฌธ์ ๋ ์ด๋ฏธ ์์ ๋์์ผ๋ฉฐ ์๊ฐ ์ ํ์ ๋๋ ค๋ ๋ฐ์ํ ํน์ ๋ฌธ์ ์ ๋์์ด๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ด๊ฐ ๊ณ์ ๋ณต์ ๋ฅผ ์์ฒญํ๋ ์ด์ ์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์กฐ์ฌํ๊ณ ๊ทธ๊ฒ์ ์๊ฐ์ ํ ์ ํ๊ฒ๋์ด ๋งค์ฐ ๊ธฐ์ฉ๋๋ค.
์ด์ ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์๋๋ฐ ์ ๋๋ก ์๋ํ์ต๋๋ค. ๋ด ํ๋ก์ ํธ์ ๋ํด ์๋ํ์ง ์๋ ํน์ ์ฌํญ์ด ์์ด์ผํฉ๋๋ค. ๋๋ ์ค๋ ๋์ค์ ์ ์ฐจ์ ์ผ๋ก ๊ทธ๊ฒ์ ๋ถํดํ์ฌ ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ง๋ ์ง์ ์ ๋ณด๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค.
๋น์ ์ด ๊ทธ๊ฒ์ ์์ ์ ์ผ๋ก ์ฌํ ํ ์ ์๋์ง ํ๋ฒ ์ดํด๋ณด๊ณ ์ถ์ต๋๋ค.
์ข์ ์์์ ์ ๊ฐ ์ค๋ฅ๋ฅผ ์ ํํ ์ฐพ์ ๋ผ ์ ์์๋ค๋ ๊ฒ์ ๋๋ค. ๋์ ์์์ ๋ด ํ๋ก์ ํธ์ ๋ฌธ์ ๊ฐ์ด ์ค๋ ๋์์ ๋ค๋ฅธ ์ฌ๋๋ค์ด๋ณด๊ณ ํ ๊ฒ๊ณผ ๋ค๋ฅด์ง ์๋ค๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ ๋ฌธ์ ๊ฐ CSS ๋ฐ ์ฒ๋ฆฌ ์ ํ๊ณผ ๊ด๋ จ๋์ด ์๊ณ ํด๊ฒฐ ๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค๋ฉด ๋ญ๊ฐ ์๋ชปํ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๊ฑฐ ๋ฃ์ ๊ณณ์ธ๊ฐ์?
module.exports = withCSS({
onDemandEntries: {
maxInactiveAge: 1000 * 60 * 60
}
})
๋ฟก ๋นต๋จ
์๋ ค์ง ๋ฒ๊ทธ : https://github.com/zeit/next-plugins/issues/282
๋น CSS ํ์ผ์ ๊ฐ์ ธ ์์ "ํด๊ฒฐ"ํ ์ ์์ต๋๋ค.
์ด๋ฅผ ๊ฐ๋ฐ, ํ๋ก๋์
๋ฐ ์ ์ ๋ด๋ณด๋ด๊ธฐ ๋ชจ๋์์ ์์ ์ ์ผ๋ก ์ฌํ ํ ์ ์์ผ๋ฉฐ onDemandEntries
๋๋ ๋น CSS ํ์ผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋์์ด๋์ง ์์์ต๋๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ํ์ด์ง์ ๋ณธ๋ฌธ ๊ตฌ์ฑ ์์์์ import 'highlight.js/styles/color-brewer.css';
์ ๊ฑฐํ๋ ๊ฒ์
๋๋ค.
๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ํ์ด์ง๋ฅผ ๊ฐ๋ฆฌํค๋ <Link>
์ธ์คํด์ค๋๋ก๋์ ์คํจํ์ง๋ง http://localhost:3000/_next/static/development/pages/post.js
๋ <Link>
ํด๋ฆญ์ ํ์ด์ง์ ๊ณ์ ๋๋กญ๋ฉ๋๋ค. css ๊ฐ์ ธ ์ค๊ธฐ, <Link>
s to blog posts work perf. ์ฃผ์์ ์ ๊ฑฐํ๊ณ ๋ชจ๋ <Link>
๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์๋ก๋ํ์ง ๋ชปํฉ๋๋ค.
ํด๋น ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ํ์ด์ง ๊ฒฝ๋ก ์ค ํ๋๋ฅผ ์ง์ ์น๋ ๊ฒ์ ์ ์์ ์ผ๋ก ์๋ํ๋ฉฐ ๋ฒ๊ทธ๋ ํด๋ผ์ด์ธํธ ์ธก์๋ง ๊ด๋ จ๋ฉ๋๋ค. ๊ธฐ๋ฐ ๋ผ์ฐํ . ์ด๋ ๋ฒ์ 6์์ ๋ฒ์ 8๋ก ์ ๊ทธ๋ ์ด๋ ํ ํ์ ๋ฐ์ํ์ต๋๋ค.
์ฒ์์๋ @zeit/next-css
ํ์ง๋ง @zeit/next-sass
์์ ์ค์ํํ๊ณ .scss ํ์ผ์ ๊ฐ์ ธ์จ ํ ๋์ผํ ๋ฐฉ์์ผ๋ก์ด ๋ฌธ์ ๋ฅผ ๋ณต์ ํ ์ ์์ต๋๋ค. ์ง๊ธ์ styled-components
drop @zeit/next-css
์ฌ์ฉํ์ฌ ์ด๋ฌํ ์คํ์ผ์๋ก๋ํ๊ฒ ์ต๋๋ค. https://www.npmjs.com/package/@zeit/next -css ๋ฐ https://www.npmjs.com/package/@zeit/next -sass๋ฅผ ๊ฒํ ํ ํ ์ด๋ฌํ ์ฌ์ฉ ์์ ๊ฐ ๊นจ์ง ๊ฒ ๊ฐ์ต๋๋ค. ๐ค
https://github.com/zeit/next-plugins/issues/282์ ๋ณต์ ์ ์ฅ์๋ฅผ ์ถ๊ฐ ํ ์ ์์ต๋๊น?
์ค๋ช ํ๋ ๋ด์ฉ์ด ๊ทธ ๋ฌธ์ ์ ๋๊ฐ์ด ๋ค๋ฆฝ๋๋ค.
์ด๋ฅผ ๊ฐ๋ฐ, ํ๋ก๋์ ๋ฐ ์ ์ ๋ด๋ณด๋ด๊ธฐ ๋ชจ๋์์ ์์ ์ ์ผ๋ก ์ฌํ ํ ์ ์์ผ๋ฉฐ
onDemandEntries
๋๋ ๋น CSS ํ์ผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋์์ด๋์ง ์์์ต๋๋ค.๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ํ์ด์ง์ ๋ณธ๋ฌธ ๊ตฌ์ฑ ์์์์
import 'highlight.js/styles/color-brewer.css';
์ ๊ฑฐํ๋ ๊ฒ์ ๋๋ค.๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ํ์ด์ง๋ฅผ ๊ฐ๋ฆฌํค๋
<Link>
์ธ์คํด์ค๋๋ก๋์ ์คํจํ์ง๋งhttp://localhost:3000/_next/static/development/pages/post.js
๋<Link>
ํด๋ฆญ์ ํ์ด์ง์ ๊ณ์ ๋๋กญ๋ฉ๋๋ค. css ๊ฐ์ ธ ์ค๊ธฐ,<Link>
s to blog posts work perf. ์ฃผ์์ ์ ๊ฑฐํ๊ณ ๋ชจ๋<Link>
๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์๋ก๋ํ์ง ๋ชปํฉ๋๋ค.์ด๋ฌํ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ํ์ด์ง ๊ฒฝ๋ก ์ค ํ๋๋ฅผ ๋๋ฅด๋ ๊ฒ์ ์ ๋๋ก ์๋ํ์ง๋ง ๋ฒ๊ทธ๋ ํด๋ผ์ด์ธํธ ์ธก ๊ธฐ๋ฐ ๋ผ์ฐํ ๊ณผ ๋ง ๊ด๋ จ์ด ์์ต๋๋ค. ์ด๋ ๋ฒ์ 6์์ ๋ฒ์ 8๋ก ์ ๊ทธ๋ ์ด๋ ํ ํ์ ๋ฐ์ํ์ต๋๋ค.
์ฒ์์๋
@zeit/next-css
ํ์ง๋ง@zeit/next-sass
์์ ์ค์ํํ๊ณ .scss ํ์ผ์ ๊ฐ์ ธ์จ ํ ๋์ผํ ๋ฐฉ์์ผ๋ก์ด ๋ฌธ์ ๋ฅผ ๋ณต์ ํ ์ ์์ต๋๋ค. ์ง๊ธ์styled-components
drop@zeit/next-css
์ฌ์ฉํ์ฌ ์ด๋ฌํ ์คํ์ผ์๋ก๋ํ๊ฒ ์ต๋๋ค. https://www.npmjs.com/package/@zeit/next -css ๋ฐ https://www.npmjs.com/package/@zeit/next -sass๋ฅผ ๊ฒํ ํ ํ ์ด๋ฌํ ์ฌ์ฉ ์์ ๊ฐ ๊นจ์ง ๊ฒ ๊ฐ์ต๋๋ค ๐ค
next / css ํจํค์ง๋ฅผ ์ถ๊ฐ ํ ํ์ด ๋ฌธ์ ๊ฐ ๋์๊ฒ๋ ๋ฐ์ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ ์ค์๋ ๋์ผํ ์ผ์ด ๋ฐ์ํ์ผ๋ฉฐ (ํ๋ก๋์ ์ด ์์๋๋ก ์๋ ํจ) ๋ฌธ์ ๋ sass ํ์ผ์ ๊ฐ์ ธ ์ค๋ ํ์ด์ง์ ๋งํฌ (๋๋ ๋ด๋ถ ๊ตฌ์ฑ ์์ ํฌํจ) ํ ๋์ ๋๋ค.
๋ด next.config.js
ํ์ผ :
const withSass = require('@zeit/next-sass');
const withBundleAnalyzer = require('@next/bundle-analyzer')({
enabled: process.env.ANALYZE === 'true',
});
require('dotenv').config();
module.exports = withBundleAnalyzer(
withSass({
distDir: '../dist',
env: {...},
}),
);
๋ฐ๋ผ์ ์ฌ์ธต ๊ตฌ์ฑ ์์ ์ค ํ๋์ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ ธ ์ค๊ธฐ๊ฐ ์์ต๋๋ค.
// MIGRATE: PriceDetail to styled components
import './PriceDetail.scss';
๊ฐ์ ธ ์ค๊ธฐ์ ๋๊ธ์ ๋ฌ๋ฉด ๋งํฌ๊ฐ ์๋ํ๊ธฐ ์์ํฉ๋๋ค. ๋ฐ๋ผ์ withSass
ํ๋ฌ๊ทธ์ธ์ ๋ฌธ์ ๊ฐ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋น์ทํ ๋ฌธ์ ๊ฐ ์์ง๋ง ๋์ผํ์ง๋ ์์ต๋๋ค. ๋ถํํ๋ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์์ฐ์์๋. ๊ทธ๋ฌ๋ ์ด๋ค ์ด์ ๋ก ๋งํฌ๊ฐ ๋๋๋ก ์๋ํฉ๋๋ค.
๋ค์ 9.4์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ด์ ํ๋ก์ ํธ์ CodeMirror
์ถ๊ฐ
import "codemirror/lib/codemirror.css"
๋ช ๊ฐ์ง ์์
์ ์ํ ํ ๋ค์ ๊ทธ ๋์ router.replace("/")
๋ฅผ ํธ์ถํ๋ pages / page2.js์ ๊ฐ์ ๊ฒ์ด ์๋๋ฐ ๊ฐ์๊ธฐ ์๋ฌด ์์
๋ ์ค๋จ๋์์ต๋๋ค.
๋๋ฒ๊ฑฐ์์ router.replace("/")
๋ฅผ ์คํํ๋ฉด catch
๋๋ finally
๋ธ๋ก์ ํด๊ฒฐํ๊ฑฐ๋ ์ ์คํ์ง ์๋ ์ฝ์์ด ํ์๋์์ต๋๋ค.
๋ํ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ์๋ ๊ฒ์ ๋ด next.config.js์ next-css๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค.์ด ํ์ผ์ ์ ๊ฑฐํ๊ณ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์ง ํ์ธํ๋ ค๊ณ ํฉ๋๋ค.
์ฌ๊ธฐ์ ํซ ํฝ์ค๊ฐ์๋ ๊ฒ ๊ฐ๋์? =)
์ํ, ๊ทธ๊ฒ ์ ๋ฅผ ์ํด ์์ ๋์์ต๋๋ค-๋ถ๋ช
ํ ๊ฐ์ ธ ์ค๊ธฐ๋ฅผ ์ _app.js
ํ์ผ๋ก ์ฎ๊ฒจ์ผํ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ง๊ธ์ด ๋ฌธ์ ๋ฅผ ์กฐ์ฌํ๊ณ ์์ต๋๋ค.