# deno-template **Repository Path**: LiuSuY/deno-template ## Basic Information - **Project Name**: deno-template - **Description**: 解决部署时多个环境,只需打包成对应版本的可执行文件 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-01 - **Last Updated**: 2026-06-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # exam-admin(前后端一体化 + 单文件可执行) 同仓库管理前后端: - 前端:Next.js(App Router) + Ant Design v6 + Tailwind CSS - 后端:Deno + Hono + PostgreSQL(Drizzle ORM) - 交付:Next 静态导出后由 Deno 托管,并用 `deno compile` 打包成单个可执行文件(内嵌静态资源) ## 目录结构 ``` . ├─ frontend/ # Next.js + AntD + Tailwind └─ backend/ # Deno + Hono + PostgreSQL(Drizzle) + 静态托管 + compile ``` ## 环境要求 - Deno 2.x - Node.js + npm(仅用于构建前端) - PostgreSQL(可选;不配库也能跑前端静态页面与 /api/info) ## 快速开始(最常用) ### 1) 安装前端依赖 ```bash cd frontend npm install ``` ### 2) 构建前端并同步到后端静态目录 ```bash cd backend deno task build ``` ### 3) 启动后端(同时托管静态页面) ```bash cd backend deno task start ``` 访问: - 页面:http://localhost:3000/ - API:http://localhost:3000/api/info ## 数据库(PostgreSQL + Drizzle) 后端使用 Drizzle ORM + `pg` 驱动,相关配置位于 `backend/drizzle.config.ts` 与 `backend/src/db/schema.ts`。 ### 配置连接 支持两种方式: 1) 推荐:`DATABASE_URL` ```bash export DATABASE_URL="postgresql://user:password@host:5432/dbname" ``` 2) 或使用拆分变量: ```bash export PGHOST="127.0.0.1" export PGPORT="5432" export PGUSER="postgres" export PGPASSWORD="postgres" export PGDATABASE="postgres" ``` ### 迁移/同步(drizzle-kit) 在 `backend/` 目录执行: ```bash deno task db:generate # 根据 schema 生成迁移文件 deno task db:migrate # 执行迁移(会读取 .env / 环境变量) deno task db:pull # 从现有数据库反推 schema ``` 验证接口: - `GET /api/db/ping` - `GET /api/users` - `POST /api/users`,body:`{ "name": "Alice" }` ## 打包为单文件可执行 先确保静态资源已经同步到 `backend/public/`(建议执行 `deno task build`),然后: ```bash cd backend deno task compile ``` 产物: - `backend/exam-admin` 运行: ```bash cd backend ./exam-admin ``` ## 常用命令速查 在 `backend/` 目录: - `deno task start`:启动后端(端口默认 3000) - `deno task build`:构建前端并同步到后端 public - `deno task compile`:编译单文件可执行 在 `frontend/` 目录: - `npm run dev`:启动 Next 开发服务(端口 3001) - `npm run build`:构建并静态导出到 `frontend/out`