偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

用TypeScript構(gòu)建企業(yè)級(jí)應(yīng)用

開(kāi)發(fā) 前端
TypeScript從今天數(shù)以百萬(wàn)計(jì)的JavaScript開(kāi)發(fā)者所熟悉的語(yǔ)法和語(yǔ)義開(kāi)始。使用現(xiàn)有的JavaScript代碼,包括流行的JavaScript庫(kù),并從JavaScript代碼中調(diào)用TypeScript代碼。

[[428098]]

TypeScript:始于JavaScript,歸于JavaScript。

TypeScript從今天數(shù)以百萬(wàn)計(jì)的JavaScript開(kāi)發(fā)者所熟悉的語(yǔ)法和語(yǔ)義開(kāi)始。使用現(xiàn)有的JavaScript代碼,包括流行的JavaScript庫(kù),并從JavaScript代碼中調(diào)用TypeScript代碼。

TypeScript可以編譯出純凈、 簡(jiǎn)潔的JavaScript代碼,并且可以運(yùn)行在任何瀏覽器上、Node.js環(huán)境中和任何支持ECMAScript 3(或更高版本)的JavaScript引擎中。

來(lái)自 TypeScript 官方介紹

在很多前端團(tuán)隊(duì),已經(jīng)使用了 JavaScript 的情況下,期待引入一個(gè)企業(yè)級(jí)后端應(yīng)用,以前我們的選擇是基于 Node.js 的一些 Web 框架,比如 Django。今天跟大家分享另外一個(gè)可供選擇的選項(xiàng),基于 Node.js & TypeScript 的企業(yè)級(jí)應(yīng)用框架 NestJS。

為什么使用 TypesScript ,核心原因是 TypeScript 是 JavaScript 的一個(gè)超集,對(duì)于已經(jīng)熟悉 JavaScript 的同學(xué)來(lái)說(shuō),上手門(mén)檻不會(huì)太高,這樣也可以讓前端同學(xué)在有意愿的情況下,接觸到后端的應(yīng)用,今天主要聊聊怎么用 NestJS 構(gòu)建企業(yè)級(jí)應(yīng)用,也順便描述一下前端同學(xué)在寫(xiě)后端應(yīng)用一些比較核心的誤區(qū)。

首先我假設(shè)你已經(jīng)安裝好了 Node.JS 和 NPM ,NestJS 的安裝步驟只有一個(gè)。

  1. npm i -g @nestjs/cli 
  2. nest new aric-nest 

這樣NestJS 就會(huì)給我們創(chuàng)建好了一個(gè)名為 aric-nest 的項(xiàng)目,讓我們看一眼項(xiàng)目結(jié)構(gòu)。

我們最主要的文件一個(gè)是 src ,我們所有的源代碼都會(huì)放在這里。第二個(gè)就是 package.json 項(xiàng)目打包&依賴(lài)管理文件了,我們所有的打包腳本以及依賴(lài)管理都會(huì)在這里完成,這個(gè)文件一般不需要自己改動(dòng)。

跟所有 Node.js 項(xiàng)目一樣,我們的入口是 main.js,可以看出,main.js 的邏輯非常簡(jiǎn)單,就是創(chuàng)建一個(gè)新的 App,然后用 3000 端口啟動(dòng)它。

代碼實(shí)例

  1. import { Bind, Body, Controller, Get, Param, Post } from '@nestjs/common'
  2. import { AppService } from './app.service'
  3. class RequestDTO{} 
  4. class ResponseDTO{} 
  5.  
  6. @Controller() 
  7. export class AppController { 
  8.   constructor(private readonly appService: AppService) {} 
  9.  
  10.   @Get() 
  11.   getHello(): string { 
  12.     return this.appService.getHello(); 
  13.   } 
  14.  
  15.   @Get("/find/me/:id"
  16.   @Bind(Param()) 
  17.   findMe(params): string { 
  18.     return this.appService.findMe(params.id); 
  19.   } 
  20.  
  21.   @Post('/PostMe'
  22.   async PostMe(@Body() requestDTO: RequestDTO): Promise<ResponseDTO>{ 
  23.     const responseDTO  = new ResponseDTO(); 
  24.     return responseDTO; 
  25.   }  

這里給了一個(gè) Get 例子,一個(gè) restful 接口的例子,還有一個(gè)基于JSON 的 Post的例子。 可以看到 TypeScript 是支持依賴(lài)注入解釋器的(Java 里面叫注解)。具體的操作大家自行進(jìn)行操作即可。

如何使用數(shù)據(jù)庫(kù)和緩存?

既然說(shuō)到企業(yè)級(jí)應(yīng)用,最經(jīng)典的后端存儲(chǔ)系統(tǒng)不外乎關(guān)系型數(shù)據(jù)庫(kù)和緩存,這是我們不可避免的部分。在 TypeScript 里,我們可以使用 TypeORM 進(jìn)行數(shù)據(jù)庫(kù)操作,使用 ioredis 進(jìn)行 Redis 操作。

如何使用定時(shí)任務(wù)?

定時(shí)任務(wù)也是一個(gè)非常常見(jiàn)的內(nèi)容,直接使用 @nestjs/schedule 即可。

如何對(duì)外發(fā)送 http 請(qǐng)求?

直接使用 Axios 即可,是一個(gè)非??孔V的 http 模塊。

如何進(jìn)行限流?

express-rate-limit 實(shí)現(xiàn)了一個(gè)全局頻率流控,至于如何進(jìn)行接口級(jí)別,IP 級(jí)別,分布式限流,我估計(jì)還得自己實(shí)現(xiàn)一個(gè)比較靠譜,目前沒(méi)有看到非常好的實(shí)現(xiàn)。

作為入門(mén),先寫(xiě)到這里,先消化消化,就醬。

責(zé)任編輯:武曉燕 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2009-01-03 14:54:36

ibmdwWebSphere

2009-06-03 14:24:12

ibmdwWebSphere

2012-06-14 13:26:22

2013-09-30 10:19:46

SAP

2010-01-04 16:38:07

企業(yè)級(jí)Silverli

2024-05-20 11:23:18

2013-04-26 15:13:26

Ted YuHBase大數(shù)據(jù)全球技術(shù)峰會(huì)

2015-05-26 09:41:45

china-pub

2012-05-14 09:29:40

云應(yīng)用

2012-05-15 15:21:29

企業(yè)級(jí)

2011-12-01 15:29:07

2022-05-24 20:06:08

開(kāi)源應(yīng)用現(xiàn)代化數(shù)字化轉(zhuǎn)型

2009-07-07 14:19:54

2023-09-11 12:57:00

大數(shù)據(jù)大數(shù)據(jù)中臺(tái)

2009-12-14 20:13:57

IBM

2012-06-26 15:23:58

2013-07-02 13:53:48

App企業(yè)級(jí)應(yīng)用

2010-10-19 08:59:40

PHP緩存技術(shù)

2012-06-14 13:23:32

企業(yè)級(jí)移動(dòng)應(yīng)用移動(dòng)信息化

2019-03-05 12:56:41

APP企業(yè)級(jí)應(yīng)用應(yīng)用程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)