Skip to main content

Alosaur Lite

Intro#

Lightweight version of Alosaur (2.4kb, gzip, one file) without dependencies. Specially designed to work with deno deploy.

Features#

  • Controllers
  • Actions methods (GET, POST, etc)
  • Serve static files
  • Render pages (React jsx, markdown files)

Example#

Basic#

import {App, Content, Controller, Get, Param, QueryParam} from "https://deno.land/x/alosaur_lite/dist/mod.js";
@Controller()export class MainController {  @Get()  indexPage() {    return "index page";  }
  @Get("/home")  homePage() {    return "home page";  }
  @Get("/json")  jsonPage() {    return {data: "test"};  }
  @Get("/not")  notPage() {    return Content("Not authorized", 401);  }
  @Get("/page/:id")  paramPage(@Param("id") id: string, @QueryParam('filter') filter: string) {    return `Id: ${id} Filter: ${filter}`;  }}
const app = new App({  controllers: [MainController],});
addEventListener("fetch", (event: FetchEvent) => {  event.respondWith(app.handleRequest(event.request));});

Serve static files#

app.useStatic({      root: import.meta.url,      index: "index.html",      baseRoute: "/www/",    } // or undefined for default route /);

Render pages#

app.useViewRender({  type: "react",  basePath: `/views/`,  getBody: async (path: string, model: Object, config: any) =>      await getPage(path, model),});

Render markdown files#

Example: https://github.com/alosaur/alosaur-lite/tree/master/examples/markdown

Demo: https://alosaur-lite-markdown.deno.dev/