Dynamic importλ₯Ό μ΄μ©νλ©΄ λΉλκΈ°μ μΌλ‘ λ°μ΄ν°λ₯Ό λΆλ¬ μ¬ μ μμ΅λλ€.
const loader = async () => import('[path]');
loader().then((data) = console.log(data));
μλ°μ€ν¬λ¦½νΈ ES6μμλ μμ½κ² Dynamic importλ₯Ό μ§μνκ³ μμ΅λλ€.
μ½λμμ μ μν΄μΌ ν μ μ async/awaitμ μ΄μ©ν΄ import λ¬Έμ μμ±νκ³ μλ€λ μ μ
λλ€.
리μ‘νΈμμ lazy ν¨μμ Dynamic import λ¬Έλ²μ μ΄μ©ν΄μ μ»΄ν¬λνΈλ₯Ό λ³λμ μ²ν¬νμΌλ‘ λΆλ¦¬νλ κ²μ΄ κ°λ₯ν©λλ€.
const LazyComponent = lazy(() => import('./LazyComponent'));
const WrapComponent = () => {
return(
<Suspense fallback={<div>Loading...</div>}>
<LazyComponent />
</Suspense>
)
}
Dynamic import ν¬μ€ν μ΄λ―λ‘ Suspenseμ λν΄ λ³λλ‘ κΈ°μ νμ§ μμ΅λλ€.
LazyComponentκ° λ‘λ λμ§ μμμΌλ―λ‘ fallback uiκ° νμΆλ¨Dynamic importλ‘ μΈν΄ λ³λμ μ²ν¬νμΌμ μμ²(http)νκ³ μλ΅ λ°μLazyComponentλ₯Ό λ λλ§ν¨Next.jsμμλ lazy ν¨μμ Susepnseλ₯Ό μ΄μ©ν΄ Dynamic importλ₯Ό μ¬μ© ν μ μμ΅λλ€. κ·Έλ¬λ μλ² μ»΄ν¬λνΈμμλ κΈ°μ‘΄μ λ°©μλλ‘ μ μ©μ΄ λΆκ°λ₯ν©λλ€.
κ·Έ μ΄μ λ lazy ν¨μλ ν΄λΌμ΄μΈνΈ μ»΄ν¬λνΈμμλ§ μ¬μ© ν μ μκΈ° λλ¬Έμ
λλ€. μλ² μ»΄ν¬λνΈμ μ¬μ©νκΈ° μν΄μλ ν΄λΌμ΄μΈνΈ μ»΄ν¬λνΈλ‘ νλ² κ°μΈμ μ¬μ©ν΄μΌν©λλ€.
// ClientLazyComponent.tsx
'use client';
const LazyComponent = lazy(() => import('./LazyComponent'));
export const ClientComponent = () => {
return(
<Suspense fallback={<div>Loading...</div>}>
<LazyComponent />
</Suspense>
)
}
// ServerComponent.tsx
'use server';
export default function ServerPage() {
return (
<div>
<ClientComponent />
</div>
)
}
μ΄μ²λΌ μλ² μ»΄ν¬λνΈμμ Dynamic importλ₯Ό μ§μ μ μΈ ν μ μλ€λ λΆνΈν¨μ΄ μμ΄, Next.jsλ dynamic ν¨μλ₯Ό μ 곡ν©λλ€.
'use server';
const LazyComponent = dynamic(() => import('[path]'), {
ssr: true,
loading: () => <div>Loading...</div>
})
export default function ServerPage() {
return (
<LazyComponent />
)
}
μ΄ ν¨μμ νΉμ§μ μλ²/ν΄λΌμ΄μΈνΈ μ»΄ν¬λνΈμμ λͺ¨λ μ¬μ© ν μ μμΌλ©° λ³λμ Suspense μ‘°μ°¨ μ μΈ ν νμκ° μλ€λ κ²μ
λλ€.
λκ°μ§ λ°©λ²μΌλ‘ Dynamic importκ° λͺ¨λ κ°λ₯νλ€λ©΄ μ΄λ€ κ²μ μ νν΄μΌ ν κΉμ?
ssr μ΅μ
μ ν΅ν΄ μλ² μ¬μ΄λ λ λλ§ μ¬λΆ μ μ΄ κ°λ₯Suspense μμ΄λ loading UI νμ κ°λ₯lazy ν¨μλ₯Ό μ΄μ©νλ©΄ μ΄λ€ μ»΄ν¬λνΈλ₯Ό μ¬μ©νλ μ§ λ³λμ μ²ν¬ νμΌμ μμ²νλ λ°©μμΌλ‘ λμκ°μ₯ ν° μ°¨μ΄μ μ SSRμ μ μΈν μ μλμ§ μ¬λΆμ
λλ€. lazy ν¨μλ₯Ό ν΅ν΄ 'Dynamic importνκ±°λ, 'Suspenseλ‘ κ°μΈμ λ‘λ©μ νμΆνλ€κ³ ν΄λ μ΅μμ μ»΄ν¬λνΈκ° μλ² μ»΄ν¬λνΈμΈ κ²½μ° SSRμ ν¬ν¨λ©λλ€.
κ·Έλμ SSRμ μ μΈνκ³ μΆλ€λ©΄ dynamic ν¨μλ₯Ό μ΄μ©ν΄μΌ ν©λλ€. SSRμμ μ μΈ ν¨μ μ΄κΈ° HTMLμ λΉμλ¦¬λ‘ νμνκ³ ν΄λΌμ΄μΈνΈμμ μ¨μ ν λ체ν¨μ μλ―Έν©λλ€.