通过Blazor使用C#开发SPA单页面应用程序(1)
2019年9月23——25日 .NET Core 3.0即将在.NET Conf上发布! .NET Core的发布及成熟重燃了.net程序员的热情和希望,一些.net大咖也在积极的为推动.NET Core而不懈的努力。在这次.NET Core 3.0中一项新的技术也首次出现在人们的视野,这就是Blazor。说起Blazor也许许多人并不知晓,但这几年一片热火朝天的Angular,React,Vue等前端技术估计无人不知无人不晓。对Blazor就是Microsoft提供的使用C#构建SPA的技术,虽然他姗姗来迟,但带给了大家一个与Angular,React,Vue等框架完全不一样的体验、完全不一样的架构。
由于这是一个全新的技术,目前学习资料非常有限,我将自己学习到的内容记录汇总在这里以便查阅,也给感兴趣的童鞋提供参考。
1. 简介
Blazor是一个新的Web UI框架,使用C#,Razor和HTML以及WebAssembly (W3C标准)。它允许您使用C#而不是JavaScript构建交互式Web UI。Blazor应用程序由使用C#,HTML和CSS实现的可重用Web UI组件组成。客户端和服务器代码都是用C#编写的,允许您共享代码和库。
2. 在WebAssembly或服务器上运行
Blazor可以使用WebAssembly直接在浏览器中运行客户端C#代码。因为它是在WebAssembly上运行的真实.NET,所以您可以从应用程序的服务器端部分重用代码和库(客户端渲染)。
或者,Blazor可以在服务器上运行您的客户端逻辑。客户端UI事件使用SignalR(实时消息传递框架)发送回服务器。执行完成后,所需的UI更改将发送到客户端并合并到DOM中(服务器端渲染)。
3. Web Assembly (Wasm)
基于W3C开放标准,用于在浏览器中运行低级字节代码。使用此标准,我们可以直接在浏览器中运行服务器端语言(Rust,C ++,C#...)而不是Javascript。
还记得Java applet和Microsoft Silverlight吗,我们必须在浏览器中安装插件来运行Java和C#代码,但是WebAssembly提供了基本标准,现在我们不需要任何插件,他的二进制格式以.wasm文件表示,能够提供接近本机的性能。
4. 建立在开放的Web标准之上
Blazor使用开放的Web标准,没有插件或代码转换。Blazor适用于所有现代Web浏览器,包括移动浏览器。
在浏览器中运行的代码在与JavaScript框架相同的安全沙箱中执行。
Blazor 客户端渲染支持的浏览器
|
浏览者 |
版本 |
|
Microsoft Edge |
当前 |
|
Mozilla Firefox |
当前 |
|
Google Chrome, 包括 Android |
当前 |
|
Safari, 包括 iOS |
当前 |
|
Microsoft Internet Explorer |
不支持 * |
* Microsoft Internet Explorer 不支持WebAssembly。
Razor 服务器端渲染支持的浏览器
|
浏览者 |
版本 |
|
Microsoft Edge |
当前 |
|
Mozilla Firefox |
当前 |
|
Google Chrome, 包括 Android |
当前 |
|
Safari, 包括 iOS |
当前 |
|
Microsoft Internet Explorer |
11x17 * |
*需要额外的填充代码 (例如, 可通过Polyfill.io捆绑添加承诺)。
5. 单页面应用程序(SPA)
单页面应用程序(SPA)是一种构建在浏览器中单个页面上的Web应用程序,页面块可以动态呈现而无需呈现完整的页面。
Angular,React,Vue和许多其他语言为构建SPA提供了支持,但所有这些语言都构建在相同的Javascript语言之上。现在,Microsoft提供了使用C#和Razor页面构建SPA的基础,类似ASP.Net Core中的语法,所以它被称为Blazor。
Blazor是ASP.Net Core提供的新的Web框架,用于在浏览器中使用C#和WebAssembly标准构建SPA。
ASP.Net Core是一个在Linux,Mac或Windows操作系统上运行的开源Web框架。
6. JavaScript互操作
C#代码可以轻松调用JavaScript API和库。在C#中编写逻辑时,您可以继续使用存在于客户端UI中的大型JavaScript库生态系统。当然如果愿意您还可以从 JavaScript 调用 .NET 实例方法和静态方法。
7. 优点
- 受益于 .NET 的性能、可靠性和安全性,提供近乎原生的性能,高效且便携
- 使用 C# 代替 JavaScript 来编写代码。
- 利用现有的 .NET 库生态系统,我们可以在网页中使用现有的丰富.net生态系统功能。
- 在服务器和客户端之间共享应用逻辑。
- 始终高效支持 Windows、Linux 和 macOS 上的 Visual Studio。
- 以一组稳定、功能丰富且易用的通用语言、框架和工具为基础来进行生成。
- 码维护和调试更可靠。
8. 缺点
- Javascript已经非常成熟,许多组件库已经存在于市场中。
- 具有Web Assembly标准的Blazor是市场上的新手,需要时间才能成熟,而且.net是WebAssembly众多实现中的早期版本。
通过Blazor使用C#开发SPA单页面应用程序(1)的更多相关文章
- 通过Blazor使用C#开发SPA单页面应用程序(3)
今天我们来看看Blazor开发的一些基本知识. 一.Blazor组件结构 Blazor中组件的基本结构可以分为3个部分,如下所示: //Counter.razor //Directives secti ...
- 通过Blazor使用C#开发SPA单页面应用程序(2)
今天我们尝试创建一个默认的Blazor应用. 1.安装 .Net Core 3.0需要Visual Studio 2019 的支持. 安装.Net Core 3.0 预览版 SDK版本,注意预览版对应 ...
- 通过Blazor使用C#开发SPA单页面应用程序(4) - Ant Design Button
前面学习了Blazor的特点.环境搭建及基础知识,现在我们尝试的做个实际的组件. Ant Design是蚂蚁金服是基于Ant Design设计体系的 UI 组件库,主要用于研发企业级中后台产品.目前官 ...
- SPA 单页面应用程序。
看到这个问题,先说下自己的理解到的程度,再去参考做修正,争取这一次弄懂搞清楚 自己的理解: 单页面应用程序,解决浏览器获取数据刷新页面的尴尬,通过ajax请求获取数据达到异步更新视图的按钮,原理的实现 ...
- 单页面应用程序(SPA)的优缺点
我们通常所说的单页面应用程序通常通过前端框架(angular.react.vue)进行开发,单页面应用程序将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HTML.JavaScr ...
- Java快速开发平台强大的代码生成器,JEECG 3.7.5 VUE+ElementUI SPA单页面应用版本发布
JEECG 3.7.5 VUE+ElementUI SPA单页面应用版本发布 此版本为Vue+ElementUI SPA单页面应用版本,提供新一代风格代码生成器模板,采用Vue技术,提供两套精美模板E ...
- 单页面应用程序(SPA)
一.概念 ①在一个页面上实现网站的大部分功能,就是单页面应用程序,是一种常见的网页开发模式. ②整个网站就只有一个Html文件,每次在切换页面时,不需要请求服务器,只要通过本地的js来切换即可.这样可 ...
- AngularJs(SPA)单页面SEO以及百度统计应用(上)
只有两种人最具有吸引力,一种是无所不知的人,一种是一无所知的人 问:学生问追一个女孩总是追不上怎么办?回答:女孩不是追来的,是吸引来的,你追的过程是吸引女孩的过程,如果女孩没有看上你,再追都是没有用的 ...
- 只需要4步就可以将asp.net mvc变成SPA(单页面)应用,实现无刷新页面切换!
SENNA.js Senna.js是一个超快速的单页面应用程序引擎,轻松构建基于Web的现代应用程序,只有大约8KB的JavaScript而没有任何依赖性.还提供非常酷炫的动画效果.想要详细了解的朋友 ...
随机推荐
- kuangbin专题 专题一 简单搜索 Dungeon Master POJ - 2251
题目链接:https://vjudge.net/problem/POJ-2251 题意:简单的三维地图 思路:直接上代码... #include <iostream> #include & ...
- QRowTable表格控件-支持hover整行、checked整行、指定列排序等
目录 一.开心一刻 二.嘴一嘴 三.效果展示 四.浅谈实现 五.自定义数据源 1.data函数 2.flags函数 六.自定义视图 1.目的 2.问题分析 七.测试 八.相关文章 原文链接:QRowT ...
- 并发编程之美,带你深入理解java多线程原理
1.什么是多线程? 多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率.线程是在同一时间需要完成多项任务的时候被实现的. 2.了解多线程 了解多线程之前我们先搞清楚几个重要的概念! 如 ...
- 走近Java之HashMap In JDK8
HashMap,继承AbstractMap类,实现了Map接口,特性是无序不可重复,其本身的数据结构是数组加链表和红黑树.今天我们就一起来详细了解一下. 首先,需要知道,HashMap中几个关键词的含 ...
- React躬行记(8)——样式
由于React推崇组件模式,因此会要求HTML.CSS和JavaScript混合在一起,虽然这与过去的关注点分离正好相反,但是更有利于组件之间的隔离.React已将HTML用JSX封装,而对CSS只进 ...
- java学习笔记系列整理说明
java学习笔记系列整理说明 陆陆续续也巩固学习java基础也有一段时间了,这里整理了一些我认为比较的重要的知识点,供自己或者读者以后回顾和学习.这是一个学习笔记系列,有自己的整理重新撰写的部分, ...
- py+selenium 明明定位不到元素,但却不报错或是报错AttributeError: 'list' object has no attribute 'click'【已解决】
问题:定位不到元素,但却不报错或者出现报错AttributeError: 'list' object has no attribute 'click' 如图 或者 解决方法: 将”driver ...
- Android studio 3.4.1 使用 bootstrap 中的组件实例
电脑环境: ubuntu18.04 + Android studio 3.4.1 + bootsrtap4 Android studio中板式设计主要使用的 XML 布局文件,而在bootstrap中 ...
- 个人永久性免费-Excel催化剂功能第97波-快递单号批量查询物流信息
电商时代,快递已进千万家,做电商零售行业的,快递信息的再挖掘,也显得更有意义,是数据精细化运营中必不可少的一环.一般站在系统的角度,数据用于业务流转的增删改查使用,而对于分析需求来说,这些业务系统里集 ...
- ASP.NET Core MVC 之布局(Layout)
1.什么是布局 布局通常包含常见的用户界面元素,例如应用头,导航或菜单元素和页脚,如图: 常见的HTML结构(例如脚本和样式表)也经常被应用程序中许多页面使用.所有这些共享元素都可以在布局中定义,然后 ...