2.01 用Bun、Elysia、Turso、HTMX写一个招聘网站
好的, 我来为您概述如何使用 Bun、Elysia、Turso 和 HTMX 来构建一个招聘网站的基本步骤和结构:
- 设置项目:
- 安装依赖:
- 创建数据库结构 (使用 Turso):
首先, 创建一个 Turso 数据库并获取连接 URL。然后创建表结构:
CREATE TABLE jobs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
company TEXT NOT NULL,
description TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
- 设置 Elysia 服务器 (src/index. Ts):
import { Elysia } from 'elysia'
import { html } from '@elysiajs/html'
import { staticPlugin } from '@elysiajs/static'
import { Client } from '@libsql/client'
const db = new Client({
url: 'YOUR_TURSO_DATABASE_URL',
authToken: 'YOUR_TURSO_AUTH_TOKEN'
})
const app = new Elysia()
.use(html())
.use(staticPlugin())
.get('/', () => `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Job Board</title>
<script src="/htmx.min.js"></script>
</head>
<body>
<h1>Job Board</h1>
<div id="job-list" hx-get="/jobs" hx-trigger="load"></div>
<button hx-get="/job-form" hx-target="#job-form">Post a Job</button>
<div id="job-form"></div>
</body>
</html>
`)
.get('/jobs', async () => {
const jobs = await db.execute('SELECT * FROM jobs ORDER BY created_at DESC')
return jobs.rows.map(job => `
<div>
<h2>${job.title}</h2>
<p>${job.company}</p>
<p>${job.description}</p>
</div>
`).join('')
})
.get('/job-form', () => `
<form hx-post="/jobs" hx-target="#job-list">
<input name="title" placeholder="Job Title" required>
<input name="company" placeholder="Company" required>
<textarea name="description" placeholder="Job Description" required></textarea>
<button type="submit">Post Job</button>
</form>
`)
.post('/jobs', async ({ body }) => {
const { title, company, description } = body
await db.execute({
sql: 'INSERT INTO jobs (title, company, description) VALUES (?, ?, ?)',
args: [title, company, description]
})
const jobs = await db.execute('SELECT * FROM jobs ORDER BY created_at DESC')
return jobs.rows.map(job => `
<div>
<h2>${job.title}</h2>
<p>${job.company}</p>
<p>${job.description}</p>
</div>
`).join('')
})
.listen(3000)
console.log(`Elysia is running at http://localhost:3000`)
- 添加 HTMX:
将 HTMX 库文件 (htmx. Min. Js) 放在 public 文件夹中。
- 运行应用:
这个基本结构提供了一个简单的招聘网站, 包括: - 查看职位列表 - 添加新职位 - 使用 HTMX 进行无刷新页面更新
你可以根据需要进一步扩展功能, 例如: - 添加职位搜索 - 实现用户认证 - 添加应用职位的功能 - 改进 UI/UX 设计
记得替换 Turso 数据库的 URL 和认证令牌为你自己的值。这个例子提供了一个起点, 你可以在此基础上进行定制和扩展, 以满足特定的招聘网站需求。