๐งญ ํด๋ผ์ด์ธํธ ์ธก ํ์(Client-Side Navigation)
<Link> ์ปดํฌ๋ํธ๋ Next.js ์ฑ์ ๋ ํ์ด์ง ๊ฐ์ ํด๋ผ์ด์ธํธ ์ธก ํ์(Client-Side Navigation)์ด ๊ฐ๋ฅํ๋ค.
ํด๋ผ์ด์ธํธ ์ธก ํ์์ด๋ผ ํจ์ ๋ธ๋ผ์ฐ์ ์์ ์ํํ๋ ๊ธฐ๋ณธ ํ์๋ณด๋ค ๋น ๋ฅธ JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด์ง ์ ํ์ด ๋ฐ์ํ๋ค๋ ์๋ฏธ์ด๋ค.
Next.js ๊ณต์ ๋ฌธ์์๋ ์ด๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ์ด ๋์์๋ค.
์์ ์ฌ์ง๊ณผ ๊ฐ์ด ํ์ด์ง๋ฅผ ๋๊ฐ ๋ง๋ค์ด ๋๋๋ค.
๋๋ test.js, test1.js ํ์ผ์ ๋ง๋ค์ด ์ฝ๋ฉํ๋ค.
์ด๋ ๊ฒ ๋ฐฐ๊ฒฝ์ ์์๋ก ์ง์ ํ๊ณ ๋งํฌ๋ฅผ ๋๋ฌ๋ณธ๋ค.
<Link>๋ฅผ ๋๋ฌ์ ์ด๋ํ์์๋ ๋ฐฐ๊ฒฝ์์ด ์ ์ง๋๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
๋ณดํต <a> ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ฒ ์๋ก๊ณ ์นจ(refresh)๋๋ฉด์ ํ์ด์ง๊ฐ ๋ค์ ์ถ๋ ฅ๋๋ ๊ฒ(๋ฐฉ๊ธ ๋ ์์์ฒ๋ผ background ์์ ์ง์ ํด๋์ผ๋ฉด ์ง์์ง)์ ๋ณผ ์ ์๋๋ฐ,
Next.js์ <Link>๋ ์ ์ฒด ํ์ด์ง๋ฅผ ๋ก๋ํ์ง ์๊ณ ํด๋ผ์ด์ธํธ ์ธก ํ์(Client-Side Navigation)์ ์๋์ํจ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
๐ ๏ธ ์ฝ๋ ๋ถํ (Code splitting) ๋ฐ prefetching
Next.js๋ ์ฝ๋ ๋ถํ (Code splitting)์ ์๋์ ์ผ๋ก ์ํํ๋ค.
๊ฐ ํ์ด์ง๋ ํด๋น ํ์ด์ง์ ํ์ํ ๊ฒ๋ง ๋ก๋ํ๋ค.
ํํ์ด์ง(์ง๊ธ ํ์ํ ํ์ด์ง๋ฅผ ๋งํ๋ ๊ฒ ๊ฐ์)๋ฅผ ๋๋๋งํ ๋ ๋ค๋ฅธ ํ์ด์ง์ ์ฝ๋๋ ์ฒ์๋ถํฐ ๊ฐ์ ธ์ค์ง ์๋๋ค.
์ด๋ ๊ฒ ํด์ ์๋ฐฑ ํ์ด์ง๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๋น ๋ฅด๊ฒ ํ์ด์ง๊ฐ ๋ก๋๋ ์ ์๊ฒ ํ๋ค.
์์ฒญํ ํ์ด์ง์ ์ฝ๋๋ง ๋ก๋ํ๊ฒ ๋๋ฉด ํ์ด์ง๊ฐ ๊ฒฉ๋ฆฌ๋๋ ํจ๊ณผ๊ฐ ์ผ์ด๋์ ํน์ ํ์ด์ง์์ ์ค๋ฅ๊ฐ ๋ฐ์ํด๋
๋๋จธ์ง Application(๋ค๋ฅธ ํ์ด์ง๋ฅผ ๋งํ๋ ๊ฒ ๊ฐ์)์์๋ ๊ณ์ ์๋ํ๊ฒ ๋๋ ์ฅ์ ์ด ์๋ค.
(ํ ์คํธ ํด๋ณด๋ ํ ํ์ด์ง์์ ์ค๋ฅ๋๋ ๋ค๋ฅธ ํ์ด์ง๋ ๋ฉ์ฉกํ ์๋ํ์๋ค.)
๋ํ, Next.js์ production build์์ <Link> ์ปดํฌ๋ํธ๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ทฐํฌํธ(Viewport)์ ๋ํ๋ ๋๋ง๋ค
Next.js๋ Background์์ <Link>๋ก ์ฐ๊ฒฐ๋ ํ์ด์ง์ ๋ํ ์ฝ๋๋ฅผ ์๋์ผ๋ก ๋ฏธ๋ฆฌ ๊ฐ์ ธ์จ๋ค.
๊ทธ๋์ <Link>๋ฅผ ํด๋ฆญํ ๋ ์ด๋ฏธ ๋์ ํ์ด์ง์ ์ฝ๋๊ฐ Background์์ ๋ก๋๋๊ณ ํ์ด์ง ์ ํ์ด ๋ฐ๋ก๋ฐ๋ก ์ด๋ฃจ์ด์ง๊ฒ ๋๋ค. ์ด๊ฒ์ prefetching์ด๋ผ๊ณ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ํด๋น <Link>๊ฐ ๊ฐ๋ฆฌํค๋ ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๊ณ ์ถ์ง ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
<Link href='...' prefetch={false}>
<Link>๊ฐ ๊ฐ๋ฆฌํค๋ ๋ค์ ํ์ด์ง์ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ prefetching์ด๋ผ๊ณ ํ๋๋ฐ ์ด ๊ธฐ๋ฅ์ false๋ก ๊บผ์ฃผ๋ฉด ๋๋ค.
์ฐธ๊ณ ๋ก Next.js ์ฑ ์ธ๋ถ์ ๋ค๋ฅธ ์ฌ์ดํธ(๋๋ ํ์ด์ง)๋ฅผ ์ฐ๊ฒฐํ๊ณ ์ถ์ผ๋ฉด
<Link> ํ๊ทธ ์์ด <a>ํ๊ทธ๋ง์ ์ฌ์ฉํด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ className๊ณผ ๊ฐ์ ํน์ฑ์ ์ถ๊ฐํด์ผ ํ๋ ๊ฒฝ์ฐ, <Link> ํ๊ทธ๊ฐ ์๋ <a> ํ๊ทธ์ ์ถ๊ฐํด์ผ ํ๋ค.
<Link> ์ปดํฌ๋ํธ์ ๋ํ ๋ ์์ธํ ์ค๋ช ์ ์ด๊ณณ์์ ํ์ธํ ์ ์๋ค.(์ถ๊ฐ๋ก ๋ผ์ฐํ ์ ๋ํ ์ค๋ช ์ ์ด๊ณณ)
'Next.JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Next.js] Next.js ๋ฉํ๋ฐ์ดํฐ(Metadata) (0) | 2021.09.27 |
---|---|
[Next.js] Next.js ์ด๋ฏธ์ง ์ ๋ก๋ ์คํจ(Module parse failed: Unexpected character) (0) | 2021.09.23 |
[Next.js] Next.js์ Link Component (0) | 2021.09.22 |
[Next.js] Next.js Page ํธ์ง ๋ฐ ์์ฑ(feat. Pages) (0) | 2021.09.22 |
[Next.js] Next.js ์์ํ๊ธฐ (0) | 2021.09.22 |