Svj*_*Man 5 blazor blazor-client-side asp.net-blazor blazor-webassembly
在 Blazor 中,有多种执行 JavaScript 代码的选项:
Blazor 组件的代码隐藏文件:
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
IJSObjectReference module = await JSRuntime.InvokeAsync<IJSObjectReference>("import", ".script1.js");
await module.InvokeVoidAsync("sampleFunction1");
}
}
Run Code Online (Sandbox Code Playgroud)
索引.html:
<script src="script1.js"></script>
Run Code Online (Sandbox Code Playgroud)
Blazor 组件的代码隐藏文件:
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await JSRuntime.InvokeVoidAsync("sampleFunction1");
}
}
Run Code Online (Sandbox Code Playgroud)
两种方法都有效,但从性能、代码维护和代码整洁的角度来看,哪一种是首选呢?
小智 3
我将使用第一个(在 OnAfterRenderAsync 期间导入),这是我的解释:
如果您将 js 编写为特定组件的扩展,您将获得可重用、可分解和可维护的 js 模块,这些模块可以在将来轻松地通过单元测试/重构来覆盖。
未使用但在浏览器中加载的 js 内容的百分比会很小并且效率更高。最终用户不应该为了“以防万一”而收到一堆js。遗憾的是,blazor 本身并没有使用这样的前端优化,并且会加载大量“以防万一”的代码。 与 blazor.server.js 相比,多个 js 模块的覆盖率
无需在渲染中放置 JavaScript 链接。它带来了一些好处:
| 归档时间: |
|
| 查看次数: |
3639 次 |
| 最近记录: |