Blazor WebAssembly 3.2.0 正式起飞,blazor 适合你吗?

最近blazor更新很快,今天在官方博客上发布了Blazor WebAssembly 3.2.0 RC:https://devblogs.microsoft.com/aspnet/blazor-webassembly-3-2-0-release-candidate-now-available/ ,这是最后一次预览版了,功能开发都已经完成。

5.19的微软Build大会上就正式发布了,我最近也在积极的研究学习blazor,在博客和公众号发了几篇最新版本发布的文章,在评论区还是微信群,有人问我,为什么你对blazor如此热情,这些同学都在使用vue/angular/react等前端框架,blazor正好是利用WebAssembly 开发的前端框架,编程语言从js变成了c#, 我觉得如果您对你的前端技术栈感到满意,你可以继续使用现在你所用的框架继续前进,也许blazor并不适合你 ,巧的是最近vue3 也发布了beta版本,vue3 要真正普及也是需要至少一年的时间,blazor 可以充分的吸收前端技术栈的精华,为我所用,我将在文章的末尾列出一些blazor 吸收前端技术圈的成果的开源项目。

blazor适用于编写内部应用程序,企业应用开发人员开发的B2B和B2C的应用程序都适合使用blazor开发,现在已经有很多企业应用开发人员接受了JavaScript,还有许多企业开发人员没有,特别是winform,wpf 等开发人员,他们特别希望能够高效的的完成开发工作,这里面有很多的开发人员都很认同Sliverlight 是他们交付Web应用程序的捷径,一朝被蛇咬,十年怕井绳,有人认为blazor 只是 Silverlight vNext。我们为什么要相信微软这次不会杀死它?这种观点可以理解,但是将blazor 的未来与Sliverlight的过去混为一谈是荒谬的。

Silverlight是浏览器插件模型的牺牲品。2010年Flash是浏览器上非常流行的插件,史蒂夫-乔布斯(Steve Jobs)杀死了他,iOS设备上不支持Flash,当时Silverlight 也是如日中天,微软亲手杀死了它,拥抱了Html5这种无插件模型,相比之下,blazor是在WebAssembly标准之下的现代浏览器中运行,每个主流浏览器(IE11除外),甚至是iOS设备上的Safari 都支持blazor,这里要吐槽下微信里面的哪个浏览器貌似支持不太好。我们可以将WebAssembly视为在JavaScript运行所在的沙箱中运行的二进制编译代码,blazor 正式借助于WebAssembly 实现了将.NET 运行时运行在浏览器中。这个运行时处理 JavaScript 互操作,并提供基本服务(如垃圾回收)和更高级别的功能(布局、路由和用户界面小部件等)。换句话说,blazor使用了一个驻留在另一个虚拟机中的虚拟机,堪称《盗梦空间》级别的悖论,也是一种在浏览器中运行非 JavaScript 应用程序框架的巧妙方法。

运行时使得blazor 和 WebAssembly 上运行的其他语言与众不同,MonoCLR 编译为WebAssembly。任何.NET Standard 2.1的代码都可以在上面运行,这样就可以把.NET生态的大量库带到前端开发,其他的语言只实现了直接编译为WebAssembly,blazor当前利用WebAssembly 的一个独特创新,据我所知,还没有一个类似于blazor这样的WebAssembly运行时存在。

blazor 真正是一个组件模型,组件模型也很优雅,blazor的绑定模型也很容易理解。事件模型和标准的C# 一样,随着诸如DevExpress、Telerik、Radzen、Syncfusion等控件厂商提供了大量的控件,企业应用开发人员有理由开始blazor之旅。InfoQ的一篇文章《Mono 现状与未来:从 Xamarin 到 WebAssembly、Blazor 及.NET 5》有助于大家理解blazor和.NET的关系。

我这里也期望JavaScript的开发同学一起来使用这项创新的前端开发框架,人们经常说,WebAssembly 并不是用来代替 JavaScript 的。但这句话对所有革命性平台都是一样的。JavaScript 当初并不是要取代嵌入浏览器的 Java。Web 应用程序并非旨在替代桌面应用。但一旦能做到这些,它们必然会走上那条路。在社区也出现了大量的blazor 开源项目,这项开源项目都是急需前端开发同学的参与:

    • 开源项目 ant-design-blazor,目标是成为Ant Design官方认可的Blazor实现,并丰富Blazor生态

Github:https://github.com/ElderJames/ant-design-blazor
Demo:https://ant-design-blazor.gitee.io
开发文档:https://github.com/ElderJames/ant-design-blazor/wiki

  • Bootstrap 是 Blazor基于Bootstrap ,这个UI库目前只有服务器端,客户端wasm模式等正式版出来会搞

       仓库地址:https://gitee.com/LongbowEnterprise/BootstrapBlazor

       演示地址:blazor.sdgxgz.com

  • Blazui  Element的blazor版本,用 .NET 写前端的 UI 框架

       仓库地址:https://github.com/wzxinchen/Blazui

       演示地址 http://blazui.com:9000

  • Blazorise 是一个组件库,基于 像Bootstrap, Bulma 和Material 等CSS frameworks

      github:https://github.com/stsrki/Blazorise

      官网:https://blazorise.com/

  • Skclusive-UI Component library for Blazor using Material Design.

      github:https://github.com/skclusive/Skclusive.Material.Component   

  • Material Design components for Blazor and Razor Components

      github:https://github.com/SamProf/MatBlazor

