云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云解析_渲染服务器_返利

小七 141 0

巢全栈TypeScript应用程序.第1部分:用巢.js本系列介绍如何使用Angular、TypeScript和巢.js. 第1部分:使用巢.js.

DR:这是一系列关于如何使用Angular和巢.js. 在第一部分中,您将学习如何使用巢.js. 本系列的第二部分是关于使用Angular的前端应用程序。您可以在GitHub存储库中找到本文中开发的最终代码。"了解如何使用@nestframework和@angular开发完整堆栈@typescriptlang应用程序。"在推特上留言是什么Nest.Js为什么要用角形呢?巢.js是一个建筑的框架节点.js服务器端web应用程序。它的特殊之处在于它解决了一个其他框架无法解决的问题:一个节点.js项目。如果您曾经尝试使用节点.js,您可能已经意识到,使用一个模块可以做很多事情(例如,快速中间件可以完成从身份验证到验证的所有事情),这可能导致项目无组织且难以支持。正如你在本文中看到的,巢.js通过提供专门处理不同问题的不同类,帮助开发人员保持代码的组织性。除此之外,是什么使结合巢.js一个好主意是巢.js深受角度的启发。例如,您会发现这两个框架都使用保护来允许或阻止对应用程序某些部分的访问,并且两个框架都提供了CanActivate接口来实现这些保护。然而,需要注意的是,尽管共享一些类似的概念,但这两个框架是相互独立的。也就是说,在本文中,您将构建一个与前端无关的API。因此,在构建API之后,您将能够将其与其他框架和库(如React)一起使用,Vue.js版,以此类推。"由于@nestframework深受@angular的启发,因此将两者结合使用非常简单!"在推特上留言餐厅订购Web应用程序您将在本教程中创建的应用程序是一个用于餐厅的简单应用程序,用户可以在线订购项目。此应用程序有一些业务规则:任何用户都可以看到该菜单项;只有已识别的用户才能向购物车添加商品(在线订购食物);并且只有管理员用户可以向菜单添加新项目。为了简单起见,您不需要与任何外部数据库交互,也不需要实现购物车功能。开始使用巢.js安装巢.js,首先,您需要安装节点.js(v.8.9.x或更新版本)和NPM。所以,去节点.js下载网站并按照说明进行下载和安装节点.js到您的操作系统(NPM附带节点.js). 完成后,您可以通过运行以下命令来检查是否一切正常:节点-v#v.8.9.0净现值-5.6.0有几种方法可以启动巢.js项目;您可以在巢.js文档。在这里,您将使用nestcli来执行此操作。要安装此工具,请运行以下命令:npm i-g@nestjs/cli#它将安装nest命令然后,可以通过运行单个命令来创建新项目。此命令将触发有关项目的一些问题,例如版本和项目名称,但您可以使用默认选项:nest new nest餐厅api#nest restaurant api这个命令将询问您以下问题:"您会选择哪个包管理器❤️ 使用"。您可以选择自己喜欢的选项,但请记住,如果选择Yarn,则必须相应地调整本文中的命令。如果一切顺利,您将在该过程结束时获得一个名为nest restaurant api的目录,其结构如下:巢餐厅api├—src│ ├── 应用程序控制器规范.ts个│ ├── 应用程序控制器.ts│ ├── 应用程序模块.ts│ ├── 应用服务.ts│ └── 主.ts├—测试│–├—应用程序e2e-规范│—jest-e2e.json├–.gitignore├—普雷蒂埃├—巢-cli.json文件├── nodemon.json├—nodemon-调试.json├── 包.json├—包装-锁定.json├── 自述文件.md├── tsconfig.build.json├── tsconfig.json文件└── tslint.json文件现在,您可以导航到此目录并键入以下命令以启动API:#进入项目cd巢餐厅api#启动开发服务器npm运行开始:dev那么,如果你去:3000在您的浏览器中,您将看到"Hello World!"页面如下:为了避免增加更多的复杂性,本文不打算教你如何为你的API编写自动化测试(尽管你应该为任何生产就绪的应用程序编写它们)。因此,您可以继续删除test目录和src/应用程序控制器规范.ts文件(与测试相关)。之后,src目录中剩余的文件将是:应用程序控制器.ts以及应用服务.ts:当通过浏览器访问端点/时,这些文件负责生成消息Hello world。删除这些文件对你来说并不重要,因为这个端点可能并不重要。很快,您将更详细地了解控制器和服务是什么。应用程序模块.ts:这是一个类型模块的类,负责向声明导入、导出、控制器和提供程序巢.js应用程序。每个应用程序都至少有一个模块,但是您可以为更复杂的应用程序创建多个模块(有关巢.js文件)。本教程的应用程序只有一个模块。主.ts:这是负责启动服务器的文件。注意:拆卸后应用程序控制器.ts以及应用服务.ts你将无法启动应用程序。别担心,你很快就会修好的。创建巢.js端点这个应用程序最重要的端点是/items,因为从那里,用户可以检索到可用的项目,管理员可以管理这些项目。所以,这是您要实现的第一个端点。为此,您必须在src中创建一个名为items的目录。您将在这个新目录中存储与/items端点相关的所有文件。创建巢.js控制器在巢.js,与其他许多框架一样,控制器负责将端点映射到功能。在中创建控制器巢.js,您可以使用@Controller修饰符,如下所示:@Controller(${ENDPOINT})。然后,为了映射不同的HTTP方法,比如GET和POST,可以使用装饰符,比如:@GET、@POST、@Delete等。因此,在您的案例中,您需要创建一个控制器,该控制器返回餐厅中可用的项目,管理员可以使用它来管理这些项目,您可以创建一个名为项目.控制器.ts在items目录中添加以下代码:从'@nestjs/common'导入{Get,Post,Controller};@控制器('项目')导出类ItemsController{@获取()async findAll():Promise{return['Pizza','Coke';}@发布()异步创建(){返回"尚未实现";}}然后,要使你的控制器在你的模块(和你的应用程序)中可用,你必须替换上的代码应用程序模块.ts包括以下内容:从'@nestjs/common'导入{Module};从'./items导入{ItemsController}/项目.控制器';@模块({进口:【】,控制器:[ItemsController],提供商:[],})导出类AppModule{}现在,你可以去:3000/项(您可能需要重新启动应用程序:npm运行开始:dev)你会得到以下回应:['Pizza','Coke']。添加巢.js服务目前,/items端点返回的数组只是一个静态数组,它是为每个请求重新创建的,不能更改。由于对持久化数据的结构的处理不应该由控制器来处理,因此您将创建一个服务来实现这一点。服务,in巢.js,是用@Injectable decorator标记的类。顾名思义,将这个修饰符添加到类中,使它们可以在其他组件(如控制器)中注入。因此,要创建此服务,可以创建一个名为项目服务.ts在./src/items目录中,添加以下代码:从'@nestjs/common'导入{Injectable};@可注射()导出类项目服务{私有只读项:string[]=['Pizza','Coke'];findAll():字符串[]{返回这个项目;}创建(项:字符串){this.items.推送(项);}}然后,您需要更改ItemsController(您在项目.控制器.ts文件)使用此服务:从'@nestjs/common'导入{Get,Post,Body,Controller};从""导入{ItemsService}/项目.服务';@控制器('项目')导出类ItemsController{构造函数(私有只读itemsService:itemsService){}@获取()async findAll():Promise{返回this.itemsService.findAll();}@发布()异步创建(@Body()项:字符串){this.itemsService.create(项);}}在新的controller()版本中,用一个新的controller()方法来修饰它。此参数用于自动映射通过发送的数据需求主体['item']到参数本身(在本例中是item)。另外,您的控制器现在获得通过构造函数注入的itemservice类的实例。ItemsService声明附带的private readonly使此实例不可更改,并且仅在类中可见。现在,要使itemservice在你的应用程序中可用,你需要更新应用程序模块.ts具体如下:从'@nestjs/common'导入{Module};从'./items导入{ItemsController}/项目.控制器';从'./items导入{ItemsService}/项目.服务';@模块({进口:【】,控制器:[ItemsController],提供商:[ItemsService],})导出类AppModule{}执行这些更改后,可以向菜单发出HTTP POST请求:curl-xpost-H'内容类型:application/json'-d'{"item":"沙拉"}'