- Notifications
You must be signed in to change notification settings - Fork3
🏕️ A peaceful web framework for Gleam that targets JS.
License
MystPi/glen
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
🏕️ A peaceful web framework for Gleam that targets JS.
✨ Features:
- Request & response helpers
- Helpful middleware
- File streaming
- Websockets
- Bring-your-own server(optional)
- Easily deploy on serverless platforms such asDeno Deploy
...and other nice-to-haves!
Install all requirements:
gleam add glen gleam_http gleam_javascript
Or just Glen:
gleam add glen
importgleam/javascript/promise.{typePromise}importglenimportglen/statuspubfnmain(){glen.serve(8000,handle_req)}fnhandle_req(req:glen.Request)->Promise(glen.Response){"<h1>Welcome to my webpage!</h1> <p>Make yourself at home 😄</p>"|>glen.html(status.ok)|>promise.resolve}
Glen is heavily based off ofWisp, and many of Wisp'sexamples can easily be ported to Glen. Glen also has an example application of its own in./test.
Glen'sserve
function only works on thedeno
runtime, but you can bring your own server so Glen can work on any runtime, such as Node.js (>= v17.0.0) or Cloudflare Workers. Theconvert_request
andconvert_response
functions are here to help you with this.
Cloudflare Workers example
Glen's
static
middleware will not work on the Cloudflare Workers runtime since it does not support thenode:fs
module. Everything else should work as expected.
src/index.js
import*asglenfrom'../glen/glen.mjs';import*asmy_appfrom'./my_app.mjs';exportdefault{asyncfetch(request,_env,_ctx){constreq=glen.convert_request(request);constresponse=awaitmy_app.handle_req(req);constres=glen.convert_response(response);returnres;},};
src/my_app.gleam
importgleam/javascript/promiseimportglenimportglen/statuspubfnhandle_req(_req){"On a Cloudflare worker!"|>glen.html(status.ok)|>promise.resolve}
wrangler.toml
main ="build/dev/javascript/my_app/index.js"# ...
Documentation can be found athttps://hexdocs.pm/glen.
You will need to have Gleam and a JavaScript runtime (most likely Deno) installed for developing Glen.
gleam run# Run the projectgleamtest# Run the example application
Contributions are encouraged and greatly appreciated! Please note that thechangelog should be updated accordingly (this is something that everyone has trouble remembering, including me 😅).
About
🏕️ A peaceful web framework for Gleam that targets JS.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Contributors4
Uh oh!
There was an error while loading.Please reload this page.