微软在 Visual Studio 2022 中引入新的 Razor 编辑器

来源: OSCHINA
编辑: 罗奇奇
2021-12-02

微软宣布Visual Studio 2022 中引入新的 Razor 编辑器,开发者可以使用新的 Razor 编辑器通过 MVC、Razor Pages 和 Blazor 进行本地 ASP.NET Core 开发。

基于 ASP.NET 核心项目的新 Razor 编辑器已经开发了相当一段时间NET 的核心项目基于语言服务器协议(LSP),语言服务器协议(LSP)是一个开源协议,它定义了编辑器或IDE启用特性的标准方式。LSP 模型能够添加重要的新功能,为 Razor 带来了更多 c# 的编辑特性,并加速了其他新的 Razor 特有的生产力改进。

特性

新的 Razor 编辑器模型更容易添加新的代码修复和重构,加入了最常用的重构和缺失的 using:

此外,还添加了一些特定于 Razor 开发的重构,这对于学习 Razor 的日常语法和公共元素至关重要。例如,提取块后的代码允许你提取整个代码块隐藏文件的编码:

其他新的 Razor 重构包括:为组件添加 usings完全限定组件创建组件。随着 Razor 的发展未来还有更多计划。 

导航支持

Visual Studio 中最常用的导航特性之一是“转到定义”(Go to Definition),定义组件帮助你快速浏览整个文件,更好地理解你的代码。例如,在组件标签上按F12 可以导航到组件代码:

F5 按键可以召唤出一组诊断工具,其中包括热重载这类尖端功能。

删除了以前版本的代码背景高亮显示。这种背景高亮跟已选择的代码难以区分,视觉上太混乱。

