deno-frontend

bởi denoland

Sử dụng khi làm việc với framework Fresh, tạo route hoặc handler trong Fresh, xây dựng giao diện web với Preact, hoặc thêm Tailwind CSS trong Deno. Bao gồm Fresh 2.x…

npx skills add https://github.com/denoland/skills --skill deno-frontend

Frontend development with Deno

Two paths. Pick by what the project already uses.

Regular npm frameworks — the usual choice

Deno runs the normal frontend ecosystem: React, Vue, Svelte, Solid, Vite, Astro, Next.js, Nuxt, SvelteKit, Remix, SolidStart. Nothing needs to be ported, and there is no Deno-specific way to write them.

deno create vite my-app     # or astro, next, nuxt, svelte…
cd my-app
deno install
deno task dev

deno create is npm create. deno install reads package.json. deno task <script> runs package.json scripts. That is the whole difference.

Follow the framework's own documentation for everything else — routing, components, data loading, and config are the framework's concern, not Deno's. Don't invent Deno-flavoured variants of their APIs, and don't reach for Fresh patterns in a React or Svelte project.

The only things worth knowing:

  • Some frameworks need "nodeModulesDir": "auto" in deno.json; Next.js does.
  • Permissions apply to the dev server too — framework tasks generally want -A.
  • Deploying: see the deno-deploy skill, which lists per-framework build commands and presets.

Fresh — Deno's own framework

Fresh suits a new Deno-first project that wants server rendering with minimal client JavaScript. It uses island architecture: pages render on the server, and only components in islands/ ship JavaScript.

deno run -Ar jsr:@fresh/init
cd my-project
deno task dev                # http://localhost:5173

A Fresh project is Vite-based: vite.config.ts for the build, main.ts for the server, file-based routes in routes/, islands in islands/, server-only components in components/. Preact supplies the component model, with signals for state.

// islands/Counter.tsx — interactive, ships JS
import { useSignal } from "@preact/signals";

export default function Counter() {
  const count = useSignal(0);
  return <button onClick={() => count.value++}>Count: {count.value}</button>;
}

Three rules carry most of the weight:

  1. Islands ship JavaScript — keep them small, leave everything else in components/.
  2. Island props must be serializable. Functions cannot be passed.
  3. Handlers take a single (ctx) parameter.

Load references/FRESH.md for routes, handlers, define helpers, middleware, islands, signals, and Tailwind.

Use Fresh 2.x, imported from "fresh". For an existing 1.x project, or one pinned to a 2.0.0-alpha.* release, see references/FRESH_MIGRATION.md.

Further reading

  • https://fresh.deno.dev/docs — Fresh documentation
  • references/FRESH.md — Fresh 2.x patterns in depth
  • references/FRESH_MIGRATION.md — Fresh 1.x and alpha migration

Thêm skills từ denoland

deno
denoland
Sử dụng khi viết, chạy, cấu hình, xem xét hoặc gỡ lỗi mã trong một dự án Deno, hoặc khi tạo mới một dự án. Bao gồm quản lý phụ thuộc với deno…
deno-deploy
denoland
Use when deploying Deno apps to production, asking about Deno Deploy, or working with `deno deploy` CLI commands. Covers deployment workflows, environment…
deno-expert
denoland
Kiến thức Deno cấp chuyên gia để xem xét mã, gỡ lỗi và thực thi các phương pháp tốt nhất. Sử dụng khi xem xét mã Deno hoặc trả lời các câu hỏi Deno nâng cao.
deno-guidance
denoland
Sử dụng khi bắt đầu bất kỳ dự án Deno nào, chọn gói, cấu hình deno.json, hoặc chạy các lệnh CLI. Cung cấp kiến thức nền tảng để xây dựng các ứng dụng Deno hiện đại…
deno-project-templates
denoland
Sử dụng khi tạo khung cho các dự án Deno mới. Cung cấp các mẫu cho ứng dụng web Fresh, công cụ CLI, thư viện và máy chủ API với các phương pháp thực hành tốt nhất hiện đại.
deno-sandbox
denoland
Sử dụng khi xây dựng các tính năng thực thi mã người dùng không đáng tin cậy, mã do AI tạo ra hoặc cần môi trường thực thi mã cách ly. Bao gồm SDK @deno/sandbox.
migrate-to-deno
denoland
Sử dụng khi chuyển một dự án Node.js, npm, Yarn, pnpm hoặc Bun sang Deno, hoặc khi áp dụng Deno dần dần trong một codebase JavaScript hoặc TypeScript hiện có.…
fmt
denoland
Định dạng tất cả mã nguồn trong kho lưu trữ. Chạy trước khi mở một pull request hoặc commit thay đổi.