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 |
---|---|---|---|
Deno http | 1.1.3 | 17600.0 | 100.0% |
Node http | 14.3.0 | 16526.8 | 93.9% |
Fastro | 0.13.5 | 16340.8 | 92.8% |
Fastify | 2.15.1 | 13679.6 | 77.7% |
Abc | 1.0.0 | 11806.2 | 67.1% |
Oak | 5.2.0 | 10949.8 | 62.2% |
Express | 4.17.1 | 7553.3 | 42.9% |
PHP | 7.3.11 | 6361.6 | 36.1% |
Python Flask | 1.1.2 | 495.9 | 2.8% |
How to use
This module uses the git release. If you do not use the version, simply change v0.13.5
to master
branch. Breaking changes may be made without warning.
import { Fastro } from "https://raw.githubusercontent.com/fastrodev/fastro/v0.13.5/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.5/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 specific URL to the default request
. This is similar to the express middleware.
const middleware = (req: Request, done: Function) => {
req.root = () => req.send("root");
done();
};
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.5/examples/hello.ts
You can replace above url with these raw urls below.
Simply change RAW_FILE_URL
with:
https://raw.githubusercontent.com/fastrodev/fastro/v0.13.5/examples
Title | Raw URL |
---|---|
Create hello world app | RAW_FILE_URL/hello.ts |
Use the basics | RAW_FILE_URL/basic.ts |
Get url parameter | RAW_FILE_URL/basic.ts |
Get a payload | RAW_FILE_URL/basic.ts |
Send results as a file | RAW_FILE_URL/basic.ts |
Serve static files | RAW_FILE_URL/static.ts |
Create a middleware | RAW_FILE_URL/middleware.ts |
Create a plugin | RAW_FILE_URL/plugin.ts |