Guide - 7TogkID/gaman GitHub Wiki
GamanJS Quick Reference Guide
Overview
This guide provides a quick overview of useful shortcuts and features in GamanJS to enhance productivity and code clarity.
1. Route Shortcuts
GamanJS allows you to return simple responses directly from routes without needing to explicitly use Response
objects.
JSON Responses
export default defineBlock({
routes: {
"/": (ctx) => {
return { message: "OK!" };
},
},
});
This is equivalent to:
export default defineBlock({
routes: {
"/": (ctx) => {
return Response.json({ message: "OK!" });
},
},
});
Text Responses
export default defineBlock({
routes: {
"/": (ctx) => {
return "OK!";
},
},
});
This is equivalent to:
export default defineBlock({
routes: {
"/": (ctx) => {
return Response.text("OK!");
},
},
});
2. Cookies
GamanJS provides easy access to cookies via the ctx.cookies
object.
Setting Cookies
export default defineBlock({
routes: {
"/": (ctx) => {
ctx.cookies.set("userToken", "abc123", { httpOnly: true, maxAge: 3600 });
return "Cookie set!";
},
},
});
Getting Cookies
export default defineBlock({
routes: {
"/": (ctx) => {
const userToken = ctx.cookies.get("userToken");
return { token: userToken };
},
},
});
Checking for Cookies
export default defineBlock({
routes: {
"/": (ctx) => {
if (ctx.cookies.has("userToken")) {
return "User token exists.";
} else {
return "No user token found.";
}
},
},
});
3. Locals
The ctx.locals
object is a shared context for storing data during a request lifecycle. Middleware can set values in ctx.locals
, which can then be accessed in later middleware or route handlers.
Setting and Accessing Locals
export default defineBlock({
all: (ctx) => {
// Set locals in middleware
ctx.locals.userName = "Angga7Togk";
ctx.locals.userInfo = { id: 123, name: "Angga7Togk" };
},
routes: {
"/": (ctx) => {
// Access locals in route handler
const userName = ctx.locals.userName;
const userInfo = ctx.locals.userInfo;
return { name: userName, info: userInfo };
},
},
});
Best Practices
- Use Shortcuts Wisely: Take advantage of response shortcuts (
return {}
orreturn ""
) for cleaner code. - Centralize Cookie Logic: Manage cookie access and updates in a dedicated middleware for consistency.
- Leverage Locals for Shared Data: Use
ctx.locals
to pass data across middlewares and handlers within the same request lifecycle.
Future Enhancements
Stay updated as more features and utilities are added to simplify GamanJS development. Refer to the official documentation for the latest updates and examples.