Fastro is web framework for developers who are obsessed with simplicity & performance. It is inspired by Express & Fastify.
Check these benchmarks to compare its speed with others.
After refactoring, these features will be released in the next version:
- Dependency injection
- Command line interface (CLI)
- Cloud function
Table of contents
Benchmarks
Go to this folder to check detailed methods & results.
Framework | Version | Requests/s | Percentage |
---|---|---|---|
Node http | 14.3.0 | 14171.7 | 100.0% |
Deno http | 1.1.3 | 13640.8 | 96.3% |
Fastro | 0.13.6 | 13050.8 | 92.1% |
Fastify | 2.15.1 | 11660.4 | 82.3% |
Oak | 5.2.0 | 9612.9 | 67.8% |
Abc | 1.0.0 | 9049.6 | 63.9% |
PHP | 7.3.11 | 6204.9 | 43.8% |
Express | 4.17.1 | 4700.2 | 33.2% |
Python Flask | 1.1.2 | 475.3 | 3.4% |
How to use
This module uses the git release. If you do not use the version, simply change v0.13.6
to master
branch. Breaking changes may be made without warning.
import { Fastro } from "https://raw.githubusercontent.com/fastrodev/fastro/v0.13.6/mod.ts";
const server = new Fastro();
server.get("/", (req) => req.send("root"));
await server.listen();
Run this command to try directly:
deno run --allow-net https://raw.githubusercontent.com/fastrodev/fastro/v0.13.6/examples/hello.ts
Server Options
Server options are used to enable the use of payload
, logger
, and static files
.
Static Files
You can enable the use of static files
by defining the server option to {static: true}
.
const server = new Fastro({ static: true });
server.static("public")
Payload
You can enable the use of payload
by defining the server option to {payload: true}
.
const server = new Fastro({ payload: true });
server.post("/hello", (req) => {
const payload = req.payload;
req.send(payload);
});
Logger
You can enable the use of logger
by defining the server option to {logger: true}
.
const server = new Fastro({ logger: true });
You can also enable all server options at once:
const server = new Fastro({ payload: true, static: true, logger: true });
Middleware
You can add new properties or functions for global or specific URL to the default request
. This is similar to the express middleware.
const middleware = (req: Request) => {
req.root = () => req.send("root");
};
server
.use(middleware)
.get("/", (req) => req.root());
Plugin
You can add new properties or functions to the fastro instance. You can also use all default instance functions, create routes & middleware. This is similar to the fastify plugin.
const routes = function (fastro: Fastro, done: Function) {
fastro
.get("/", (req) => req.send("root"))
.post("/", (req) => req.send("post"))
.put("/", (req) => req.send("put"))
.delete("/", (req) => req.send("delete"));
done();
};
server.register(routes);
Examples
Run this command to try directly:
deno run -A https://raw.githubusercontent.com/fastrodev/fastro/v0.13.6/examples/hello.ts
You can replace above url with this raw url:
https://raw.githubusercontent.com/fastrodev/fastro/v0.13.6/examples/<FILE>
Simply change <FILE>
with one of these:
Title | File |
---|---|
Create hello world app | hello.ts |
Use the basics | basic.ts |
Get url parameter | basic.ts |
Get a payload | basic.ts |
Send results as a file | basic.ts |
Serve static files | static.ts |
Create a middleware | middleware.ts |
Create a plugin | plugin.ts |