Fresh изначально ориентирован на экосистему Deno, поэтому ключевым инструментом разработчика становится сам рантайм. Установка Deno автоматически даёт доступ к большинству необходимых утилит без дополнительной настройки.
Создание проекта выполняется через официальный генератор:
deno run -A -r https://fresh.deno.dev my_project
В сгенерированной структуре сразу присутствуют:
Запуск локального сервера:
deno task start
Сервер разработки поддерживает горячую перезагрузку (HMR) для маршрутов и island-компонентов, что позволяет мгновенно видеть изменения без перезапуска процесса.
Fresh использует встроенный HTTP-сервер Deno. Это исключает необходимость в сторонних сборщиках и dev-серверах.
Особенности сервера разработки:
Для отладки используется стандартный механизм Deno:
deno task start --inspect
После запуска инспектора доступна отладка через Chrome DevTools или совместимые IDE.
Строгая структура каталогов в Fresh — не ограничение, а средство навигации и контроля:
routes/ — HTTP-маршруты
islands/ — интерактивные компоненты
components/ — обычные JSX-компоненты
static/ — статические файлы
Каждый файл в routes/ автоматически становится
маршрутом. Это упрощает:
Маршруты поддерживают:
[id].tsx),GET, POST и
др.).Islands — ключевая концепция Fresh. Интерактивность изолируется в отдельных компонентах, которые загружаются и гидратируются только при необходимости.
Инструменты, связанные с islands:
Island определяется простым размещением компонента в каталоге
islands/. Никакой дополнительной конфигурации не требуется
— это снижает вероятность ошибок и ускоряет разработку.
Fresh использует TypeScript как стандарт. Поддержка реализована
средствами Deno, без tsconfig.json.
Преимущества:
Deno автоматически:
Зависимости подключаются напрямую по URL:
import { h } from "preact";
Для централизованного управления версиями используется файл
import_map.json. Он выполняет роль инструмента:
Пример import map:
{
"imports": {
"preact": "https://esm.sh/preact@10.19.2"
}
}
Deno предоставляет встроенные инструменты качества кода, которые полностью совместимы с Fresh:
deno lint
deno fmt
Эти инструменты:
Использование стандартных средств снижает количество сторонних зависимостей и упрощает поддержку проекта.
Fresh не навязывает тестовый фреймворк, но полностью совместим с встроенной системой тестирования Deno.
Пример теста маршрута:
Deno.test("главная страница возвращает 200", async () => {
const res = await fetch("http://localhost:8000");
if (res.status !== 200) {
throw new Error("Ошибка статуса");
}
});
Поддерживаются:
Запуск тестов:
deno test
Fresh не использует классическую сборку. Приложение запускается напрямую на сервере, что делает процесс деплоя предельно простым.
Поддерживаются:
Для production-режима используется тот же код, что и в разработке, без расхождений конфигураций.
Логирование строится на стандартном console или
встроенных средствах Deno. Это даёт:
Ошибки рендеринга, маршрутизации и islands отображаются с подробными стектрейсами, включая исходные TypeScript-файлы.
Fresh отлично поддерживается современными редакторами кода:
Для Visual Studio Code используется официальный плагин Deno, который превращает структуру Fresh-проекта в полноценную рабочую среду без дополнительной настройки.
Fresh допускает расширение стандартного функционала:
Это делает фреймворк удобным не только для приложений, но и для создания инфраструктурных решений, где контроль над сервером критичен.