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
).
v1.3.0 requires Deno 1.35 or higher.
CLI
Deno
deno run -Ar npm:create-nhttp
Npm
npm create nhttp@latest
Manual Installation
deno.land
import nhttp from "https://deno.land/x/nhttp/mod.ts";
deno-npm
import nhttp from "npm:nhttp-land";
npm/yarn
npm i nhttp-land
// or
yarn add nhttp-land
// module
import nhttp from "nhttp-land";
// commonjs
const nhttp = require("nhttp-land").default;
Simple Usage
Create file app.ts
and copy-paste this code.
import nhttp from "https://deno.land/x/nhttp/mod.ts";
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 "https://deno.land/x/nhttp/mod.ts";
import { htmx, renderToHtml } from "https://deno.land/x/nhttp/lib/jsx.ts";
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);
Run
deno run -A app.tsx
more docs => https://nhttp.deno.dev
3rd-party libs
Like std-libs
for NHttp.
Usage
// Deno
import {...} from "https://deno.land/x/nhttp/lib/my-libs.ts";
// Deno NPM
import {...} from "npm:nhttp-land/my-libs";
// Node or Bun
import {...} from "nhttp-land/my-libs";
ServeStatic
import nhttp from "https://deno.land/x/nhttp/mod.ts";
import serveStatic from "https://deno.land/x/nhttp/lib/serve-static.ts";
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)));
more libs => https://nhttp.deno.dev/docs/3rd-party-lib