What is @nestjs/core?
The @nestjs/core package is the core foundation of the NestJS framework, a framework for building efficient, reliable and scalable server-side applications. It provides out-of-the-box application architecture which allows developers and teams to create highly testable, scalable, loosely coupled, and easily maintainable applications.
What are @nestjs/core's main functionalities?
Module System
NestJS uses a module system to organize code into separate modules. This code sample demonstrates how to define a basic module in NestJS.
import { Module } from '@nestjs/common';
@Module({
imports: [],
controllers: [],
providers: [],
})
export class AppModule {}
Dependency Injection
NestJS provides a powerful dependency injection system, allowing classes to define their dependencies through the constructor. This code sample shows how to inject a service into another.
import { Injectable } from '@nestjs/common';
@Injectable()
export class MyService {
constructor(private otherService: OtherService) {}
}
Controllers and Routing
NestJS allows for easy setup of controllers and routing. This code sample demonstrates defining a controller with a single route that returns a simple string.
import { Controller, Get } from '@nestjs/common';
@Controller('my-route')
export class MyController {
@Get()
getHello(): string {
return 'Hello World!';
}
}
Other packages similar to @nestjs/core
express
Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications. While it is less opinionated than NestJS, requiring more manual setup for structure and architecture, it serves as the underlying HTTP server framework for NestJS.
fastify
Fastify is a fast and low overhead web framework for Node.js. It is designed to be as efficient and fast as possible, similar to Express but with a focus on speed and performance. NestJS can use Fastify as an alternative HTTP server to Express, offering developers a choice based on their performance needs.
hapi
Hapi is a rich framework for building applications and services, offering a powerful plugin system. It is designed to be more configurable and extensible than Express, providing a robust set of features out of the box. While it shares some similarities with NestJS in terms of offering a structured approach to application development, it does not enforce a specific architecture or dependency injection system.
Modern, powerful web application framework for Node.js.
Description
Nest is a powerful web framework for Node.js, which helps you effortlessly build efficient, scalable applications. It uses modern JavaScript, is built with TypeScript and combines best concepts of both OOP (Object Oriented Progamming) and FP (Functional Programming).
It is not just another framework. You do not have to wait for a large community, because Nest is built with awesome, popular well-known libraries - Express and socket.io! It means, that you could quickly start using framework without worrying about a third party plugins.
Installation
Git:
$ git clone https://github.com/kamilmysliwiec/nest-typescript-starter.git project
$ cd project
$ npm install
$ npm run start
NPM:
$ npm i --save @nestjs/core @nestjs/common @nestjs/microservices @nestjs/websockets @nestjs/testing reflect-metadata rxjs
Philosophy
JavaScript is awesome. This language is no longer just a trash to create simple animations in the browser. Right now, the front end world is rich in variety of tools. We have a lot of amazing frameworks / libraries such as Angular, React or Vue, which improves our development process and makes our applications fast and flexible.
Node.js gave us a possibility to use this language also on the server side. There are a lot of superb libraries, helpers and tools for node, but non of them do not solve the main problem - the architecture.
We want to create scalable, modern and easy to maintain applications. Nest helps us with it.
Features
- Easy to learn - syntax is similar to Angular
- Compatible with both TypeScript and ES6 (I strongly recommend to use TypeScript)
- Based on well-known libraries (Express / socket.io) so you could share your experience
- Supremely useful Dependency Injection, built-in Inversion of Control container
- Hierarchical injector - increase abstraction in your application by creating reusable, loosely coupled modules with type injection
- Own modularity system (split your system into reusable modules)
- WebSockets module (based on socket.io)
- Reactive microservices support with messages patterns (transport via TCP / Redis)
- Exceptions handler layer
- Testing utilities
Documentation & Quick Start
Documentation & Tutorial
Starter repos
Useful references
People
Backers
I am on a mission to provide an architecture to create truly flexible, scalable and loosely coupled systems using Node.js platform. It takes a lot of time, so if you want to support me, let's become a backer / sponsor. I'll appreciate each help. Thanks!
License
MIT