express-beans
TypeScript icon, indicating that this package has built-in type declarations

1.2.3 • Public • Published

GitHub Snyk Vulnerabilities for GitHub Repo Scrutinizer Code Quality GitHub package.json dependency version (prod) GitHub package.json dependency version (dev) Build Status

SonarCloud Coverage Bugs

ExpressBeans

ExpressBeans is the IoC Container (Inversion of Control Container) that you didn't know you needed. If you love Node.js and the Spring Boot way of code organization this lightweight framework is for you. ExpressBeans is an almost zero dependency framework (it wraps Express.js) to offer an easy-to-use way of building your next Express project.

Get started

Try ExpressBeans with the official generator:

npm create express-beans-server

Documentation

API docs and types available in documentation.

Usage

All you need is create an ExpressBeans application and provide your RouterBean classes:

ExpressBeans.createApp({
  routerBeans: [
    ExampleRouter,
  ],
});

/* ======== OR ======== */

const application = new ExpressBeans({
  routerBeans: [
    ExampleRouter,
  ],
});

If you need also direct access to express application:

const application = new ExpressBeans({
  routerBeans: [
    ExampleRouter,
  ],
});
const expressApp = application.getApp();

Typescript 5

New decorators are here and ExpressBeans implements some simple decorators to achieve dependency injection and endpoint registration.

Example

import { Request, Response } from 'express';
import { InjectBean, Route, RouterBean } from 'express-beans';
import ExampleService from '../services/ExampleService';

@RouterBean('/example')
export default class ExampleRouter {
  @InjectBean(ExampleService)
  private exampleService!: ExampleService;

  @Route('GET', '/hello')
  getHello(_req: Request, res: Response) {
    res.end(this.exampleService.example());
  }
}

This will create a new router that expose an endpoint GET /example/hello and exampleService will be the instance of the class declared as it follow:

import { Bean } from 'express-beans';

@Bean
export default class ExampleService {
  private msg: string;

  constructor() {
    this.msg = 'hello world!';
  }

  example() {
    return this.msg;
  }
}

Installation

npm install express-beans

Package Sidebar

Install

npm i express-beans

Weekly Downloads

1

Version

1.2.3

License

MIT

Unpacked Size

61.8 kB

Total Files

45

Last publish

Collaborators

  • spaghiajoeojo