微软宣布在 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 上查看。
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呢?因为纯网站开发虽然比之前少,但任然还有很大市场。
,
我随便说俩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落后太多,未来也不可能超越。
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那撇脚的面向对象强多了。
国内确实很难推,不过.net生态也没咋靠国内,国内做.net先得自己清晰的认识blazor才好,从中受益。