随着Blazor的发明,我想知道这两种语言之间是否有显着的效率(代码的创建和代码的实际编译/执行)?
https://github.com/SteveSanderson/Blazor
如果有人真正实现了它,你是否已经进行了任何性能测试,或者与普通的Razor相比,是否有轶事(是的,抱歉,我要求道歉)对代码编写过程的反馈?
答案 0 :(得分:32)
我在下面提供的信息主要是从Steven Anderson's Feb. 2 Blog entry转述,以及我对项目目标的理解:
Blazor旨在结合当前.NET Razor堆栈的创意 与现代SPA框架架构。
代码创建
旨在灵活并鼓励基于组件的布局,如本例所示:
private void OnWebViewPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == WebView.SourceProperty.PropertyName)
{
URLEntry.Text = MyWebView.Source.ToString(); // May need to check this
}
}
在html标记中创建可重用的组件:
<div class="my-styles">
<h2>@Title</h2>
@RenderContent(Body)
<button onclick=@OnOK>OK</button>
</div>
@functions {
public string Title { get; set; }
public Content Body { get; set; }
public Action OnOK { get; set; }
}
<强>执行强>
Blazor预计会很快,因为webAssembly很快。它编译为由浏览器的wasm loader直接执行的字节码。例如,在javascript中,需要首先加载<MyDialog Title="Ski Lift controls" onOK="DismissSkiDialog">
Gondola @gondolaId is now <em>running</em>
</MyDialog>
文件并将单独的文件组合,然后进行解析和标记化并构建到树结构中,然后可以通过浏览器的javascript引擎进行解释(例如chrome's v8 engine。
有关webAssembly和javascript执行的深入比较,请参阅this post。
SPA架构与设计
由于已经在网络的javascript中构建了很好的框架,Blazor受到了现代框架(如React,Vue和Angular)中已经使用的思想的启发,并将在帖子中详细介绍概念,如:
请注意,虽然Razor中服务器端存在这些概念,但并非所有这些概念都存在于客户端。 Razor不提供前端路由,并且经常与javascript框架结合使用以填充该场景。
我亲自致力于与AngularJs一起为Razor页面提供服务的企业应用程序。它有时会变得混乱,从来没有感觉到干净&#39;。
摘要
Razor是基于服务器架构的解决方案,可以处理api逻辑和服务器端模板,但它不能在javascript之外提供客户端逻辑。
Blazor是下一步(希望继任者),它将允许与Razor相同的服务器端功能,但将使用.js
而不是javascript集成客户端逻辑。
我正在与Blazor合作开展小型测试项目,到目前为止,我发现它很容易使用。但正如博客和GitHub页面上的警告所说,它甚至还没有准备就绪。
在.NET Conf 2018中宣布Razor components ("server-side Blazor") will be part of .NET Core 3.0。此代码显示为:
C#
答案 1 :(得分:2)
简而言之:
Razor
是 .NET
的流行模板标记语法。 Blazor (Browser + Razor) 是一个基于 .NET 的网络框架,可以使用 WebAssembly 在客户端上运行或通过 SignalR 在服务器上运行 .
举个例子,Razor 是您使用 ASP.NET 创建 Web 应用程序时使用的语法,您之前可能已经见过:
<h1>
Hello @Model.Username
</h1>
Razor
负责根据模型中的数据呈现 HTML,同时还支持各种条件和循环。
另一方面,Blazor 是一种类似于 ASP.NET Core
& ASP.NET MVC
的技术:
它为 Web 应用程序提供支持
它使用 Razor
作为创建 UI 的模板语法。
一个常见的误解是 Blazor 使用 Razor。另外两个类似的术语——Blazor 组件和 Razor 组件进一步加剧了这种情况。它们被广泛互换使用,但正确的术语是 Razor 组件。组件是单个 Razor 文件(带有 .cshtml
扩展名)中的标记(用 HTML 编写)和逻辑(用 C# 编写)的组合。 >
答案 2 :(得分:0)
简而言之:
Razor
是 .NET
的流行模板标记语法。 Blazor
(Browser + Razor) 是一个 .NET-based
网络框架,可以使用 WebAssembly
在客户端上运行,也可以通过 SignalR 在服务器上运行。
举个例子,Razor
是您使用 ASP.NET
创建网络应用程序时使用的语法,您之前可能已经见过:
<h1>
Hello @Model.Username
</h1>
razor 负责根据模型中的数据呈现 HTML
,同时还支持各种条件和循环。
另一方面,Blazor 是一种类似于 ASP.NET Core
& ASP.NET MVC
的技术:
它为 Web 应用程序提供支持 它使用 Razor 作为创建 UI 的模板语法。一个常见的误解是 Blazor 使用 Razor。另外两个类似的术语——Blazor 组件和 Razor 组件进一步加剧了这种情况。它们被广泛互换使用,但正确的术语是 Razor 组件。组件是单个 Razor 文件(扩展名为 .cshtml)中的标记(用 HTML 编写)和逻辑(用 C# 编写)的组合。
您可以找到更多信息 here。