Fresh — современный фреймворк на базе Deno, ориентированный на создание быстрых и оптимизированных веб-приложений с использованием Islands Architecture. Для эффективной работы необходима правильно настроенная среда разработки.
Fresh полностью зависит от Deno, поэтому первым шагом является его установка. Deno поставляется с встроенным менеджером пакетов и поддержкой TypeScript без дополнительной конфигурации. Установка на большинстве систем выполняется через команду:
curl -fsSL https://deno.land/install.sh | sh
После установки следует убедиться, что Deno доступен в PATH:
deno --version
Fresh предлагает готовый шаблон проекта, который можно развернуть через команду:
deno run -A https://deno.land/x/fresh@latest/init.ts my_project
Эта команда создаёт структуру проекта с папками routes,
components, islands и файлом конфигурации
fresh.gen.ts.
Fresh использует ES-модули, что упрощает работу с импортами. Все зависимости указываются с URL или локально. Пример импорта компонента:
import Header from "../components/Header.tsx";
Рекомендуется структурировать проект так, чтобы компоненты были
максимально атомарными, а интерактивные элементы размещались в
islands.
Deno интегрируется с редакторами через расширения, например,
Deno для VS Code. Оно обеспечивает автодополнение,
проверку типов и форматирование. Настройка включает создание файла
deno.json:
{
"tasks": {
"start": "deno task dev"
},
"lint": true,
"fmt": true
}
Использование deno lint и deno fmt
позволяет поддерживать единый стиль кода и предотвращает ошибки на
ранних этапах разработки.
Deno предоставляет встроенный инспектор через Chrome DevTools:
deno run --inspect-brk main.ts
Fresh автоматически поддерживает горячую перезагрузку при изменении файлов, что значительно ускоряет процесс разработки. Команда для запуска в режиме разработки:
deno task dev
Fresh полностью поддерживает TypeScript и JSX/TSX. Для создания компонента используется синтаксис:
export default function Button(props: { text: string }) {
return <button>{props.text}</button>;
}
Все интерактивные компоненты, размещённые в islands,
автоматически гидратируются на клиенте. Это позволяет комбинировать
серверный рендеринг и клиентскую интерактивность без сложной
настройки.
В Fresh нет package.json, как в Node.js. Все зависимости указываются напрямую через URL или локальные файлы. Deno кэширует их автоматически, а для контроля версий рекомендуется фиксировать конкретные версии в URL:
import { serve } from "https://deno.land/std@0.203.0/http/server.ts";
Fresh не требует дополнительных сборщиков, но можно использовать Deno Test для модульного тестирования:
import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
Deno.test("simple test", () => {
assertEquals(1 + 1, 2);
});
Для проверки производительности и анализа рендеринга полезны инструменты DevTools и встроенные возможности логирования.
Для продакшена Fresh использует встроенный сервер Deno. Основные рекомендации:
Deno.env.Запуск продакшена выполняется командой:
deno task start
Эта команда использует оптимизированный сервер с поддержкой потоковой передачи страниц и статических ресурсов.
С их помощью разработка становится более быстрой и безопасной, особенно при работе с большими проектами.
islands хранить только те компоненты, которые требуют
клиентской гидратации.utils или services.Такой подход повышает читаемость кода, облегчает тестирование и ускоряет загрузку страниц.