渲染整个Markdown
文档
private void RenderMarkdown(RenderHandle renderHandle, MarkdownDocument document){var content = RenderBlock(document);renderHandle.Render(builder =>{builder.OpenComponent<LayoutView>(0);builder.AddAttribute(1, nameof(LayoutView.Layout), typeof(MainLayout));builder.AddAttribute(2, nameof(LayoutView.ChildContent), (RenderFragment)(child =>{child.OpenComponent<Index>(0);child.AddAttribute(1, "Content", content);child.CloseComponent();}));builder.CloseComponent();});}
加载为了加快加载速度 , 按照官方文档 , 改为加载Brotli
压缩后的文件并增加加载进度动画
<div id="app"><div class="position-fixed" style="bottom: 0; top: 0; left: 0; right: 0;"><div class="d-flex flex-column justify-content-center align-items-center h-100"><div style="width: 64px; height: 64px;"><svg viewBox="0 0 21 24"><path fill="transparent" d="M4.5,19.5A1.5,1.5,0,0,0,6,21H18.08V18H6A1.51,1.51,0,0,0,4.5,19.5Z" transform="translate(-1.5)" /><path fill="#1296db" d="M21.39,18a1.12,1.12,0,0,0,1.12-1.12V1.13A1.13,1.13,0,0,0,21.38,0H6A4.5,4.5,0,0,0,1.5,4.5v15A4.5,4.5,0,0,0,6,24H21.38a1.13,1.13,0,0,0,1.13-1.13v-.76A1.12,1.12,0,0,0,21.39,21h-.3V18Zm-4.14-4.54-2.93-4h1.79V5h2.3V9.42h1.79ZM13.29,5v8.52H11V8.91L8.94,11.54,6.89,8.91v4.64H4.59V5H6.95l2,3.22,2-3.22Zm4.79,16H6a1.5,1.5,0,0,1,0-3H18.08Z" transform="translate(-1.5)" /></svg></div><div class="w-50"><div class="progress" style="margin-top: 32px;"><div id="progressBar" class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%">0%</div></div></div></div></div></div>
var total = 0;var receivedLength = 0;Blazor.start({ // start manually with loadBootResourceloadBootResource: function (type, name, defaultUri, integrity) {if (type == "dotnetjs")return defaultUri;if (location.hostname !== 'localhost')defaultUri = defaultUri + '.br';const fetchResources = fetch(defaultUri, { cache: 'no-cache' });return fetchResources.then(async (r) => {const reader = r.body.getReader();let length = +r.headers.get('Content-Length');total += length;var progressbar = document.getElementById('progressBar');let dataLength = 0;let dataArray = [];while (true) {const { done, value } = await reader.read();if (done) {break;}dataArray.push(value);dataLength += value.length;receivedLength += value.length;const percent = Math.round(receivedLength / total * 100)var pct = percent + '%';progressbar.style.width = pct;progressbar.innerText = pct + ' ' + calcSize(receivedLength) + '/' + calcSize(total);console.log('Received: ' + name + ',' + calcSize(dataLength) + '/' + calcSize(length));}let data = https://www.huyubaike.com/biancheng/new Uint8Array(dataLength);let position = 0;for (let array of dataArray) {data.set(array, position);position += array.length;}const contentType = type ==='dotnetwasm' ? 'application/wasm' : 'application/octet-stream';if (location.hostname !== 'localhost') {const decompressedResponseArray = BrotliDecode(data);return new Response(decompressedResponseArray,{ headers: { 'content-type': contentType } });}elsereturn new Response(data,{ headers: { 'content-type': contentType } });});return fetchResources;}});function calcSize(bytes) {if (bytes > 1024 * 1024) {return Math.round(bytes / 1024 / 1024 * 100) / 100 + 'MB';}else if (bytes > 1024) {return Math.round(bytes / 1024 * 100) / 100 + 'KB';}else {return bytes + 'B';}}

文章插图
这样加载内容就能缩小至2.5MB
效果

文章插图
链接最终效果 , 点击访问Github源码地址 , 点击访问
经验总结扩展阅读
- 客厅隔断材质都有哪些 客厅隔断设计要点是什么
- 矮的拼音怎么写 矮的解释是什么
- 毒五月的九毒日是哪几天
- 安装电视机挂架方法 这几点一定要注意到
- 空调加氟收费标准 如何判断空调是否需要加氟
- 痛风的症状以及治疗方法
- 2023年广州毕业生创业补贴怎么申请 广州毕业生创业补贴社保要求吗
- 夏普和三星电视哪个好 好质量要会选
- 如何选购电视机 选购电视时要注意什么
- 噫的拼音怎么写 噫的解释是什么