易于学习的.NET 6.0和Angular——Angular模板入门——第1部分
目录
介绍
背景
先决条件
使用代码
使用Angular模板创建ASP.NET Core
带有Startup.cs的Visual Studio 2019
Visual Studio 2022不需要Startup.cs
顶级语句
新的Angular文件部分
aspnetcore-https.js
proxy.conf.js
构建并运行应用程序
当月项目明智的销售细节制作
创建模型类
创建API控制器类:
Angular部分
home组件
home.component.html
构建并运行
兴趣点
- 下载源代码 - 452.5 KB
介绍
一直以来,我都计划发布.NET 6.0和Angular系列文章。在本系列中,我计划发表以下文章:
- 易于学习的.NET 6.0和Angular——Angular模板入门——第1部分
- 易于学习的.NET 6.0和Angular——Angular独立模板入门——第2部分
- 易于学习的.NET 6.0和Angular——管理员LTE设计入门——第3部分
- 易于学习的.NET 6.0和Angular——多语言入门——第4部分
- 易于学习的.NET 6.0和Angular——发布到IIS入门——第5部分
在本文中,我们将详细了解如何使用Visual Studio 2022中提供的Angular模板开始使用.NET 6.0和Angular。
.NET 6.0在性能上有更多的改进,其中包括一个主要优势,因为它具有智能代码编辑,并且被称为最快的全栈Web框架。.NET 6.0还在文件流中提供了更好的性能。
当您使用Visual Studio 2022创建一个新的Angular模板项目时,您会注意到ASP.NET Core 6.0和Angular 13版本已被使用,因为.NET6.0和Angular 13都是新版本,当然,它会非常有趣和学习和处理新事物的乐趣。
背景
先决条件
- Visual Studio 2022
- Node.js——如果您没有Node.js,请安装Node.js(下载链接)
使用代码
使用Angular模板创建ASP.NET Core
安装上面列出的所有先决条件并单击桌面上的开始>>程序>> Visual Studio 2022 >> Visual Studio 2022 。单击新建>>项目。
搜索Angular Template并选择ASP.NET Core with Angular并单击Next。
输入您的项目名称,然后单击Next。
现在我们可以看到框架是.NET 6.0(长期支持)。单击创建按钮。
当我们创建项目时,我们可以看到如下的解决方案结构:
在这里,我们可以看到添加了一些有趣的新文件,我们还可以看到,在Visual Studio中,没有Startup.cs文件,这是2019版本中ASP.NET Core项目的主类。
带有Startup.cs的Visual Studio 2019
如果您使用过ASP.NET MVC和ASP.NET Core,您可能知道Startup.cs类。因为这个类是所有.NET和.NET Core应用程序的主要类。这个Startup.cs类包含configure和configureService方法。因为这个类用于在ConfigureService中注册应用程序所需的所有服务,并且configure方法用作控制应用程序的中间件管道。
Visual Studio 2022不需要Startup.cs
当我们创建ASP.NET Core 6.0和Angular应用程序时,Startup.cs类文件将丢失。是的,现在所有Configure和ConfigureService相关的所有服务都将添加到Program.cs文件中。
例如,如果我们需要添加连接字符串并需要添加DBContext,那么我们可以使用builder.Service.AddDbContext()将其添加到Program.cs文件中。要添加所有服务,我们可以使用我们可以看到的builder对象来添加DBContext服务,我们使用builder.Service.AddDbContext()。
我们可以看到,由于program.cs文件中没有main方法、类和using头,不要慌,是的,现在在.NET 6.0中,代码变得更简单了,智能代码支持似乎更高级了现在它更容易并减少了处理我们的代码和项目的时间。
顶级语句
这被称为顶级语句,因为从C# 9开始不需要该main方法。顶级语句的主要目的是减少代码并提高性能。main方法和类将由编译器创建,因为我们不需要为它编写单独的代码。
新的Angular文件部分
aspnetcore-https.js
此JavaScript文件为应用程序设置HTTPS,以使用ASP.NET Core HTTPS证书。
proxy.conf.js
此JavaScript文件用于添加我们的HTTPS端口、WEB API URL作为目标,在上下文中,我们将添加所有控制器和方法以在Angular应用程序中获取访问权限。
构建并运行应用程序
当我们运行应用程序时,我们可以默认看到home。Counter和Fetch数据组件已添加到菜单中,我们可以导航到每个菜单并查看组件结果。
当月项目明智的销售细节制作
现在让我们制作一个简单的WEB API控制器来获取Item Sales详细信息。
创建模型类
为此,首先我们需要添加类文件来创建我们的Model 类。右键单击该项目,然后单击 > Add > New Item。选择Class并将其命名为ItemDetails.cs并单击Add。
在类中,添加如下代码的属性变量:
public class ItemDetails{public String ItemCode { get; set; }public int SaleCount { get; set; }}
创建API控制器类:
右键单击Controllers文件夹,然后单击 > Add > Controller。选择API > 选择API控制器-空,然后单击添加:
将空API控制器名称指定为ItemDetailsController.cs并单击Add。
在控制器中,我们添加将创建随机10项代码以及随机销售计数值范围从20到100的Get方法。
这是本系列的第一篇文章。稍后,当我们将SQL Server用于CRUD时,我们可以更详细地了解现实世界示例的实际工作方式。
[ApiController][Route("[controller]")]public class ItemDetailsController : ControllerBase{private readonly ILogger<ItemDetailsController> _logger;public ItemDetailsController(ILogger<ItemDetailsController> logger){_logger = logger;}[HttpGet(Name = "GetItemDetails")]public IEnumerable<ItemDetails> Get(){var rng = new Random();int ivale = 0;return Enumerable.Range(1, 10).Select(index => new ItemDetails{ItemCode = "ITM_" + rng.Next(1, 100),SaleCount = rng.Next(20, 100),}).ToArray(); ;}}
Angular部分
在这里,我使用默认的home Angular组件进行更新,以显示带有销售计数的商品详细信息。
home组件
在home组件中,我通过添加HTTPClient导入部分和注入import部分来更新代码。
然后,我创建与我们在Model类上创建的相同的ItemDetails接口。
在使用该http.get方法的Constructor方法中,我们获取API JSON结果并将其绑定到itemsdetails以在HTML页面中显示结果。
import { Component, Inject } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Component({selector: 'app-home',templateUrl: './home.component.html',
})
export class HomeComponent {public itemsdetails: ItemDetails[] = [];constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string) {http.get<ItemDetails[]>(baseUrl + 'ItemDetails').subscribe(result => {this.itemsdetails = result;}, error => console.error(error));}
}
interface ItemDetails {itemCode: string;saleCount: number;
}
home.component.html
在HTML中,添加以下代码以显示API的ItemCode和salescount结果。
<h1>Current Month Item wise Sales Details</h1>
<table class='table table-striped' aria-labelledby="tableLabel" *ngIf="itemsdetails"><thead><tr><th>Item Code</th><th>Sales Count</th></tr></thead><tbody><tr *ngFor="let itemdetail of itemsdetails"><td>{{ itemdetail.itemCode }}</td><td>{{ itemdetail.saleCount }}</td></tr></tbody>
</table>
构建并运行
构建并运行应用程序。在主页中,我们可以看到如下所示的结果,您可以注意到我们无法看到itemdetails和salecount值。这是因为我们还没有在proxy.config.js文件中添加controller类和方法。为了在Angular App中使用WEB API,我们需要在Proxy.config.js上下文数组中添加WEB API控制器和方法。
您可以从下图中看到,现在我们已经在proxy.config.js文件上下文数组中添加了名为ItemDetails的控制器。
运行应用程序以查看结果。现在,我们可以看到我们的WEB API结果已经用Item Code和Sales Count绑定在我们的主页中。
兴趣点
希望本文能帮助您了解如何使用Visual Studio 2022开始使用ASP.NET Core和Angular。在下一部分中,我们将更详细地了解如何使用ASP.NET Core创建独立的Angular应用程序。
https://www.codeproject.com/Articles/5333497/Easy-to-Learn-NET-6-0-and-Angular-Getting-Started
易于学习的.NET 6.0和Angular——Angular模板入门——第1部分相关推荐
- java学习_Python基础学习教程:从0学爬虫?让爬虫满足你的好奇心
Python基础学习教程:从0学爬虫?让爬虫满足你的好奇心 有必要学爬虫吗? 我想,这已经是一个不需要讨论的问题了. 爬虫,"有用"也"有趣"! 这个数据为王的 ...
- 飞桨深度学习开源框架2.0抢先看:成熟完备的动态图开发模式
百度飞桨于近期宣布,深度学习开源框架2.0抢先版本正式发布,进入2.0时代.其中一项重大升级,就是推出更加成熟完备的命令式编程模式,即通常说的动态图模式.同时在该版本中将默认的开发模式定为动态图模式, ...
- python语言入门p-MicropPython的学习,如何从0到1?
是Java还是C++ ? 是Go还是Python? 你为你最爱或者最熟悉的编程语言打Call了吗? Python在国外是一门非常热门的编程语言,近些年在国内也被发掘与追捧, Python的开放.简洁. ...
- [深度学习] 分布式Tensorflow 2.0 介绍(二)
[深度学习] 分布式模式介绍(一) [深度学习] 分布式Tensorflow 2.0介绍(二) [深度学习] 分布式Pytorch 1.0介绍(三) [深度学习] 分布式Horovod介绍(四) 一 ...
- 数据结构与算法学习笔记之 从0编号的数组
数据结构与算法学习笔记之 从0编号的数组 前言 数组看似简单,但掌握精髓的却没有多少:他既是编程语言中的数据类型,又是最基础的数据结构: 一个小问题: 为什么数据要从0开始编号,而不是 从1开始呢? ...
- 我们如何使用CircleCI 2.0来构建Angular应用并将其部署到AWS S3
by Marius Lazar 通过马里乌斯·拉扎尔(Marius Lazar) 我们如何使用CircleCI 2.0来构建Angular应用并将其部署到AWS S3 (How we used Cir ...
- MicropPython的学习,如何从0到1?
是Java还是C++ ? 是Go还是Python? 你为你最爱或者最熟悉的编程语言打Call了吗? Python在国外是一门非常热门的编程语言,近些年在国内也被发掘与追捧, Python的开放.简洁. ...
- Unity DOTS 学习笔记1 - ECS 0.50介绍和安装
Unity DOTS 学习笔记1 - ECS 0.50介绍和安装 为什么学习这个技术 ECS的全称为Entity Component System,是最早由暴雪在GDC2017上提出的一个新的游戏设计 ...
- OpenHarmony学习笔记——I2C驱动0.96OLED屏幕
文章目录 前言 I2C简介 硬件连接 编程实现 创建代码框架 初始化并复用GPIO 初始化I2C0 初始化OLED 从机地址 OLED初始化配置 功能代码 总结 目录 前言 前面介绍了一些关于在Hi3 ...
最新文章
- TurboMail荣获2010年度优秀电子邮件产品殊荣
- 【Flutter】shared_preferences 本地存储 ( 简介 | 安装 shared_preferences 插件 | 使用 shared_preferences 流程 )
- 初学python者自学anaconda的正确姿势
- 11、流程控制语句详解,IF,CASE,LOOP,LEAVE, ITERATE,REPEAT,WHILE
- 24款非常实用的CSS3工具终极收藏
- c mysql备份还原数据库,MySQL数据库备份与恢复方法
- P8级别的顶级“并发编程”宝典,最全指南
- ksrot php_php中ksort函数的功能起什么作用呢?
- 【详细说明】nginx反向代理wss websocket
- 深度学习的实用层面 —— 1.2 偏差/方差
- power接口 sata_sata硬盘不接power接口读的出来吗
- 零基础学python全彩版-零基础轻松学Python:青少年趣味编程(全彩版)
- 如何设置mysql字符集支持utf-8 和gbk_mysql建表的时候设置表里面的字段的字符集是utf-8要怎么设置?默认建好后我去mysql里看字符集都是gbk...
- Linux学习6之软件包管理--yum在线管理
- UWF自定义设置与命令管理
- Calendar.getInstance() gives error in Android Studio
- 文艺爱好---英文单词
- 很不错的正则表达式前端使用手册
- beetl 获取html属性值,Beetl2.7.16中文文档(2)之高级功能
- docx转换html(mammoth)