worktopCloudflare Workers 的下一代 Web 框架
worktop 是面向 Cloudflare Workers 的下一代 Web 框架。
特性:
- 超轻量级
- 一流的 TypeScript 支持
- 自定义中间件支持
- 用于点菜功能的组织良好的子模块*
- 包括支持模式定义的路由器
- 熟悉的请求-响应处理程序 API
- 支持
async
/await
处理程序 - 完全 treeshakable
import { Router } from 'worktop'; import * as Cache from 'worktop/cache'; import { uid as toUID } from 'worktop/utils'; import { read, write } from 'worktop/kv'; import type { KV } from 'worktop/kv'; declare var DATA: KV.Namespace; interface Message { id: string; text: string; // ... } // Initialize const API = new Router(); API.add('GET', '/messages/:id', async (req, res) => { // Pre-parsed `req.params` object const key = `messages::${req.params.id}`; // Assumes JSON (can override) const message = await read<Message>(DATA, key); // Alter response headers directly res.setHeader('Cache-Control', 'public, max-age=60'); // Smart `res.send()` helper // ~> automatically stringifies JSON objects // ~> auto-sets `Content-Type` & `Content-Length` headers res.send(200, message); }); API.add('POST', '/messages', async (req, res) => { try { // Smart `req.body` helper // ~> parses JSON header as JSON // ~> parses form-like header as FormData, ...etc var input = await req.body<Message>(); } catch (err) { return res.send(400, 'Error parsing request body'); } if (!input || !input.text.trim()) { return res.send(422, { text: 'required' }); } const value: Message = { id: toUID(16), text: input.text.trim(), // ... }; // Assumes JSON (can override) const key = `messages::${value.id}`; const success = await write<Message>(DATA, key, value); // ^ boolean // Alias for `event.waitUntil` // ~> queues background task (does NOT delay response) req.extend( fetch('https://.../logs', { method: 'POST', headers: { 'content-type': 'application/json '}, body: JSON.stringify({ success, value }) }) ); if (success) res.send(201, value); else res.send(500, 'Error creating record'); }); API.add('GET', '/alive', (req, res) => { res.end('OK'); // Node.js-like `res.end` }); // Attach "fetch" event handler // ~> use `Cache` for request-matching, when permitted // ~> store Response in `Cache`, when permitted Cache.listen(API.run);
评论
TurismoJava的Web框架
turismo是一个类似Sinatra的Java的微型Web框架。示例代码:publicclassAppRoutesextendsRoutesList{ protectedvoidmap(){
TurismoJava的Web框架
0
YesodHaskell的web框架
Yesod是Haskell的Web框架用于开发类型安全、RESTful、高性能的Web应用。安装方法:cabalinstallyesod-platform
YesodHaskell的web框架
0
GolangerGo 的 Web 框架
Golanger是一个轻量级的Web应用框架,使用Go语言编写。Golanger框架主要实现了MVC模式(三层架构模式)(Model-View-Controller),它是软件工程中的一种软件架构模式
GolangerGo 的 Web 框架
0
VoltRuby 的 Web 框架
Volt是一个Ruby的Web框架,使得你的Ruby可在服务器和客户端上运行。当用户与页面交互时,DOM自动更新。页面状态可以存储在URL中。如果用户直接点击URL,则HTML将首先在服务器上呈现,以
VoltRuby 的 Web 框架
0
LapisLua 的 Web 框架
Lapis是一个用来构建Web一个用的框架,使用MoonScript或者Lua开发,运行于OpenResty。示例代码:lapis = require "lapis"class extends lap
LapisLua 的 Web 框架
0
LiftScala 的 Web 框架
Lift也叫LiftWeb,是一种新的Web应用程序框架。它是一种在Scala编程语言上构建的可伸缩框架。它非常适合ApacheGeronimo这样的可伸缩应用服务器,尤其是在Scala编译为与Jav
LiftScala 的 Web 框架
0