Intro
NHttp - An Simple web-framework for Deno and Friends.
Features
- Focus on simple and easy to use.
- Fast Performance. One of the fastest Frameworks.
- Cross runtime support (Deno, Node, Bun, etc).
- Low overhead & True handlers (no caching anything).
- Built-in Middleware.
- Sub router support.
- Template engine support (jsx, ejs, nunjucks, eta, pug, ..etc).
- Return directly on handlers.
- Auto parses the body (
json / urlencoded / multipart / raw
).
Installation
in version 2, nhttp is published to jsr. You can install it as follows.
- Deno
- deno.land
- npm
- Bun
- Yarn
- pnpm
deno add @nhttp/nhttp
import nhttp from "https://deno.land/x/nhttp/mod.ts";
npx jsr add @nhttp/nhttp
bunx jsr add @nhttp/nhttp
yarn dlx jsr add @nhttp/nhttp
pnpm dlx jsr add @nhttp/nhttp
Simple Usage
Create file app.ts
and copy-paste this code.
import nhttp from "@nhttp/nhttp";
const app = nhttp();
app.get("/", () => {
return "Hello, World";
});
app.get("/cat", () => {
return { name: "cat" };
});
app.listen(8000);
Run
deno run -A app.ts
Using JSX + Htmx
Create file app.tsx
and copy-paste this code.
import nhttp from "@nhttp/nhttp";
import { htmx, renderToHtml } from "@nhttp/nhttp/jsx";
const app = nhttp();
app.engine(renderToHtml);
app.use(htmx());
app.get("/", () => {
return (
<button hx-post="/clicked" hx-swap="outerHTML">
Click Me
</button>
);
});
app.post("/clicked", () => {
return <span>It's Me</span>;
});
app.listen(8000);
config jsx
deno.json / tsconfig.json
{
"compilerOptions": {
"jsx": "react-jsx",
"jsxImportSource": "@nhttp/nhttp/jsx"
}
}
more docs => https://nhttp.deno.dev
Standard Lib
Like std-libs
for NHttp.
Usage
// JSR
import {...} from "@nhttp/nhttp/my-libs";
// deno.land
import {...} from "https://deno.land/x/nhttp/lib/my-libs.ts";
Serve Static
import nhttp from "@nhttp/nhttp";
import serveStatic from "@nhttp/nhttp/serve-static";
const app = nhttp();
app.use(serveStatic("./my_folder"));
// with prefix
app.use(serveStatic("./my_folder", { prefix: "/assets" }));
// or
// app.use("/assets", serveStatic("./my_folder"));
// with URL
app.use(serveStatic(new URL("./my_folder", import.meta.url)));
CLI
Deno
deno run -Ar npm:create-nhttp
Npm
npm create nhttp@latest