新的 Razor 编辑器支持最新的编译器功能,且正在完善现有的语法交互。现在支持更智能的 Razor 语法补全,例如 <text> 补全和自动补全。新编辑器还更改了诊断流程,确保仅显示最重要的诊断,并以预期保真度显示编译器生成的诊断。 另外,Razor 现在完全支持 Visual Studio  Live Share(Live Share 是跟其他开发人员进行远程协作的工具,支持从 IDE 内部共享代码 

另外,Razor 编辑器是十年前推出的,只是老版本的 Razor 编辑器已积重难返,所以现在启动新的 Razor 项目。新的 Razor 目标是融合老版本的优秀功能,在此基础上提高质量和性能,这还有相当一段路要走,目前 Razor 团队正在努力解决下列问题:

  • Snippets支持(使用Tab扩展)
  • 换行 div 快捷键 Shift+Alt+W
  • Ctrl+鼠标单击 可以跳转到定义
  • #region 代码折叠
  • 嵌入式 JavaScript 格式 
  • 对 HTML、CSS 和 JavaScript 文件的拖放支持 
  • 性能和可靠性改进
  • 在调试时对 Blazor Web Assembly 项目的热加载支持

关于新 Razor 编辑器的路线图,可以在 GitHub 上查看

展开阅读全文
4 收藏
分享
加载中
精彩评论
c#语言特性都不知道比java多多少了,你咋不说java抄袭c++,真搞笑
2021-12-03 20:31
2
举报
.net 就是个搞笑语言 抄袭java
2021-12-02 21:41
2
举报
php为什么是搞笑开发? jsp asp php 平分天下,H5前端独立开发现在也很火
2021-12-03 01:08
1
举报
mvc大家可能比较熟悉了,一般用来做网站,和非前后端分离的管理系统,razor是视图的语法。
razorpage也是用来做网站的,比mvc轻量,语法任然是razor(类似php的搞笑开发)
blazor可以看成是vue,只是用c#代替js,你可以用webApi + blazor的方式来做前后端分离开发,blazor任然使用razor语法
你也可以完全不用, 而只用webApi + vue的方式做前后端分离开发。但你得同时会c#和js vue
前面说到mvc razorpages blazor它们的页面都使用razor语法,你可以编写razor组件(可以把它看成vue组件),而此组件在这三个平台可以通用。
为什么还存在mvc和razorpages呢?因为纯网站开发虽然比之前少,但任然还有很大市场。
2021-12-02 17:08
1
举报
作为一名 dotNeter 一直没明白, 在前后端分离的大趋势下, 一直不明白微软的这种努力(Razor),作用大不大.
2021-12-02 15:51
1
举报
最新评论 (21)
Razor 服务端模板引擎渲染的方式,现在还有市场吗?岂不是又回到了php,asp,jsp时代
2021-12-03 14:38
0
回复
举报
微软:我稀罕你用?
2021-12-03 08:24
0
回复
举报
mvc大家可能比较熟悉了,一般用来做网站,和非前后端分离的管理系统,razor是视图的语法。
razorpage也是用来做网站的,比mvc轻量,语法任然是razor(类似php的搞笑开发)
blazor可以看成是vue,只是用c#代替js,你可以用webApi + blazor的方式来做前后端分离开发,blazor任然使用razor语法
你也可以完全不用, 而只用webApi + vue的方式做前后端分离开发。但你得同时会c#和js vue
前面说到mvc razorpages blazor它们的页面都使用razor语法,你可以编写razor组件(可以把它看成vue组件),而此组件在这三个平台可以通用。
为什么还存在mvc和razorpages呢?因为纯网站开发虽然比之前少,但任然还有很大市场。
2021-12-02 17:08
1
回复
举报
.net 就是个搞笑语言 抄袭java
2021-12-02 21:41
2
回复
举报
.net 压根就不是语言,是个平台,类似JVM,你说的C#是早期抄袭Java,但现在语言特性比Java牛了,VB才是微软出的第一个属于自己的语言
2021-12-03 01:10
0
回复
举报
c#语言特性都不知道比java多多少了,你咋不说java抄袭c++,真搞笑
2021-12-03 20:31
2
回复
举报
那照你说c++就不是抄袭c了?模仿后进行魔改就不叫抄袭了
2021-12-10 12:15
0
回复
举报
别这么说,显得无知。
,
2021-12-09 20:35
0
回复
举报
🤡我无知您反驳啊
2021-12-10 12:16
0
回复
举报
说个java有的,c#没有的我听听。
我随便说俩c#的特征你去java里找找
真泛型有么?java那个泛型擦除是个什么玩意?
async await 有么 js dart c#都有
委托java有么? 啥函数是接口?
source genarator java有么?
linq to everything java有么?什么stream?呵呵。

无知者无畏,c#从08年的.net 3.5 已经超越java了。java生态庞大,要最大程度保证兼容性,语言层面的进步慢是正常的,.net 1.x时代你说c#抄java可以理解,但从那时起到现在语言层面java落后太多,未来也不可能超越。
2021-12-11 18:46
0
回复
举报
php为什么是搞笑开发? jsp asp php 平分天下,H5前端独立开发现在也很火
2021-12-03 01:08
1
回复
举报
作为一名 dotNeter 一直没明白, 在前后端分离的大趋势下, 一直不明白微软的这种努力(Razor),作用大不大.
2021-12-02 15:51
1
回复
举报
合久必分, 分久必合
2021-12-02 19:24
0
回复
举报
目前微软官方文档web开发中,blazor已被排在最前面的位置,.net6里面大量关于blazor的更新,为何这么重视blazor呢?

blazor是组件化的,mvc blazor razorpages三种框架可以共享razor组件。
C端海量用户场景适合传统前后端分离模式,可以用blazor Assembly用c#来开发纯前端,基于webAssembly,无需下载插件,编译型的,性能远超js。

B端或类似ERP OA MES WMS等有限在线用户的场景更适合blazorServer来开发。它底层websocket长连接,从而将客户端映射到服务端,这样服务端可以很容易的操作客户端,blazorServer会通过类似vue虚拟dom的方式,计算最小更新同步到客户端。

用blazorserver,可以直接从业务逻辑层拿数据,然后赋值给某个属性,我的工作就完成了。由于属性与界面元素是双向绑定的,应该如何计算最小更新并同步到客户端blazor会帮我们完成。
blazorserver = 接口层 + Vue/react/angular + ajax请求,由于是长连接,只有一次http请求和tcp连接,后续的所有通信都是websocket

开发简单了、通信速度快了、天然的实时性、c#的面向可比js那撇脚的面向对象强多了。
2021-12-09 20:55
0
回复
举报
问题是,受众太少了,特别是国内,很难做到.
2021-12-13 10:08
0
回复
举报
一套技术,开发所有平台,不用总是去折腾技术,而是关注业务,相比springboot+vue的方式,我一套blazor一次性搞定。对企业和个人都非常受用。所以受众并不小。
国内确实很难推,不过.net生态也没咋靠国内,国内做.net先得自己清晰的认识blazor才好,从中受益。
2021-12-13 21:27
0
回复
举报
必须顶
2021-12-02 14:13
0
回复
举报
没有花时间学老版本,是否属于又避免了损失?
2021-12-02 10:06
1
回复
举报
老版本也没觉得有什么问题
2021-12-02 11:37
0
回复
举报
我的意思是,新老版本是否使用差异大?还是根本使用方法完全一致?
2021-12-02 13:20
0
回复
举报
使用层面上并没有什么大差异吧
2021-12-02 15:00
0
回复
举报
更多评论
21 评论
4 收藏
分享
返回顶部
顶部