ben*_*age 31 c# razor asp.net-core blazor
随着Blazor的发明,我想知道这两种语言之间是否有显着的效率(代码的创建和代码的实际编译/执行)?
https://github.com/SteveSanderson/Blazor
如果有人真正实现了它,你是否已经进行了任何性能测试,或者与普通的Razor相比,是否有轶事(是的,抱歉,我要求此道歉)对代码编写过程的反馈?
Fel*_*ipe 45
我在下面提供的信息主要是从Steven Anderson的2月2日博客文章和我自己对该项目目标的理解中解释的:
Blazor旨在将当前.NET Razor堆栈的创意与现代SPA框架架构相结合.
代码创建
旨在提供灵活性并鼓励基于组件的布局,如下例所示:
<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; }
}
Run Code Online (Sandbox Code Playgroud)
这会在html标记中创建一个可重用的组件:
<MyDialog Title="Ski Lift controls" onOK="DismissSkiDialog">
Gondola @gondolaId is now <em>running</em>
</MyDialog>
Run Code Online (Sandbox Code Playgroud)
执行
Blazor预计会很快,因为webAssembly很快.它编译为由浏览器的wasm loader直接执行的字节码.例如,在javascript中,.js
需要首先加载文件并组合单独的文件,然后解析并标记化并构建到树结构中,然后可以通过浏览器的javascript引擎(例如chrome的v8引擎)进行解释.
有关webAssembly和javascript执行的深入比较,请参阅此文章.
SPA建筑与设计
由于已经在网络javascript中构建了很好的框架,Blazor受到了现代框架(如React,Vue和Angular)中已经使用的思想的启发,并将在帖子中详细介绍概念,例如:
请注意,虽然Razor中服务器端存在这些概念,但并非所有这些概念都存在于客户端.Razor中没有前端路由,并且经常与javascript框架结合以填充该场景.
我个人致力于与AngularJs一起为Razor页面提供服务的企业应用程序.它有时会变得混乱,从来没有感觉到"干净".
综上所述
Razor是基于服务器架构的解决方案,可以处理api逻辑和服务器端模板,但它不能提供javascript之外的客户端逻辑.
Blazor是下一步(希望是后继者),它将允许与Razor相同的服务器端功能,但将使用C#
而不是javascript 集成客户端逻辑.
我目前正在与Blazor一起开展小型测试项目,到目前为止,我发现它很容易使用.但正如博客和GitHub页面上的警告所说,它甚至还没有接近生产准备就绪.
在.NET Conf 2018中,宣布Razor组件("服务器端Blazor")将成为.NET Core 3.0的一部分.此代码显示:
// inside index.cshtml - serverside use of blazor
<SurveyPrompt Title="How is Blazor working for you?" />
<div>
<img id="bot" src="@imageurl" />
<div>
<button class="btn btn-primary" onclick="@changeImage">Click me</button>
@functions{
string imageurl = "/images/dotnet-bot-1.png";
void changeImage()
{
if(imageurl.Contains("1"))
{
imageurl= imageurl.Replace("1", "2");
}
else
{
imageurl= imageurl.Replace("2", "1");
}
}
}
Run Code Online (Sandbox Code Playgroud)
Maj*_*vin 18
简而言之:
\nRazor
是流行的模板标记语法.NET
。Blazor
(浏览器 + Razor)是一个.NET-based
Web 框架,可以使用 SignalR 在客户端上运行WebAssembly
,也可以通过 SignalR 在服务器上运行。
举个例子,Razor
您在使用 创建 Web 应用程序时使用的语法ASP.NET
,您\xe2\x80\x99 之前可能已经见过:
<h1>\n Hello @Model.Username\n</h1> \n
Run Code Online (Sandbox Code Playgroud)\nrazor 负责HTML
根据模型中的数据进行渲染,同时还支持各种条件和循环。
另一方面,Blazor 是一种与ASP.NET Core
&类似的技术ASP.NET MVC
:
它为 Web 应用程序提供支持。它使用 Razor 作为创建 UI 的模板语法。一个常见的误解是 Blazor 使用 Razor。另外两个类似的术语 \xe2\x80\x93 Blazor 组件和 Razor 组件进一步加剧了这种情况。它们被广泛互换使用,但正确的术语是 Razor Component。组件是单个 Razor 文件(扩展名为 .cshtml)中标记(用 HTML 编写)和逻辑(用 C# 编写)的组合。
\n您可以在这里找到更多信息。
\n 归档时间: |
|
查看次数: |
12307 次 |
最近记录: |