- vừa được xem lúc

NestJS - framework thần thánh cho Nodejs

0 0 48

Người đăng: Lao Văn Tuấn

Theo Viblo Asia

Đọc thì có vẻ giật tít nhưng khoan, mọi chuyện không như bạn nghĩ, hãy nghe mình giải thích ?

1. Tại sao lại là NestJS?

Theo bạn, vấn đề lớn nhất của NodeJS là gì? Sẽ nhiều bạn nghĩ là performance. Nhưng đó thực sự không phải là vấn đề lớn đối với NodeJS. Performance của NodeJS không tệ như bạn nghĩ mà ngược lại còn khá ổn. Dĩ nhiên là không thể so sánh với C++ hay Go, Java. Nhưng nó đáp ứng đủ phần lớn các nhu cầu cho một hệ thống backend có hàng triệu người dùng.

Trong những năm gần đây, nhờ có NodeJs, JavaScript đã trở thành một ngôn ngữ tuyệt vời trên web cho cả ứng dụng frontend và backend. NodeJS giúp cải thiện năng suất của nhà phát triển và cho phép tạo ra các ứng dụng một cách nhanh chóng, testable và scalable. Tuy nhiên, trong khi có rất nhiều framework cho NodeJS, không có framework nào giải quyết hiệu quả vấn đề chính của NodeJS - vấn đề về Architecture

Nest (NestJS) is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with and fully supports TypeScript (yet still enables developers to code in pure JavaScript) and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).

Nest provides an out-of-the-box application architecture which allows developers and teams to create highly testable, scalable, loosely coupled, and easily maintainable applications. The architecture is heavily inspired by Angular.

Đây là những gì được viết trên trang chủ của NestJS, và bạn có thể hình dung được sơ qua được NestJS rồi đấy!

2. Vậy NestJS có những gì?

  • NestJS tương thích với cả TypescriptJavascript thuần, default là Typescript.
  • Design Pattern xuyên suốt NestJS là Dependency Injection, và cú pháp của NestJS rất giống Angular. Nên nếu bạn đã có kiến thức về Angular thì việc bắt đầu với NesJS sẽ khá dễ dàng.
  • NestJS có rất nhiều module hỗ trợ bạn, từ việc hot reload, logger cho đến GraphQL, Websocket rồi cqrs pattern, microservices,... Bạn chỉ cần NestJS để làm tất cả mọi thứ.
  • Module microservices của NestJS hỗ trợ đủ loại kết nối: RabbitMQ, gRPC, Kafka, Redis,... đây là một trong những điều mình rất thích, mình chỉ cần tập trung vào code cho phần business, còn infra thì NestJS đã implement sẵn chỉ việc dùng.

3. First step

Đầu tiên bạn hãy cài đặt @nestjs/cli và khởi tạo project của bạn.

$ npm i -g @nestjs/cli
$ nest new project-name

nestjs/cli sẽ genarate một project có cấu trúc

src ├──app.controller.ts ├──app.module.ts ├──main.ts

Chạy ứng dụng của bạn với câu lệnh:

$ npm run start

4. Đi vào sâu hơn chút

Tạo một module mới:

nest generate module user-module

File user-module sẽ như sau:

// user-module.module.ts
import { Module } from ‘nestjs/common’;
@Module({})
export class UserModule{} 

Nó sẽ được import vào AppModule:

//app.module.ts
import { Module } from ‘@nestjs/common’;
import { AppController } from ‘./app.controller’;
import { AppService } from ‘./app.service’;
import { UserModuleModule } from ‘./user-module/user-module.module’;
@Module({ imports: [UserModuleModule], controllers: [AppController], providers: [AppService],
})
export class AppModule {}

Như vậy là bạn đã có một module mới rồi, hãy tạo controller và service cho nó:

$ cd src/user-module
$ nest generate provider user-service
$ nest generate controller user-controller

File service sẽ như sau:

// user-service.ts
import { Injectable } from ‘@nestjs/common’;
@Injectable()
export class UserService { getUser(){ return “User”; }
}

Các bạn có thể thấy @Injectable() để inject UserService, khá giống Angular và Java Spring nhỉ? ?

Tiếp đến là controller:

// user-controller.controller.ts
import { Controller,Get } from '@nestjs/common';
import {UserService} from '../user-service';
@Controller('user-controller')
export class UserControllerController { constructor(private readonly service:UserService){} @Get() getUser(){ return this.service.getUser() }
}

Như vậy là khi truy cập vào http://localhost:3000/user-controller server sẽ trả về “User” rồi.

5. Kết luận

Đây chỉ là bài viết giới thiệu về NestJS, một framework còn khá mới (ra mắt 2017) mà theo mình là rất đáng để tìm hiểu. Hi vọng bài viết sẽ giúp các bạn có thêm sự lựa chọn cho backend server

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 499

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 374

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 701

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 335

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 420

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 414