github的仓库:https://github.com/AdrienTorris/awesome-blazor 收集了更全面的blazor 和webassembly相关的资料。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中获取文件名不要扩展名_如何批量修改文件名,3s时间够不够

?点击关注Excel表哥公众号上一篇推文我们介绍了如何批量获取同一文件夹下所有的文件名。▲点此图片回顾很多读者获取到这些文件名之后的一种工作情形就是需要批量或者有针对性地修改这些文件的名称。那么但凡是这类需要批量操作的重复工作,Excel擅长。还是以上篇推…

数据结构与算法--死磕二叉树

死磕二叉树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫,因此有此次总结,以下是所…

Jenkins 中以构建 Tag 来实现版本管理

好的工具和流程能使我们事半功倍,而这个过程是不断迭代和演进的。关于这一块的内容,之前写过几篇文章:在团队中使用GitLab中的Merge Request工作模式敏捷下的需求和代码分支管理不断进化的分支和需求管理现在又有了些新的变化和改进&#xff…

将字符串添加负数_Go语言实现LeetCode算法:8 字符串转整数

Go语言中文网,致力于每日分享编码、开源等知识,欢迎关注我,会有意想不到的收获!看到题目,是不是超级简单,用 strconv.Atoi 就可以了?题目当然不是这么简单的要求。1 题目描述实现atoi函数&#…

[Java基础]生产者和消费者模式概述与案例分析

代码如下: package BoxPack01;public class Box {private int milk;private boolean state false;public synchronized void put(int milk){if (state){try {wait();} catch (InterruptedException e) {e.printStackTrace();}}this.milk milk;System.out.println("送奶…

毕业4年年薪200万是怎样的一种体验?

之前的一篇文章提到过自己毕业4年,年薪就超过了200万。最近有很多读者问我是怎么实现的,过程中有哪些经验可以分享。说实话,这个话题不太想写,毕竟有炫耀嫌疑。不过问的人多了,发现大家对这个话题还是很关心。另外&…

自动控制原理第二版王建辉_王建辉自动控制原理配套题库名校考研真题课后答案资料课后习题章节题库模拟试题...

王建辉《自动控制原理》配套题库【名校考研真题+课后习题+章节题库+模拟试题】第一部分 名校考研真题 第1章 自动控制系统的基本概念 第2章 自动控制系统的数学模型 第3章 自动控制系统的时域分析 第4章 根轨迹法 第5章 频率法 第…

FluentAspects -- 基于 Fluent API 的 Aop

FluentAspects -- 基于 Fluent API 的 AopIntro上次我们做了一个简单的 AOP 实现示例,但是实现起来主要是基于 Attribute 来做的,对于代码的侵入性太强,于是尝试实现基于 Fluent API 的方式来做 AOP 。抽象 InterceptorResolver原来获取方法执…

[Java网络编程基础]InetAddress的使用

代码如下: package InetAddressPack;import java.net.InetAddress; import java.net.UnknownHostException;public class InetAddressDemo {public static void main(String[] args) throws UnknownHostException { // InetAddress address InetAddress.getByName(&qu…

文件夹复制 覆盖_软网应用:U盘即插即复制

虽然现在网盘非常普及,但是对于一些重要文件的同步,很多朋友仍然在使用U盘进行同步。常规的方法是在A电脑将文件复制到U盘,然后在B电脑插入U盘,再将需要同步的文件复制到B电脑。这种操作不仅效率低,而且容易漏掉文件。…

面向接口编程,你考虑过性能吗?

大家在平时开发中大多都会遵循接口编程,这样就可以方便实现依赖注入也方便实现多态等各种小技巧,但这种是以牺牲性能为代价换取代码的灵活性,万物皆有阴阳,看你的应用场景进行取舍。一:背景1. 缘由在项目的性能改造中&…

[Java网络编程]UDP通信程序练习

代码如下: package UdpPracticePack;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException;pub…

打造更好用的 EF 自动审计

打造更好用的 EF 自动审计Intro上次基于 EF Core 实现了一个自动审计的功能,详细可以参考 EF Core 数据变更自动审计设计,虽然说多数情况下可以适用,但是因为要显式继承于一个 AuditDbContextBase 或 AuditDbContext,所以对代码的…

[Java网络编程基础]UDP发送和接收数据

代码如下: package InetAddressPack;import java.io.IOException; import java.net.*; import java.nio.charset.StandardCharsets;public class SendDemo {public static void main(String[] args) throws IOException {DatagramSocket ds new DatagramSocket();byte[] bys …

从Copyright到Copyleft,聊聊版权与开源协议

4月26日是世界知识产权日,很多人或许会觉得这和软件开发没什么关系,但事实上,开源软件大多受到知识产权法中著作权法(Copyright,也称版权)的保护。开源软件虽说开放了源代码,但是用户在使用、修…

[Java网络编程基础]TCP发送和接收数据

代码如下: package ClientPack;import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException;public class ClientDemo {public static void main(String[] args) throws IOExcept…

手机端适应_不轻易透露的超强技巧!详解iVX中怎样做设备自适应

"自适应网页设计"的概念2010年,Ethan Marcotte提出了"自适应网页设计"(Responsive Web Design)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计,自适应是为了解决如何才能在不同大小的…

五分钟了解dotnetcore配置框架

一、前言配置的本质就是字符串的键值对,微软的一系列接口其实就是对这些键值对字符串的抽象。二、基本类型2.1、Nuget包Microsoft.Extensions.Configuration.AbstractionsMicrosoft.Extensions.Configuration2.2、抽象接口IConfiguration提供了查询、设置配置项、监…