- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
随着 Blazor 的发明,我想知道这两种语言之间是否有显着的效率(在代码创建和代码的实际编译/执行方面)?
https://github.com/SteveSanderson/Blazor
如果有人实际实现了它,与普通的旧 Razor 相比,您是否进行过任何性能测试,或者有关于代码编写过程的轶事(是的,抱歉,我请求这个)反馈?
最佳答案
我在下面提供的信息大部分转述自 Steven Anderson's Feb. 2 Blog entry以及我自己对项目目标的理解:
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; }
}
在 html 标记中创建一个可重用的组件:
<MyDialog Title="Ski Lift controls" onOK="DismissSkiDialog">
Gondola @gondolaId is now <em>running</em>
</MyDialog>
执行
Blazor 预计会很快,因为 webAssembly 很快。它编译成字节码,由浏览器的 wasm 加载器直接执行。例如,在 javascript 中,.js
文件需要先加载,然后将单独的文件合并,然后解析和标记化并构建成树结构,然后可以由浏览器的 javascript 引擎解释( chrome's v8 engine ,例如)。
有关 webAssembly 和 javascript 执行的深入比较,请参阅 this post .
SPA 架构和设计
由于已经在 web javascript 中构建了很多很棒的框架,Blazor 受到现代框架(例如 React、Vue 和 Angular)中已经使用的想法的启发,并将在博文中详细介绍概念,例如:
请注意,虽然这些概念存在于 Razor 的服务器端,但并非所有概念都存在于客户端。前端路由在 Razor 中不可用,并且通常与 javascript 框架结合使用以填补该场景。
我个人曾开发过与 AngularJs 一起为 Razor 页面提供服务的企业应用程序。它有时会变得凌乱,而且从来没有感觉“干净”。
总结
Razor 是一种基于服务器架构的解决方案,可以处理 api 逻辑和服务器端模板,但它不能提供 javascript 之外的客户端逻辑。
Blazor 是下一步(希望是继任者),它将允许与 Razor 相同的服务器端功能,但将使用 C#
而不是 javascript 集成客户端逻辑。
我目前正在使用 Blazor 进行小型测试项目,到目前为止我发现它易于使用。但正如博客和 GitHub 页面上的警告所述,它甚至还没有接近生产准备就绪。
在 .NET Conf 2018 中宣布 Razor components ("server-side Blazor") will be part of .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");
}
}
}
关于c# - Blazor 与 Razor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48655702/
我的公司正在尝试制定一些关于使用哪种技术来构建应用程序的指南。在做我的研究时,我感到很困惑。 似乎有 3 种 ASP.NET 技术。 MVC Razor Razor 页 MVC 对我来说相当清楚,因为
我正在尝试使用 Razor(来自预览版)将 MVC 项目升级到 Beta,现在我遇到了 Razor 没有进入它用来访问的登录 View 的奇怪现象(当有人要求执行需要授权的操作时)。 我的网络配置有
我想在 Razor 页面中包含一个类型化的模型子页面。我知道 SS 与 MVC Razor 不同。这样做的方式可能有些不同。 到目前为止,这就是我想出来的(看起来很丑,知道......): /
我在 Views 的同一个子文件夹中有两个 cshtml 文件。其中一个模板旨在包含另一个模板。我试图做到这一点,如下所示: 主模板: @Html.Partial("~/View
尝试通过部分将模型对象呈现为 JSON 结构,如下所示: @if( Model.IsEmpty ) { @( Model.UseNull ? "null" : "" ) } else {
现在我有下一个并且它有效 @foreach (TestLogs.Repository.DatabaseModel.Platforms CurrentPlatform in Model.Appl
我想知道如何在 Razor Pages 2.1 中创建和分配角色。应用。 我已经找到了如何为 MVC 应用程序( How to create roles in asp.net core and ass
我正在使用 Razor Engine from CodePlex在控制台应用程序中。当我在 VS 2010 IDE 中以 Debug模式运行时,一切正常。从 shell 来看,即使是上述 CodePl
我正在学习 ServiceStack razor 并希望更好地使用它(一般是 ServiceStack),但我无法让智能感知在模型上工作(通过继承指令) 这是我到目前为止的尝试:http://www.
如何在 Razor 辅助方法中包含不间断空格 ( )?这是有问题的助手: @helper RenderClipResult(Clip clip, IList searchTerms) {
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
我有一些 Razor 页面,其中包含大量条件逻辑、循环、部分 View 等。保持输出标记在语义上正确很容易,但使用正确的缩进和换行符对其进行格式化则更困难。我怎样才能在运行时自动执行此操作?有模块或
我有: @: 但它呈现为 ...lesson_icon/d40d2ff2-d06b-4fd8-80a0-0ed31bbc04eb%20.png 如何去掉.png前面的%20? 最佳答案 文件扩展名前
我有 6 个相同内容类型“新闻”的项目,在每个项目中我都有一个字段 newsIntro。我想将特定页面中的字段放在另一个页面上,因此我需要定位特定字段,因此它可能是节点 1702 上的 newsInt
是否有任何支持自动完成的 Razor 模板 (.cshtml) 的轻量级编辑器? 或任何支持 Razor 自动完成的 Notepad++、Sublime Text 2 等插件? 最佳答案 自上次测试版
有没有办法在 Razor View 引擎中创建类似的函数? @{ View.Title = "Clients"; private string GetRowClassName(RowS
我有一个名为 item 的对象,item 有一个属性 itemId。我正在尝试建立一个包含 itemId 后跟 .html 的网址...所以它看起来像“myNiftyItem-123456.html”
我想知道如何在 Razor Pages (Page.cshtml) 中获取路由值。 前任。https://localhost:44320/AdminPanel/Admins如果我使用 MVC,我会将这
如何在 F# 项目中使用 ServiceStack.Razor? 我添加了对 ServiceStack.Razor 的引用(这似乎在 Windows 上没有问题,但出于某种原因在 Mac 上的 Mon
通过Ctrl+E、D格式化这部分代码: if (row % 3 == 0) { @: } 给我: if (row % 3 == 0) { @:
我是一名优秀的程序员,十分优秀!