成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

NestJS:我們一直在等待的精美的Node.js框架

新聞
NestJS是一個精心制作的服務器端(后端)應用程序框架,以支持開發人員的生產力并讓他們的生活更加快樂。

 NestJS:我們一直在等待的精美的Node.js框架

NestJS是一個精心制作的服務器端(后端)應用程序框架,以支持開發人員的生產力并讓他們的生活更加快樂。

那么,它不僅是一個框架,它還是進入領域驅動設計,事件采購,微服務架構等先進工程概念領域的推動者。 所有軟件包都以簡單輕量級的形式打包,以便您可以選擇 - 無論您決定使用整個框架還是僅重新使用其組件。

我是一個 PHP 編寫的 Symfony 框架的粉絲。 在我的職業生涯中,我花了好幾年的時間開發大型應用程序,它并沒有讓我失望。 它寫得很好,作為一個客觀的,具有良好文檔的模塊化 Web 框架,提供了良好的開發者體驗。 與我描述 NestJS 完全一樣。

Node.js 和包管理器 NPM 提供了功能全面的服務器端環境,靈活性強,運行速度極快,對開發人員來說具有巨大的靈活性,從而將開發到生產的時間縮短到幾小時,而不是幾天。

[[223298]]

然而,盡管 Node.js 的優點很多,但它并不能解決最常見的問題,在我看來,這是***的問題,所有的 NodeJS 現代框架似乎都沒有受到熏陶 - 架構的靈活性。

有人可能會說 - 這不是決定項目架構的框架問題。 那么,我完全同意這一點,但是我們幾乎在每個項目中都會看到一些眾所周知的概念和模式。 在我看來,如果一個框架將開發人員推向了良好的架構決策,這是一件好事。

NestJS 到底是什么?

根據該項目的網站:

NEST 是構建高效,可擴展的 NodeJS 服務器端應用程序的框架。

這與 Node.js 語言相同,所以區別在哪里? 那么,重點是在細節:

它使用現代JavaScript,使用Typescript(保留與純 JavaScript 的兼容性)構建,并結合了OOP,FP 和 FRP 的元素。

就是這樣。 Nest 框架以一種非?;钴S的方式鼓勵開發人員嘗試,學習和使用一些著名的軟件工程范例。這不僅是介紹性的口號 - 在項目文檔中我們找到了很多示例,指導和代碼源,以便我們可以在幾分鐘內在項目中使用它們。

此外,所有這些新詞匯的 NestJS 給我們參考它背后的知識。 所以如果你不知道一些模式 - 不用擔心,你將會順利地完成整個過程。

一些特性

NestJS 是一個完全用 TypeScript 編寫的框架(它也支持 JS),它很容易測試,并且帶來了所有必要的東西,你總是但您不知道該選什么。

  • 依賴注入容器 - NestJS 帶有自己的DiC,這是一個在 JavaScript 世界中似乎被遺忘的實用工具,但我真的不能沒有它。 有一些解決方案像 InversifyBottle,但 NestJS 有自己的解決方案。 它也支持工廠注入。
  • 模塊化 - 在NestJS中,處于相同域邊界內的應用程序的每個邏輯部分都是一個模塊,它鼓勵封裝。
  • 可測試性 - 由于引入了 DiC 和 Modularisation,您可以根據服務構建應用程序, 使控制器的工作更容易進行測試。
  • 使用 TypeScript中 - 類型很好。 你可以給一個變量分配類型,減少可能出現的錯誤。

入門:構建一個簡單的天氣應用程序

在這篇文章中,我們將使用 Nest 框架和 OpenWeatherMap API 編寫一個簡單的天氣應用程序。

準備項目

首先,讓我們確保你已經安裝了支持的 Node.js 版本:

node -v

需要高于 6.11.0 。 如果您沒有安裝Node.js或版本不正確,請安裝更新。

第二步是從 OpenWeatherMap 網站檢索API密鑰。 為了實現我們需要注冊的功能,成功注冊后,我們將能夠從 API密鑰標簽中檢索我們的API密鑰

準備就緒了。 讓我們來設置這個項目。 為此,我將使用 Nest 的 TypeScript 初學者存儲庫(還有一種方法可以從頭開始構建項目,但我很懶)。 它提供了良好的初學者體驗,并擁有開始編寫代碼所需的一切。

$ git clone https://github.com/nestjs/typescript-starter.git project

$ cd weather-app /

安裝依賴關系并啟動:

$ npm i

$ npm run start

當安裝了項目依賴關系并且應用程序成功啟動后,您應該在控制臺中看到以下輸出,并在瀏覽器中指向 http://localhost:3000/ 的url,應該會給您熱情而歡迎的Hello World! 文本。

> nest-typescript-starter@1.0.0 start /Users/mat/Development/weather-app> node index.js

[Nest] 31827 - 2018-1-13 11:39:32 [NestFactory] Starting Nest application...

[Nest] 31827 - 2018-1-13 11:39:32 [InstanceLoader] ApplicationModule dependencies initialized +7ms

[Nest] 31827 - 2018-1-13 11:39:32 [RoutesResolver] AppController {/}: +34ms

[Nest] 31827 - 2018-1-13 11:39:32 [RouterExplorer] Mapped {/, GET} route +2ms

[Nest] 31827 - 2018-1-13 11:39:32 [NestApplication] Nest application successfully started +1ms

安裝 HTTP 客戶端

我們已經建立了項目,獲取天氣數據的 API密鑰和開發服務器,隨時準備交付。

我們現在安裝一個HTTP客戶端,在這個區域我的個人偏好是 axios 。 為什么選擇axios? 這是一個基于Promise 的客戶端,它支持服務器端和客戶端,并提供許多有用的功能,如:對JSON轉換的自動響應和專用的工具 - moxios--使測試變得順暢和輕松。

