做网站怎么赚钱 111,深圳网页制作与网站建设服务器,遂宁市建设银行网站,网站建设发布设需求原文作者: Wael Kdouh原文链接#xff1a;https://medium.com/waelkdouh/microfrontends-with-blazor-webassembly-b25e4ba3f325我聊下最近我在做的事情#xff0c;然后分享下在Blazor WebAssembly 微前端的实现细节#xff0c;这篇文章是我的一些心得#xff0c;以及一个示… 原文作者: Wael Kdouh原文链接https://medium.com/waelkdouh/microfrontends-with-blazor-webassembly-b25e4ba3f325我聊下最近我在做的事情然后分享下在Blazor WebAssembly 微前端的实现细节这篇文章是我的一些心得以及一个示例的 Demo 项目展示了如何使用Blazor 实现多模块分布式的应用程序的微前端如下图所示。为了实现上面的架构这是我使用到了.NET 5 对与 Blazor WebAssembly 的一项新功能延迟加载直到需要这些程序集的时候才开始加载从而提高Blazor WebAssembly应用程序的启动性能比如如只有用户导航到该组件时才开始加载单个组件的程序集加载后程序集将缓存在客户端可用于以后的所有导航。我的示例项目的结构是下边这样Blazor 的延迟加载功能允许标记应用程序集当用户导航到特定路由时才开始加载程序集这个功能包括修改程序路由时修改项目文件。打开我们的 Blazor 项目然后修改项目 .csproj 文件在这里标记需要延迟加载的 dll 类型的程序集然后 Blazor 启动后就不会加载这个程序集我下边的代码中标记了 WaelsMagicFeature.dll 用于延迟加载如果设置的程序集有其他的依赖也需要把依赖程序集设置延迟加载。Blazor 的路由组件指定搜索可以访问的路由组件的程序集当用户访问到路由菜单路由组件也负责渲染在应用的路由组件(App.razor) 添加一个 OnNavigateAsync 的回调当用户第一次直接从浏览器导航到路由时OnNavigateAsync 被调用执行如果延迟加载的程序集包含了可路由的组件添加一个 ListAssembly,如果程序集包含可路由的组件则将程序集传递回 AdditionalAssemblies 集合框架在程序集中搜索路线并在找到任何新路线时更新路线集合。OnNavigateAsync有一个NavigationContext参数该参数提供有关当前异步导航事件的信息包括目标路径Path和取消令牌CancellationToken Path属性是相对于应用程序基本路径的用户目标路径例如 /WaelsMagicComponent, CancellationToken可用于观察异步任务的取消, 用户导航到其他页面时OnNavigateAsync自动取消当前正在运行的导航任务, 在OnNavigateAsync内部实现了要指定加载哪些程序集Options 包含了一个在OnNavigateAsync方法内部的条件检查将路由映射到程序集名称的查找表中这些名称可以注入到组件中也可以在代码内实现。最后LazyAssemblyLoader 是框架提供的单例服务来加载程序集在路由组件注入 LazyAssemblyLoader它提供了 提供了LoadAssembliesAsync 方法 该方法使用JS发起了网络调用获取程序集然后加载到在浏览器中的WebAssembly上执行的运行时中。如上所示这样可以独立地构建/维护不同的模块按需加载它们。下图显示了导航到 Waels Magic 选项卡后如何按需加载 WaelsMagicComponent由于应用程序避免在启动时下载所有dll所以可以加快 Blzaor 程序的启动时间。总结在这篇文章中我们演示了如何将不同的组件作为独立的库进行维护另外我们利用延迟加载来按需加载不同的模块而不是在启动时就开始加载所有的模板这样也可以提升程序的启动速度让用户体验更好。示例代码https://github.com/waelkdouh/BlazorMicroFrontend