作者:滴答的雨 来源:https://www.cnblogs.com/heyuquan/p/11192867.html
源跨平台的.NET Core,还没上车的赶紧的,来不及解释了……
本系列文章,主要分享一些.NET Core比较优秀的社区资料和微软官方资料。
我进行了知识点归类,让大家可以更清晰的学习.NET Core。
首先感谢资料原作者的贡献。
第一篇:.NET Core 学习资料精选:入门
介绍.NET历史、开源之路、基础、路由、依赖注入、HttpContext、cookie|session、HttpClient、gRPC、单元测试、发布部署等等。
第二篇:.NET Core 学习资料精选:进阶&高级
这是第一篇,知识点如图:
一、.NET 简介
1、.NET 开源之路
.NET FrameWork发展史
C# 语言版本发展史
2014.11月 .NET Core 项目启动,2016.06月 .NET Core 1.0 发布
微软 .NET Core3.0 规划蓝图
.NET Core 3.0 下一个版本命名为:.NET 5
2、.NET Core提供的特性
1、开源、免费
2、轻量级、跨平台
3、组件化、模块化、IOC+Nuget、中间件
4、高性能
5、统一了MVC和WebAPI编程模型
6、可测试性
7、微服务、容器化支持
8、标准化 .NET API 规范- .NET STANDARD
3、迁移到.NET Core
目前市面上还存在很多传统 .NET 旧项目,我们需要根据公司情况决定是否升级到.NET Core。
如果需要进行旧项目升级的,可以参考文章:《.NET项目迁移到.NET Core操作指南》
二、VS 和 .NET Core安装
VS 2019安装教学
VS 2019正式版注册码秘钥
安装 .NET CoreRuntime 和.NET Core SDK
【微软官方文档】ASP.NET Core *.* 个版本新特性
指定要使用的 .NET Core 版本
如何删除 .NET Core 过时的运行时和 SDK
[坑]安装 .Net Core 2.2 SDK后,VS2017依然不能设置core2.2为目标框架
三、基础
ASP.NET Core开发者路线指南
微软官方ASP.NET Core教程文档https://docs.microsoft.com/zh-cn/aspnet/?view=aspnetcore-2.2#pivot=core
.NET Core 命令行接口 (CLI) 工具
.NET Core 运行程序注意事项(dotnet dll 与 dotnet run)
ASP.NET Core API 一览表
查询 NET API 及类库在各版本中实现情况
ASP.NET Core 项目目录结构介绍
ASP.NET Core 程序自定义IP和端口的几种方式
ASP.NET Core 中的Startup类
ASP.NET Core 中使用多个环境(开发、预发布、生产)- 默认为 Production
ASP.NET Core 动作结果(ActionResult)
ASP.NET Core 中控制器操作的多路径返回类型(IActionResult)
.NET Core 3.0 新的System.Text.JsonAPI
四、配置
ASP.NET Core 中的配置(json、xml、命令行、环境变量、内存变量等)
ASP.NET Core 中的选项模式
.Net Core 自定义配置源从远程API读取配置(ConfigurationProvider)
迈向现代化的 .Net 配置指北(配置到类自动映射)
五、路由、模型绑定
ASP.NET Core WebAPI中,Controller标注 [ApiController] 特性,其路由只能使用[route]特性方式
ASP.NET Core MVC 构建可读性更高的ASP.NET Core 路由
ASP.NET Core 中的模型绑定
ASP.NET Core 中的自定义模型绑定(IModelBinder)
ASP.NET Core 中的 URL 重写中间件
六、依赖注入(IOC、DI)
什么是控制反转,和依赖注入:
控制反转的意思就是:平常我们需要一个类对象的时候需要new出来,而现在我们把new一个类对象的工作交给了IOC容器,当我们需要一个类对象的时候直接向IOC容器要,就可以了,这个就是控制反转。(控制权交个了IOC容器)
依赖注入的意思就是:当我需要一个类对象,IOC容器给我们这个类对象的过程其实就是依赖注入,依赖注入有构造函数注入和属性注入。
[官方]在 ASP.NET Core 依赖注入
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2
全面理解 ASP.NET Core 依赖注入
ASP.NET Core 中依赖注入的N种玩法
ASP.NET Core 自定义特性实现属性注入
ASP.NET Core 原生DI实现批量注册
ASP.NET Core 中如何注入同一个接口的多个实现
ASP.NET Core 中多个接口对应同一个实现的正确姿势
ASP.NET Core 依赖注入扩展库 Scrutor
[OSharp]使用 IServiceProvider.GetService<T>() 实现按需注入,优化性能
七、ASP.NET Core 集合 Autofac 的使用
AutoFac三种注入方式:按类型、按名称、按键
ASP.NET Core 2.0 之旅---AutoFacIOC容器的使用教程
ASP.NET Core 2.0 之旅---AutoFac仓储泛型的依赖注入(泛型注入)
ASP.NET Core 2.0 之旅---数据访问仓储模式的事务管理(uow+rp)
ASP.NET Core 中使用Autofac实现属性注入的代码片段
八、ASP.NET Core WebAPI
创建ASP.NET Core Web API (ControllerBase、参数绑定源)
ASP.Net Core WebAPI 几种版本控制对比
使用 Web API 约定
使用 Web API 分析器告警缺失的约定
九、ASP.NET Core:MVC 与 Razor Pages
ASP.NET Core MVC 静态文件目录配置与访问授权
新的 Razor 机制
https://docs.microsoft.com/zh-cn/aspnet/core/razor-pages/sdk?view=aspnetcore-2.2
ASP.NET Core SignalR 入门
https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/signalr?view=aspnetcore-2.2&tabs=visual-studio
WebForm & MVC & Razor Pages
十、HttpContext
ASP.NET Core 中访问 HttpContext 的方法
ASP.NET Core 中通过IHttpContextAccessor实现公用静态HttpContext
十一、状态管理
常见方式:Cookie、Session、TempData、查询字符串、HttpContext.Items、缓存、依赖关系注入
ASP.NET Core 中的会话和应用状态
1、session
ASP.NET Core 在通用数据保护条例规则下使用 session
ASP.NET Core 使用Redis存储Session
2、cookie
ASP.NET Core SameSite 设置引起 Cookie 在 QQ 浏览器中不起作用
[github]ASP.NET Core CookieManager
https://github.com/nemi-chand/CookieManager
十二、通信
对比 gRPC 服务和 HTTP API 服务
1、HttpClient
ASP.NET Core HttpClient的演进和避坑
ASP.NET Core HttpClient的各种用法、生命周期管理
DotNetCore 使用Http请求及基于 Polly 的处理故障
DotNetCore 中 HttpClientFactory 类源码分析
2、gRPC
ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
ASP.NET Core gRPC的配置
十三、发布部署
ASP.NET Core 使用 IIS 进行托管部署
ASP.NET Core 部署到 Linux 进行托管
ASP.NET Core 使用Supervisor进行托管部署
ASP.NET Core 使用Docker进行容器化托管
配置 ASP.NET Core 以使用代理服务器和负载均衡器
使用 Nginx 在 Linux 上托管 ASP.NET Core
使用 Apache 在 Linux 上托管 ASP.NET Core
十四、单元测试
.NET Core 和 .NET Standard 单元测试最佳做法
使用 dotnet test 和 xUnit 在 .NET Core 中进行 C# 单元测试
使用 dotnet test 和 NUnit 在 .NET Core 中进行 C# 单元测试
使用 dotnet test 和 MSTest 在 .NET Core 中进行 C# 单元测试
使用 dotnet test --filter 进行选择性单元测试
over,谢谢查阅,觉得文章对你有收获,请多帮推荐。欢迎提供更好的资料信息。
nput框作为一个简单的输入框,你对它的属性知道有多少?
常见的属性(带new为h5新增属性):
1、accept:accept 属性规定了可通过文件上传提交的服务器接受的文件类型。仅用于input的type类型为"file"的时候。
属性值:
audio/*,音频
video/* ,视频
image/* ,图片
MIME_type,一个有效的 MIME 类型,不带参数
<input type="file" name="pic" accept="image/*" />
// 如需规定多个值,请使用逗号分隔
<input type="file" accept="audio/*,video/*,image/*" />
2、value:指定元素的value值。
属性值:text
value 属性对于不同 input 类型,用法也不同:
注意:value 属性对于 <input type="checkbox"> 和 <input type="radio"> 是必需的。
注意:value 属性不适用于 <input type="file">。
<input value="文本" />
3、name:表示的该文本输入框名称。用于表单提交后引用表单数据。只有设置了 name 属性的表单元素才能在提交表单时传递它们的值。
属性值:text
<input type="text" name="email" />
4、size:输入框的长度大小。
属性值:number
<input type="text" name="email" size="35" />
注意:size 属性适用于下面的 input 类型:text、search、tel、url、email 和 password。
5、maxlength:输入框中允许输入字符的最大数。
属性值:number
<input type="text" name="usrname" maxlength="10" />
6、readonly:表示该框中只能显示,不能添加修改。
<input type="text" name="country" value="中国" readonly />
7、required(new):属性规定必须在提交表单之前填写输入字段。
<input type="text" name="username" required />
8、alt:定义图像输入的替代文本。 (只针对type="image")
属性值:text
<input type="image" src="submit.gif" alt="Submit" width="48" height="48" />
9、autocomplete(new):autocomplete 属性规定输入字段是否应该启用自动完成功能。
属性值:on/off,默认启动自动完成功能。
<input autocomplete="off" />
注意:autocomplete 属性适用于下面的 <input> 类型:text、search、url、tel、email、password、datepickers、range 和 color。
10、autofocus(new):属性规定当页面加载时 <input> 元素应该自动获得焦点。
属性值:autofocus
<input type="text" autofocus />
11、checked:checked 属性规定在页面加载时应该被预先选定的 <input> 元素。 (只针对 type="checkbox" 或者 type="radio")
属性值:checked
<input type="checkbox" name="vehicle" value="Car" checked />小汽车
12、disabled:disabled 属性规定应该禁用的 <input> 元素。
属性值:disabled
<input type="text" name="lname" disabled />
13、form(new): form 属性规定 <input> 元素所属的一个或多个表单。
位于 form 表单外的输入字段(但仍然属于 form 表单的一部分):
<form action="demo-form.php" id="form1">
First name: <input type="text" name="fname"><br>
<input type="submit" value="提交">
</form>
14、formaction(new):属性规定当表单提交时处理输入控件的文件的 URL。(只针对 type="submit" 和 type="image")
属性值:URL
<input type="submit" formaction="demo-admin.php" value="提交" />
注意:
formaction 属性规定当表单提交时处理输入控件的文件的 URL。
formaction 属性覆盖 <form> 元素的 action 属性。
15、formenctype(new):属性规定当表单数据提交到服务器时如何编码(只适合 type="submit" 和 type="image")。
属性值:application/x-www-form-urlencoded ;multipart/form-data text/plain
<input type="submit" formenctype="multipart/form-data" value="以 Multipart/form-data 提交" />
注意:
formenctype 属性规定当表单数据提交到服务器时如何编码(仅适用于 method="post" 的表单)。
formenctype 属性覆盖 <form> 元素的 enctype 属性。
16、formmethod (new):定义发送表单数据到 action URL 的 HTTP 方法。 (只适合 type="submit" 和 type="image")
属性值:get / post
<input type="submit" formmethod="post" formaction="demo-post.php" value="使用 POST 提交" />
17、formnovalidate(new):formnovalidate 属性覆盖 <form> 元素的 novalidate 属性。
属性值:formnovalidate
<input type="submit" formnovalidate="formnovalidate" value="不验证提交">
18、formtarget (new):规定表示提交表单后在哪里显示接收到响应的名称或关键词。(只适合 type="submit" 和 type="image")
属性值:_blank; _self; _parent; _top; framename
<input type="submit" formtarget="_blank" value="提交到一个新的页面上">
19、height (new);width(new):属性规定 <input> 元素的高度和宽度。 (只针对type="image")
属性值:pixels
<input type="image" src="img_submit.gif" alt="Submit" width="48" height="48" />
20、max (new);min(new):属性规定 <input> 元素的最大值和最小值。
属性值:number;date
<input type="date" name="bday" max="1979-12-31">
<input type="date" name="bday" min="2000-01-02">
<input type="number" name="quantity" min="1" max="5">
21、multiple (new):属性规定允许用户输入到 <input> 元素的多个值。
属性值:multiple
<input type="file" name="img" multiple>
注意:multiple 适用于以下 input 类型:email 和 file。
22、pattern (new):pattern 属性规定用于验证 <input> 元素的值的正则表达式。
属性值:regexp;
<form action="demo_form.html">
Country code: <input type="text" name="country_code" pattern="[A-Za-z]{3}" title="Three letter country code">
<input type="submit">
</form>
23、placeholder (new): 属性规定可描述输入 <input> 字段预期值的简短的提示信息 。
属性值:text
<input placeholder="请输入姓名" />
24、src : src 属性规定显示为提交按钮的图像的 URL。 (只针对 type="image")
属性值:URL
<input type="image" src="submit.gif" alt="Submit" />
25、step (new): step 属性规定 <input> 元素的合法数字间隔。
属性值:number
<input type="number" name="points" step="3">
26、list(new) :属性引用 <datalist> 元素,其中包含 <input> 元素的预定义选项。
属性值:datalist_id
<input list="browsers">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Google Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
27、type: type 属性规定要显示的 <input> 元素的类型。
属性值:button;checkbox;color;date;datetime;datetime-local;email;file;hidden;image;month;number;password;radio;range;reset;search;submit;tel;text;time;url;week
type的属性值众多,也是用的比较多的一个。
button:定义可点击的按钮(通常与 JavaScript 一起使用来启动脚本)。
checkbox:定义复选框。
color(new):定义拾色器。
date(new):定义 date 控件(包括年、月、日,不包括时间)。
datetime(new):定义 date 和 time 控件(包括年、月、日、时、分、秒、几分之一秒,基于 UTC 时区)。
datetime-local(new):定义 date 和 time 控件(包括年、月、日、时、分、秒、几分之一秒,不带时区)。
email(new):定义用于 e-mail 地址的字段。file定义文件选择字段和 "浏览..." 按钮,供文件上传。
hidden:定义隐藏输入字段。
image:定义图像作为提交按钮。
month(new):定义 month 和 year 控件(不带时区)。
number(new):定义用于输入数字的字段。
password:定义密码字段(字段中的字符会被遮蔽)。
radio:定义单选按钮。
range(new):定义用于精确值不重要的输入数字的控件(比如 slider 控件)。
reset:定义重置按钮(重置所有的表单值为默认值)。
search(new):定义用于输入搜索字符串的文本字段。
submit:定义提交按钮。
tel(new):定义用于输入电话号码的字段。
text:默认。定义一个单行的文本字段(默认宽度为 20 个字符)。
time(new):定义用于输入时间的控件(不带时区)。
url(new):定义用于输入 URL 的字段。
week(new):定义 week 和 year 控件(不带时区)。
数对于任何编程语言来说都是核心部分。通过函数可以封装任意多条语句和表达式,而且可以在任何地方、任何时候调用函数方法来执行。
在JavaScript中的函数使用function关键字声明,然后就是函数的参数和函数体。
函数的语法如下:
function functionName(arg0,arg1,arg2,...){ statements }
示例:
定义了一个hello方法, 这个函数通过其函数名来调用,函数输出结果是"Hello World"。函数中定义中的命名参数h和w被作用了字符串拼接的两个操作数,最终结果通过控制台打印显示出来。
JavaScript中的函数在定义时不必指定是否返回值。实际上,任何函数在任何时候都通过return语句后跟要返回的值来实现返回值。
带有返回函数的语法如下:
function functionName(arg0,arg1,arg2,...){ statements return result; }
示例:
凡是带有返回值的函数,在return之后写其它代码块是不会在执行的,因为已经把结果都返回出去了相当于这个函数已经结束了。
在严格模式对函数存在一些限制:
1、不能把函数名命名为eval或者arguments;
2、不能把参数命名为eval或arguments;
3、不能出现两个命名参数同名的情况。
如果发生以上的情况,会导致语法错误,代码执行不下去。
JavaScript函数的参数与大多数语言的函数参数有一点区别。JavaScript函数不介意传递进来多少个参数,也不在乎传递进来的参数是什么类型。即使定义的函数带有接收两个参数,在调用这个函数时也不一定要传这两个参数。可以不传参数、可以传一个参数、可以传两个参数甚至跟多。但是对于JavaScript解析器来说是不会报错的,完全正常解析。
原因在于JavaScript内部接收参数始终都是以数组来接收,实际上我们可以通过arguments对象来访问这个参数数组,从来获取传递函数的每一个参数信息。
访问arguments对象数组可以使用方括号来访问它的每一个元素,使用length属性来确定传递进来多少个参数。在前面的hello函数可以通过arguments[0]来获取参数。
示例:
arguments获取参数也是有顺序的,第一个参数传进来的是什么就是什么。
还可以不定义参数传递的值
如果值传递了一个值,然后通过arguments[1]获取参数,其实结果是undefined。arguments[0]是正常的参数值,因为只传了一个值。
JavaScript中除了对象类型参数,其它参数都是值传递,不可能通过引用参数传递
而且JavaScript中的函数不存在重载,定义多个函数名相同并且参数个数不同的方法进行调用,永远都是拿最后定义的那个函数作为方法调用。
调用的是带两个参数的函数,因为我这里只传了一个值,第二个值默认是undefined。
所以说JavaScript不存在方法重载的这一方法。
*请认真填写需求信息,我们会在24小时内与您取得联系。