$ npm i --save axios

建立***個服務

現在我們可以開始構建我們的***個服務

為了做到這一點,讓我們在我們的 src/ 文件夾中創建一個名為 weather.service.t s的文件:

import { Component } from '@nestjs/common';

import axios, { AxiosInstance } from 'axios';

@Component()

export class WeatherService {

private client: AxiosInstance;

constructor() {

this.client = axios.create({

baseURL: 'https://api.openweathermap.org/data/2.5/',

params: {

APPID: 'CHANGE_ME'

}

});

}

async ofCity(city: string): object {

const response = await this.client.get('weather', {

params: { q: city }

});

return response.data;

}

}

我們正在創建一個封裝 HTTP 客戶端的類,以實現實際的 API 調用。 有一點需要注意的是類裝飾器 @Component(),多虧了它,框架才會知道這是我們想要在 DiC 中注冊的組件。 它有一種方法,這是異步的 - 它會返回一個Promise - 返回到控制器將由 Nest 處理。

HTTP通信層

接下來我們需要建立的是控制器。 在src /文件夾中創建一個名為 weather.controller.ts 的文件:

import { Get, Controller } from '@nestjs/common';

import { WeatherService } from './weather.service';

@Controller('weather')

export class WeatherController {

constructor(private readonly weatherService: WeatherService) {}

@Get()

async root(): Promise< object > {

const response = await this.weatherService.forCity('New York');

return response;

}

裝飾器 @Controller('weather')告訴框架我們期望這個控制器在 / weather 路由上作出響應。

然后,我們在類構造函數中注入了我們的 WeatherService ,并將其設置為名為weatherService 的私有屬性。

***是一個稱為 root 的異步操作,它返回一個Promise,最終解析為一個對象。 它內部調用我們的 weatherService 并獲得紐約的實際天氣預報。

連接點

為了使我們的應用程序正常工作,我們需要做的***一件事是將應用程序模塊中的所有部分連接在一起:

import { Module } from '@nestjs/common';

import { AppController } from './app.controller';

import { WeatherController } from './weather.controller';

import { WeatherService } from './weather.service';

@Module({

imports: [],

controllers: [AppController, WeatherController],

components: [WeatherService],

})export class ApplicationModule {}

保存文件,重啟你的開發服務器,當你在瀏覽器中導航到url http://127.0.0.1:3000/weather 時,你會看到天氣服務的響應。

上面的代碼是為了顯示我們如何快速地在 NestJS 中構建一個好的東西。然而, 我看到一些改進, 這還沒有做, 因為我想保持簡單:

  • 返回類型的接口。 我們可以充分利用 TypeScript 和強類型所有的東西
  • 錯誤處理。 當 promise 不是 resolve 時,我們的控制器很可能會中斷
  • 測試套件。 我們還沒有寫任何測試
  • 我們要返回整個數據 blob。我們只能去掉我們關心的值

概要

我們從理論上討論了NestJS并做了一個實際的例子。 欲了解更多信息,請參閱框架的官方文檔,其中包含大量隨時可用的指導和代碼片段。

Node.js 是為了擴展和實現實時網絡應用程序的高效開發而創建的,它非常好。

現在我們已經有了 NestJS 框架來解決架構問題。

中文文檔: https://docs.nestjs.cn

英文官方文檔:https://docs.nestjs.com

責任編輯:何星 來源: 51CTO
相關推薦

2023-09-13 11:19:49

2023-09-13 17:08:31

2020-05-29 15:33:28

Node.js框架JavaScript

2012-05-18 00:01:07

JVMJavaJVM平臺

2022-10-18 18:43:40

Node.js低代碼

2019-08-29 10:58:02

Web 開發框架

2021-08-07 07:56:59

Node邏輯對象

2017-07-06 11:08:12

開源云計算EasyStack

2017-04-10 13:28:32

Node.jsJavaScript

2020-08-07 10:40:56

Node.jsexpress前端

2020-04-20 16:00:05

Node.js框架JavaScript

2020-07-15 08:06:04

Node.js框架開發

2014-03-07 13:43:32

Node.jsNode

2016-07-20 17:19:21

SDN軟件定義網絡SDN商用

2012-03-07 14:32:41

Node.js

2014-10-30 10:28:55

Node.js

2021-08-03 06:57:37

模式Nodejs

2021-10-12 23:45:43

NodeJs事件

2012-01-10 10:04:43

Node.js
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: h视频在线播放 | 日本一区二区三区免费观看 | 午夜亚洲 | 一区二区三区在线观看视频 | 在线一区视频 | 欧美综合一区二区三区 | 91在线播| 粉嫩粉嫩芽的虎白女18在线视频 | 欧美精品二区 | 久草免费视 | 国产精品久久 | 国产精品久久久久久久久久久久久久 | 欧美一区二区三区久久精品 | 欧美亚洲另类丝袜综合网动图 | 一区二区三区四区日韩 | 日日综合| 欧美男人亚洲天堂 | 91精品国产91久久久久久吃药 | 亚洲国产成人精品女人久久久 | 日韩在线视频免费观看 | 中文字幕一区二区三区精彩视频 | 亚洲一区二区在线 | 天堂一区二区三区 | 国产一区在线免费观看 | 人人九九精 | 亚洲欧美在线免费观看 | 91视频在线 | 精品在线视频播放 | 精品粉嫩aⅴ一区二区三区四区 | 日本不卡一区二区三区 | 日本视频在线播放 | 亚洲视频免费 | 自拍视频一区二区三区 | 中文字幕视频一区二区 | 精品日韩在线观看 | 久草精品视频 | 午夜a v电影| 黄色av大片 | 99精品久久久久 | 亚洲综合资源 | 国产大学生情侣呻吟视频 |