В Next.js файлы _app.js
и _document.js
играют важную роль в настройке и управлении поведением вашего приложения. Давайте рассмотрим их назначение и использование более подробно.
_app.js
Файл _app.js
является компонентом высшего порядка (Higher-Order Component, HOC) в Next.js, который оборачивает все страницы вашего приложения. Он позволяет вам контролировать, как каждая страница инициализируется и отображается. Вот некоторые ключевые функции и преимущества использования _app.js
:
- Глобальные стили и компоненты: Вы можете импортировать глобальные стили или компоненты, которые будут применяться ко всем страницам вашего приложения.
- Сохранение состояния: Вы можете сохранять состояние между переходами по страницам, что полезно для таких вещей, как аутентификация или корзина покупок.
- Общие макеты: Вы можете определить общий макет, который будет отображаться на всех страницах, такой как шапка, подвал или боковая панель.
- Инициализация библиотек: Вы можете инициализировать сторонние библиотеки, которые должны быть доступны во всем приложении.
Пример _app.js
:
import '../styles/globals.css';
import Layout from '../components/Layout';
function MyApp({ Component, pageProps }) {
return (
<Layout>
<Component {...pageProps} />
</Layout>
);
}
export default MyApp;
_document.js
Файл _document.js
используется для настройки HTML-документа, который оборачивает все страницы вашего приложения. Он позволяет вам контролировать элементы <html>
, <head>
и <body>
, что полезно для добавления метаданных, глобальных скриптов или настройки языка. Вот некоторые ключевые функции и преимущества использования _document.js
:
- Метаданные: Вы можете добавлять метатеги, такие как
<meta>
,<link>
,<script>
, которые будут применяться ко всем страницам. - Глобальные скрипты: Вы можете добавлять глобальные скрипты, которые должны быть загружены на всех страницах, такие как Google Analytics или другие сторонние библиотеки.
- Настройка языка: Вы можете установить атрибуты языка для элемента
<html>
.
Пример _document.js
:
import Document, { Html, Head, Main, NextScript } from 'next/document';
class MyDocument extends Document {
render() {
return (
<Html lang="en">
<Head>
<meta charSet="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto" />
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}
export default MyDocument;
Файлы _app.js
и _document.js
предоставляют мощные возможности для настройки и управления поведением вашего Next.js приложения. Используя _app.js
, вы можете управлять глобальными стилями, состоянием и макетами, в то время как _document.js
позволяет вам настраивать HTML-документ и добавлять метаданные и глобальные скрипты.