Netlify

Netlify 提供静态网站托管和无服务器(serverless)后端服务。Edge Functions 让我们可以让网页变得动态。

Edge Functions 支持使用 Deno 和 TypeScript 编写代码,并且可以通过 Netlify CLI 轻松部署。借助 Hono,你可以为 Netlify Edge Functions 创建应用。

1. 设置

Netlify 提供了一个快速启动模板。你可以通过 create-hono 命令启动项目。本示例选择 netlify 模板。

npm

  1. npm create hono@latest my-app

yarn

  1. yarn create hono my-app

pnpm

  1. pnpm create hono my-app

bun

  1. bun create hono@latest my-app

deno

  1. deno init --npm hono my-app

进入 my-app 目录。

2. Hello World

编辑 netlify/edge-functions/index.ts

  1. import { Hono } from 'jsr:@hono/hono'
  2. import { handle } from 'jsr:@hono/hono/netlify'
  3. const app = new Hono()
  4. app.get('/', (c) => {
  5. return c.text('Hello Hono!')
  6. })
  7. export default handle(app)

3. 运行

通过 Netlify CLI 启动开发服务器,然后在浏览器中访问 http://localhost:8888

  1. netlify dev

4. 部署

可以使用 netlify deploy 命令部署。

  1. netlify deploy --prod

Context

你可以通过 c.env 访问 Netlify 的 Context

  1. import { Hono } from 'jsr:@hono/hono'
  2. import { handle } from 'jsr:@hono/hono/netlify'
  3. // 导入类型定义
  4. import type { Context } from 'https://edge.netlify.com/'
  5. export type Env = {
  6. Bindings: {
  7. context: Context
  8. }
  9. }
  10. const app = new Hono<Env>()
  11. app.get('/country', (c) =>
  12. c.json({
  13. 'You are in': c.env.context.geo.country?.name,
  14. })
  15. )
  16. export default handle(app)