Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
February 25, 2022 10:09 pm GMT

0 - Nest JS from scratch

Installation des dpendances

Pour l'occasion, crons un dossier vide:

mkdir 0-nest-from-scratchcd 0-nest-from-scratch

Dans un premier temps, il faut initialiser npm.

npm init

Installation des dpendances de dveloppement:

npm i -D @[email protected] @types/node

Installation des dpendances:

npm i @nestjs/core @nestjs/common @nestjs/platform-express reflect-metadata

Configuration de Typescript

La premire chose faire dans un projet typescript est de configurer typescript via le fichier tsconfig.json

{  "include": ["src/**/*"],   "compilerOptions": {    "module": "CommonJS",    "target": "ES2017",    "outDir": "dist",    "experimentalDecorators": true  }}

Cration d'un module

Une application NestJS, a commence par un module.
Donc on va crer le fichier src/app.module.ts.

Un module c'est une classe exporte sur laquelle on applique le dcorateur @Module qui nous vient de @nestjs/common.

import { Module } from '@nestjs/common';@Module({})export class AppModule {}

Cration d'un controlleur

C'est bien beau d'avoir un module mais faut-il encore en faire quelque chose.
Et pour cela nous allons crer un controlleur.
Un controlleur c'est une classe exporte sur laquelle on applique le dcorateur @Controller import de @nestjs/common.

import { Controller } from '@nestjs/common';@Controller()export class AppController {}

Pour le moment, notre controlleur n'est pas trs utile...
Nous allons donc lui ajouter une mthode sayHello qui retournera la string Hello Nest.

import { Controller } from '@nestjs/common';@Controller()export class AppController {  sayHello(): string {    return 'Hello Nest';  }}

Une mthode, c'est bien. Une route, c'est mieux!
Pour transformer la mthode sayHello en routeur http, il suffit de lui appliquer le dcorateur @Get()

import { Controller, Get } from '@nestjs/common';@Controller()export class AppController {  @Get()  sayHello(): string {    return 'Hello Nest';  }}

Pour en finir avec notre super controlleur, ajoutons-le tout simplement dans le module que nous avons cr prcdemment.
Ajoutons la classe AppController dans la section controllers des options de notre module.

import { Module } from '@nestjs/common';import { AppController } from './app.controller';@Module({  controllers: [AppController]})export class AppModule {}

Un fichier de dmarrage: main.ts

Top!
Maintenant que nous avons un module et un controlleur, il va nous falloir dmarrer notre application.

Pour raliser ce miracle, nous allons crer un fichier main.ts qui va se charger de compiler le module et lancer le serveur.
On commence par crer une fonction asynchrone que l'on appellera bootstrap.
Et ensuite on l'execute.

async function bootstrap() {}bootstrap();

l'intrieur de la fonction bootstrap, crons une variable app qui va recevoir le rsultat awaiter de NestFactory.create() avec notre AppModule en paramtre.

import { NestFactory } from '@nestjs/core';import { AppModule } from './app.module';async function bootstrap() {  const app = await NestFactory.create(AppModule);}bootstrap();

Finalement, on await la fonction app.listen() sur le port 3000.

import { NestFactory } from '@nestjs/core';import { AppModule } from './app.module';async function bootstrap() {  const app = await NestFactory.create(AppModule);  await app.listen(3000)}bootstrap()

Il ne reste plus qu' retourner dans le terminal pour transpiler et tester notre superbe API.

Compiler, lancer et tester

De retour dans le terminal, on peut utiliser la commande tsc installe par typescript pour transpiler dans le dossier dist.

node_modules/.bin/tsc

Une fois la transpilation termine, on peut lancer notre API via commande:

node dist/main.js

Et pour tester, un petit curl des familles sera du meilleur des gots.

curl http://localhost:3000

questions?

Je serai heureux de rpondre toutes vos questions en commentaires

Discord Webeleon

Code sur github


Original Link: https://dev.to/webeleon/0-nest-js-from-scratch-20b1

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To