Fast, unopinionated, minimalist web framework for Node.js
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Core application creation, configuration, and server management functionality for Express applications.
Creates an Express application instance that can handle HTTP requests.
/**
* Creates an Express application instance
* @returns {Function} Express application function that handles HTTP requests
*/
function express();Usage Example:
const express = require('express');
const app = express();
// The app is now a function that can handle HTTP requests
// and has methods for routing, middleware, and configurationConfigure application behavior through settings that control various aspects of Express operation.
/**
* Set application setting to value, or return setting value if no value provided
* @param {string} setting - Setting name
* @param {any} val - Setting value (optional)
* @returns {Application|any} Application instance for chaining, or setting value
*/
set(setting: string, val?: any): Application | any;
/**
* Get application setting value
* @param {string} setting - Setting name
* @returns {any} Setting value
*/
get(setting: string): any;
/**
* Enable boolean setting (set to true)
* @param {string} setting - Setting name
* @returns {Application} Application instance for chaining
*/
enable(setting: string): Application;
/**
* Disable boolean setting (set to false)
* @param {string} setting - Setting name
* @returns {Application} Application instance for chaining
*/
disable(setting: string): Application;
/**
* Check if boolean setting is enabled
* @param {string} setting - Setting name
* @returns {boolean} True if setting is enabled
*/
enabled(setting: string): boolean;
/**
* Check if boolean setting is disabled
* @param {string} setting - Setting name
* @returns {boolean} True if setting is disabled
*/
disabled(setting: string): boolean;Usage Examples:
// Configure application settings
app.set('port', 3000);
app.set('view engine', 'ejs');
app.set('views', './views');
// Get setting values
const port = app.get('port'); // 3000
const viewEngine = app.get('view engine'); // 'ejs'
// Enable/disable boolean settings
app.enable('trust proxy');
app.disable('x-powered-by');
// Check setting status
if (app.enabled('trust proxy')) {
console.log('Trust proxy is enabled');
}Start HTTP server and handle incoming requests.
/**
* Start HTTP server listening on specified port
* @param {number} port - Port number (optional, defaults to 80)
* @param {string} hostname - Hostname (optional)
* @param {number} backlog - Connection backlog (optional)
* @param {Function} callback - Callback when server starts (optional)
* @returns {Server} Node.js HTTP Server instance
*/
listen(port?: number, hostname?: string, backlog?: number, callback?: Function): Server;
listen(port?: number, hostname?: string, callback?: Function): Server;
listen(port?: number, callback?: Function): Server;
listen(callback?: Function): Server;Usage Examples:
// Basic server startup
app.listen(3000, () => {
console.log('Server running on port 3000');
});
// With hostname
app.listen(3000, 'localhost', () => {
console.log('Server running on localhost:3000');
});
// Store server reference for later use
const server = app.listen(3000);
server.close(() => {
console.log('Server closed');
});Mount middleware functions that process requests and responses.
/**
* Mount middleware function(s) at application level
* @param {...Function} handlers - Middleware functions
* @returns {Application} Application instance for chaining
*/
use(...handlers: Function[]): Application;
/**
* Mount middleware function(s) at specific path
* @param {string} path - Path pattern
* @param {...Function} handlers - Middleware functions
* @returns {Application} Application instance for chaining
*/
use(path: string, ...handlers: Function[]): Application;Usage Examples:
// Application-level middleware
app.use(express.json());
app.use(express.static('public'));
// Path-specific middleware
app.use('/api', authenticateMiddleware);
app.use('/admin', authMiddleware, adminMiddleware);
// Multiple middleware functions
app.use(loggingMiddleware, corsMiddleware, securityMiddleware);Handle HTTP requests for specific paths and methods.
/**
* Create new route for specified path
* @param {string} path - Route path pattern
* @returns {Route} Route instance for method chaining
*/
route(path: string): Route;
/**
* Handle all HTTP methods for specified path
* @param {string} path - Route path pattern
* @param {...Function} handlers - Route handler functions
* @returns {Application} Application instance for chaining
*/
all(path: string, ...handlers: Function[]): Application;
// Common HTTP method handlers
get(path: string, ...handlers: Function[]): Application;
post(path: string, ...handlers: Function[]): Application;
put(path: string, ...handlers: Function[]): Application;
delete(path: string, ...handlers: Function[]): Application;
patch(path: string, ...handlers: Function[]): Application;
options(path: string, ...handlers: Function[]): Application;
head(path: string, ...handlers: Function[]): Application;
// Additional HTTP methods (Express supports all Node.js HTTP methods)
acl(path: string, ...handlers: Function[]): Application;
bind(path: string, ...handlers: Function[]): Application;
checkout(path: string, ...handlers: Function[]): Application;
connect(path: string, ...handlers: Function[]): Application;
copy(path: string, ...handlers: Function[]): Application;
link(path: string, ...handlers: Function[]): Application;
lock(path: string, ...handlers: Function[]): Application;
merge(path: string, ...handlers: Function[]): Application;
mkactivity(path: string, ...handlers: Function[]): Application;
mkcalendar(path: string, ...handlers: Function[]): Application;
mkcol(path: string, ...handlers: Function[]): Application;
move(path: string, ...handlers: Function[]): Application;
notify(path: string, ...handlers: Function[]): Application;
propfind(path: string, ...handlers: Function[]): Application;
proppatch(path: string, ...handlers: Function[]): Application;
purge(path: string, ...handlers: Function[]): Application;
query(path: string, ...handlers: Function[]): Application;
rebind(path: string, ...handlers: Function[]): Application;
report(path: string, ...handlers: Function[]): Application;
search(path: string, ...handlers: Function[]): Application;
source(path: string, ...handlers: Function[]): Application;
subscribe(path: string, ...handlers: Function[]): Application;
trace(path: string, ...handlers: Function[]): Application;
unbind(path: string, ...handlers: Function[]): Application;
unlink(path: string, ...handlers: Function[]): Application;
unlock(path: string, ...handlers: Function[]): Application;
unsubscribe(path: string, ...handlers: Function[]): Application;Usage Examples:
// Individual route handlers
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.post('/users', (req, res) => {
res.json({ message: 'User created' });
});
// Route chaining
app.route('/books')
.get((req, res) => res.send('Get books'))
.post((req, res) => res.send('Add book'))
.put((req, res) => res.send('Update book'));
// Handle all methods
app.all('/secret', (req, res) => {
res.send('Secret area');
});Configure and use template engines for rendering views.
/**
* Register template engine for file extension
* @param {string} ext - File extension (without dot)
* @param {Function} fn - Template engine function
* @returns {Application} Application instance for chaining
*/
engine(ext: string, fn: Function): Application;
/**
* Render view template with local variables
* @param {string} name - View name
* @param {object} options - Local variables for view (optional)
* @param {Function} callback - Callback function (optional)
*/
render(name: string, options?: object, callback?: Function): void;Usage Examples:
// Register template engine
app.engine('hbs', require('handlebars').__express);
// Set default template engine
app.set('view engine', 'hbs');
app.set('views', './views');
// Render view (typically done in route handlers via res.render)
app.render('index', { title: 'Home' }, (err, html) => {
if (err) throw err;
console.log(html);
});Add callbacks that trigger when route parameters are present.
/**
* Add callback for route parameter
* @param {string} name - Parameter name
* @param {Function} fn - Callback function
* @returns {Application} Application instance for chaining
*/
param(name: string, fn: Function): Application;
/**
* Add callback for multiple route parameters
* @param {string[]} names - Array of parameter names
* @param {Function} fn - Callback function
* @returns {Application} Application instance for chaining
*/
param(names: string[], fn: Function): Application;Usage Examples:
// Single parameter callback
app.param('userId', (req, res, next, id) => {
// Find user by id and attach to request
User.findById(id, (err, user) => {
if (err) return next(err);
if (!user) return next(new Error('User not found'));
req.user = user;
next();
});
});
// Multiple parameters
app.param(['id', 'page'], (req, res, next, value) => {
// Validate numeric parameters
if (!/^\d+$/.test(value)) {
return next(new Error('Invalid parameter'));
}
next();
});
// Now routes with :userId will trigger the callback
app.get('/users/:userId', (req, res) => {
res.json(req.user); // User was loaded by param callback
});Get the absolute pathname of the application based on its mount path.
/**
* Get absolute pathname based on parent applications mount path
* @returns {string} Absolute path string
*/
path(): string;Usage Examples:
// Main application
const mainApp = express();
console.log(mainApp.path()); // ''
// Sub-application mounted on /admin
const adminApp = express();
mainApp.use('/admin', adminApp);
console.log(adminApp.path()); // '/admin'
// Nested sub-application
const userApp = express();
adminApp.use('/users', userApp);
console.log(userApp.path()); // '/admin/users'/**
* Application-level local variables available to all templates
*/
locals: object;
/**
* Path patterns on which app was mounted
*/
mountpath: string | string[];
/**
* Application settings object
*/
settings: object;
/**
* Template engine cache
*/
engines: object;
/**
* Compiled view cache
*/
cache: object;
/**
* Parent application (when this app is mounted as sub-app)
*/
parent: Application;
/**
* Reference to lazy-loaded router instance
*/
router: Router;Usage Examples:
// Set global template variables
app.locals.siteName = 'My Website';
app.locals.version = '1.0.0';
// Check mount path
console.log(app.mountpath); // '/' for main app
// Access settings
console.log(app.settings.env); // 'development' or 'production'