Ответ
**SSG (Static Site Generation)** — это метод, при котором HTML-страницы генерируются во время **сборки (build time)** приложения, а не при каждом запросе пользователя. В контексте **Node.js** это часто реализуется с помощью фреймворков типа **Next.js** или **Gatsby**, где Node.js используется как среда для выполнения инструментов сборки.
**Как это работает с Node.js?**
1. Вы пишете код на React/Vue с использованием специальных функций (например, `getStaticProps` в Next.js).
2. Команда сборки (`next build`, `gatsby build`) запускается в **Node.js-окружении**.
3. Node.js-скрипт выполняет все необходимые операции: запрашивает данные с API (вашего Node.js-бэкенда или внешних источников), рендерит React-компоненты в HTML и сохраняет результат как набор статических файлов (HTML, CSS, JS).
4. Эти файлы раздаются через CDN или простой веб-сервер (Nginx).
**Пример с Next.js (фреймворк на Node.js):**
```javascript
// pages/blog/[slug].js
// Эта страница будет сгенерирована статически для каждого поста в блоге.
export async function getStaticPaths() {
// Вызывается при сборке. Запрашиваем у Node.js API список постов.
const res = await fetch('https://my-nodejs-api.com/posts');
const posts = await res.json();
const paths = posts.map(post => ({
params: { slug: post.slug },
}));
return { paths, fallback: false };
}
export async function getStaticProps({ params }) {
// Вызывается при сборке для каждого пути. Запрашиваем данные конкретного поста.
const res = await fetch(`https://my-nodejs-api.com/posts/${params.slug}`);
const post = await res.json();
return { props: { post } }; // Данные передаются в компонент Page при сборке
}
function BlogPost({ post }) { // Компонент получает готовые данные
return (
);
}
export default BlogPost;
```
**Преимущества SSG для проектов на Node.js:**
* **Максимальная производительность:** Готовый HTML отдается мгновенно с CDN.
* **Идеально для SEO:** Поисковые боты получают полностью сформированный контент.
* **Высокая безопасность и стабильность:** Нет рантайм-сервера БД или сложной логики, подверженной ошибкам.
* **Низкая стоимость хостинга:** Статические файлы можно хостить на S3, Netlify, Vercel.
**Когда использовать SSG в Node.js-проектах:**
* Маркетинговые сайты, лендинги.
* Блоги, документация, портфолио.
* Любой контент, который меняется нечасто и может быть получен на этапе сборки.