最新要闻
- 京东代言人!中国选手谷爱凌夺2023年首个冠军
- 马斯克没钱了?推特拍卖数百件办公资产:“小蓝鸟”雕像10万美元成交
- 今日关注:灵山“网红牛”不幸被车撞死:一片狼藉
- 天天快报!无短板办公利器!联想小新Air 14 Plus图赏
- 短讯!深圳一公司年会送员工保时捷跑车:还有宝马、特斯拉
- 全球今头条!商务部:每卖4辆新车就有1辆新能源
- TGA年度最佳游戏 《双人成行》Steam新史低:73.26元
- 微资讯!八核酷睿+满血RTX 3060!机械革命极光Pro图赏
- 春节档电影票均价7年来首降:你会选择看哪部电影过年?
- 一加11独家适配!国产魂Like手游《帕斯卡契约》新增高品质震动
- 国人不识货?本田思域TYPE R因太畅销在日本暂停接单
- 全球速读:今年这回 我们总可以对春节档有点期待了吧
- 热消息:雷军回顾2022年:小米13得到大家认可最开心
- 育碧喜加一:《雷曼:疯狂兔子》免费领!兔年玩疯兔
- 世界热门:大摆锤高处停摆近10分钟 游乐场回应:两边游客体重相近所致
- 焦点快报!新年第一月iPhone已降价2次!苹果14首降超千元 国内用户喊真香抄底
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界观速讯丨您是否存在想在浏览器动态编译razor的组件的想法?
不知道是否有人跟我一样想在浏览器上直接可以动态的编译blazor
的一些组件库?而不是通过引用NuGet
以后才能查看到效果,并且在使用别人的组件的时候可以在动态的调整组件的一些样式
【资料图】
不说了开始正文:
本文我们将使用Masa
提供的一个组件实现动态编译github.com直通车 ,执行环境将在WebAssembly
中执行,为什么使用WebAssembly
而不是Server
呢?首先我们需要先了解这俩种模式的执行原理
WebAssembly:
Blazor WebAssembly
是Blazor WebAssembly
,用于使用 .NET 生成交互式客户端 Web 应用。Blazor WebAssembly
使用无插件或将代码重新编译为其他语言的开放式 Web 标准。Blazor WebAssembly
适用于所有新式 Web 浏览器,包括移动浏览器。
Server:
Blazor Server
在ASP.NET Core
应用中支持在服务器上托管 Razor 组件。 可通过 SignalR 连接处理 UI 更新。运行时停留在服务器上并处理:
- 执行应用的 C# 代码。
- 将 UI 事件从浏览器发送到服务器。
- 将 UI 更新应用于服务器发送回的已呈现的组件。
由于编译是完全可操作的,存在安全问题,在Server的模式下用户编译的环境就是服务器的环境,这样用户就可以通过动态编译代码实现操作侵入安全,问题很严重,如果有心人使用对于安全影响过于严重,不建议在Server中使用动态编译
实现我们来创建一个空的WebAssembly项目
mkdir compileRazorcd compileRazordotnet new blazorwasm-empty
使用vs打开项目添加Masa.Blazor.Extensions.Languages.Razor ,将一下代码添加到项目文件中
修改Program.cs
文件的代码
using Microsoft.AspNetCore.Components.Web;using Microsoft.AspNetCore.Components.WebAssembly.Hosting;using compileRazor;using Masa.Blazor.Extensions.Languages.Razor;using Microsoft.AspNetCore.Razor.Language;using Microsoft.CodeAnalysis;var builder = WebAssemblyHostBuilder.CreateDefault(args);builder.RootComponents.Add("#app");builder.RootComponents.Add("head::after");builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });var app = builder.Build();// 初始化RazorCompileRazorCompile.Initialized(await GetReference(app.Services), await GetRazorExtension());await app.RunAsync();// 添加程序集引用async Task?> GetReference(IServiceProvider services){ #region WebAsembly // need to add Service var httpClient = services.GetService(); var portableExecutableReferences = new List(); foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { try { //你需要通过网络获取程序集,应为无法通过程序集目录获取 var stream = await httpClient!.GetStreamAsync($"_framework/{assembly.GetName().Name}.dll"); if (stream.Length > 0) { portableExecutableReferences?.Add(MetadataReference.CreateFromStream(stream)); } } catch (Exception e) // There may be a 404 { Console.WriteLine(e.Message); } } #endregion // 由于WebAssembly和Server返回portableexecutablerreference机制不同,需要分开处理 return portableExecutableReferences;}async Task> GetRazorExtension(){ var razorExtension = new List(); foreach (var asm in typeof(Program).Assembly.GetReferencedAssemblies()) { razorExtension.Add(new AssemblyExtension(asm.FullName, AppDomain.CurrentDomain.Load(asm.FullName))); } return razorExtension;}
修改Pages\Index.razor
的代码
@page "/"@using Masa.Blazor.Extensions.Languages.Razor; @if (ComponentType != null){ }@code{ private string Code = @" Doctor Who™ Episode Database
Episodes
- ...
- ...
- ...
"; private Type? ComponentType; private void Run() { ComponentType = RazorCompile.CompileToType(new CompileRazorOptions() { Code = Code // TODO: 在WebAssembly下保证ConcurrentBuild是false 因为Webassembly不支持多线程 }); StateHasChanged(); }}
然后启动程序效果如图:
首次编译会比较慢,在WebAssembly
下还可以因为电脑问题造成卡顿,如果是需要提供开发效率可以使用Server调试,在Server调试的话是比WebAssembly
快很多,而且WebAssembly
还没有做Aot,性能不会太好
来自token的分享
技术交流群:737776595
推荐一个超级好用的Blazor UI
组件 MASA Blazor 开源协议 MIT
商用完全没问题
世界观速讯丨您是否存在想在浏览器动态编译razor的组件的想法?
Obsidian 插件(一):DataView 的使用
天天短讯!单向循环链表
京东代言人!中国选手谷爱凌夺2023年首个冠军
马斯克没钱了?推特拍卖数百件办公资产:“小蓝鸟”雕像10万美元成交
今日关注:灵山“网红牛”不幸被车撞死:一片狼藉
天天快报!无短板办公利器!联想小新Air 14 Plus图赏
短讯!深圳一公司年会送员工保时捷跑车:还有宝马、特斯拉
全球聚焦:单向链表
全球今头条!商务部:每卖4辆新车就有1辆新能源
TGA年度最佳游戏 《双人成行》Steam新史低:73.26元
微资讯!八核酷睿+满血RTX 3060!机械革命极光Pro图赏
春节档电影票均价7年来首降:你会选择看哪部电影过年?
一加11独家适配!国产魂Like手游《帕斯卡契约》新增高品质震动
国人不识货?本田思域TYPE R因太畅销在日本暂停接单
全球速读:今年这回 我们总可以对春节档有点期待了吧
热消息:雷军回顾2022年:小米13得到大家认可最开心
育碧喜加一:《雷曼:疯狂兔子》免费领!兔年玩疯兔
世界热门:大摆锤高处停摆近10分钟 游乐场回应:两边游客体重相近所致
焦点快报!新年第一月iPhone已降价2次!苹果14首降超千元 国内用户喊真香抄底
每日视点!印度8岁女孩放弃4亿家产出家 看透世俗享乐:从没看过电视
世界热消息:学习笔记——springMVC中视图及视图解析器对象;视图控制器
当前快讯:撕破脸!暴雪禁止中国玩家参加炉石赛事引众怒 国内玩家地址卸载所有游戏
获得版号后首测!米哈游《崩坏:星穹铁道》三测定档1月24日
环球观速讯丨英首相车内讲话未系安全带遭批 IIHS曾做测试:后排不系结果可怕!
今日要闻!《三体》电视剧更新8集 豆瓣评分增至8.1 网友担忧:原创角色正让抠书式还原走形
荣耀MagicBook V 14可升级MagicOS 7.0:新增键鼠共享功能
数据结构:树状数组 学习笔记
环球观热点:Downie V4.6.4 for Mac 视频下载工具
进海南遭世纪大堵车 3小时挪300米?当地回应:前段时间轮渡停航
每日快讯!奥迪胜诉!蔚来在德国被禁止使用“ES6”、“ES8”等名称
世界快消息!卖8万能成爆款?比亚迪海鸥内饰谍照曝光:看齐大哥海豚
当前观察:担心的事发生了 滑雪游客乘坐缆车时坠落!官方回应
环球新资讯:谁能阻挡!比亚迪双线再“扩军”:产能新增或超百万辆
本故事纯属虚构是什么意思?本故事纯属虚构的下一句是什么?
尺子的刻度是什么意思?尺子的刻度是从几开始的?
社会发展的根本动力是什么?社会发展的源泉是什么?
肌底是什么意思?肌底液是干什么用的?
交通问题有哪些?交通问题反馈打什么电话?
ceb文件怎么打开?ceb文件怎么转换成PDF?
水电煤气费一个月大约多少钱?微信怎么交水电煤气费?
华为荣耀3c多少钱一部?华为荣耀3c手机参数
电脑主机噪音大是什么原因?电脑主机噪音大怎么解决?
投影仪灯泡使用寿命是多久?投影仪灯泡机和激光机哪个好?
忍不了!iPhone用户明确拒绝:苹果仍收集隐私数据 说好的正义呢?
荣耀新专利公布:反向无线充电有望进一步普及
要闻:需花1万1 保时捷为经典车提供最新车机:想用导航需再掏一笔
滚动:跟网易闹掰!暴雪禁止中国玩家参加《炉石传说》赛事
视点!极氪001全国首烧?车主洗了个澡 极氪001路边起火
PowerShell 美化(oh-my-posh)
全球聚焦:截图工具,QQ截图独立版,可以脱离QQ使用的QQ截图小工具,有人把QQ截图功能单独拆出来了,真的很好用!
播报:学习笔记——SpringMVC处理响应数据;SpringMVC处理请求域响应乱码问题
世界观天下!比亚迪海豹获五星安全评价 因太过结实 反而在碰撞测试中被扣了分
天天快报!吴京谈《流浪地球2》:效果震撼到起鸡皮疙瘩
天天视点!特斯拉为何敢打价格战? 分析:单车利润是丰田汽车四倍
卢伟冰:Redmi K60系列越卖越好 霸榜2500-4000元价位段
热点评!0排放 有史以来最大的氢电动飞机首飞:19座、飞了10分钟
SICTF2023 web_wp
环球快看:读函数式编程思维笔记01_演化的语言
【报资讯】印度越南做备胎算了吧!苹果永远离不开中国制造 未来20年中国主宰科技生产
环球热门:近30年来日本男性越长越矮!东京大学研究:我们矮小身高更有利生存
欧盟向TikTok CEO发出通牒:不尽快遵守欧盟法规或被封禁
明晚见!央视《2023年春节联欢晚会》已完成全部五次彩排
Redmi Note 12系列在印度一周卖出30亿卢比 创下销售纪录
要闻速递:岳云鹏主持河南春晚出现“笑场” 网友喊话郭德纲扣工资
2022年出货量暴跌!PC越来越凉了:但CPU、显卡持续涨价
南宁兔子灯被吐槽羊不羊兔不兔火了 表情被网友收藏:“打工人”写照
世界热议:顺丰单票收入是“三通一达”6倍 纠纷不断 寄丢万元iPhone只赔1千
环球实时:暴雪中国:1月24日正式停服 玩家数据安全网易负责
焦点快播:学习笔记——@PathVariable注解基本使用;@PathVariable注解属性;REST风格CRUD概述;实现PUT&DELETE提交方法步骤
环球短讯!Codeforces Round #753 (Div. 3)(ABCDE)
世界热点!node.js安装
天天日报丨超117万人想看!《流浪地球2》预售票房破亿:大年初一上映
天天新资讯:告别LCD+侧边指纹!曝Redmi Note新品拥抱OLED+屏幕指纹
女记者被裁员去海底捞打工:赚钱更多了 不敢告诉家人
世界要闻:憋出大招的电车 可能会剥夺油车最后的尊严
NVIDIA史上最鸡肋、还特长寿的显卡:GeForce MX终于要走了!
全球焦点![数据结构] 栈 (C语言)
【世界速看料】动物园老虎被3只狮子围攻撕咬 官方回应“越界”导致:为何要同区饲养?
吴京谈《流浪地球2》:努力为自己的角色增加光彩
全球热消息:OPPO Find N2成为老外眼中最好的折叠屏手机!三星落后其两代
环球热点!AcWing1081. 度的数量
通讯!DVWA靶场实战(八)——SQL Injection(Blind)
团购低人一等?男子理发耳朵被剪掉一块肉:店方求网友高抬贵手
2025年前后!嫦娥六号将为人类取回月球背面第一批月壤
联想启天M540c/M450c商用机对比评测:酷睿版配置/性能完胜
卡梅隆:在家看《阿凡达2》要有大电视 别在手机上看
当前短讯!对比飞天茅台 花8万块测市面多款白酒:结果不出所料
【新视野】没人买!机械硬盘出货量惨遭腰斩 稳定性/性价比都输SSD
世界观速讯丨深度根植!苹果永远都不能完全离开中国制造
今日热闻!男子疑因抽烟错过高铁跪地求开门:科普正确补救方法
三星Galaxy S23系列美版定价泄露:Ultra版卖8000多元 向苹果看齐
【新视野】联想Tab P11 5G安卓平板将在国内上市:骁龙750G处理器
观速讯丨曾言获10万订单:零跑C01变相降价2.5万
【全球新要闻】韩国电动车基金不重仓特斯拉了!基金经理感叹:坑太多
【全球速看料】dubbo实战篇:dubbo超时设置
头条焦点:RTX 4090 16针电源线又烧了!加强版“躺平”也不行
今亮点!低脂高蛋白 鲨鱼菲特鸡胸肉:5袋到手14.9元
当前热点-安卓碎片化一地鸡毛:发布5个月后 仅5.2%用户升级Android 13
天天关注:大红灯笼挂满街头认不出红绿灯?官方回应:已调整 交通违法误判可撤销