Обычно невозможно импортировать модули по условию. Всякий раз, когда страница загружается, все импортированные модули на этой конкретной странице также загружаются.
const allowImport = true; if (allowImport) { import DynamicComponent from "../components/hello"; } export default function Home() { return ( <div> <DynamicComponent /> </div> ) }
Приведенный выше фрагмент кода вызовет некоторые ошибки при компиляции. Но с Next.js можно загружать модули в зависимости от условий с помощью динамического импорта. Мы должны импортировать модуль next / dynamic для выполнения динамического импорта.
import dynamic from 'next/dynamic' const allowImport = true; let DynamicComponent = null; if (allowImport) { DynamicComponent = dynamic(() => import('../components/hello')) } export default function Home() { return ( <div> <DynamicComponent /> </div> ) }
Даже если импортированный модуль не является экспортным по умолчанию, мы могли бы выполнить динамический импорт.
import dynamic from 'next/dynamic'
const DynamicComponent = dynamic(() =>
import('../components/hello').then((mod) => mod.Hello)
)
function Home() {
return (
<div>
<DynamicComponent />
</div>
)
}
export default Home
В Next.js HTML создается на стороне сервера. Таким образом, ситуации, например, когда конкретному модулю требуется библиотека, которая работает только в браузере, нарушат компиляцию кода. Благодаря динамическому импорту мы могли загружать этот конкретный модуль только на стороне браузера.
import dynamic from 'next/dynamic'
const DynamicComponentWithNoSSR = dynamic(
() => import('../components/hello'),
{ ssr: false }
)
function Home() {
return (
<div>
<DynamicComponentWithNoSSR />
</div>
)
}
export default Home
Заключение
Динамический импорт также используется для увеличения производительности веб-сайта, поскольку мы можем остановить загрузку всех файлов при начальной загрузке страницы. Но если вы используете эту функцию неправильно, это также может повлиять на производительность сайта.