Blazor-移植管理模板

时间:2020-07-14 22:44:19

标签: blazor blazor-client-side

我有一个HTML Admin template,需要移植Blazor

所有CSS都工作正常,我现在唯一的问题是管理模板使用jQuery进行了大量CSS操作和漂亮的样式设计。

起初我不想使用jQuery,因为当您认为使用Blazor就像试图摆脱Javascript一样,但是因为在此管理模板中,有一些不错的左菜单动画以及对悬浮CSS样式的控制以及许多其他功能我猜最简单的方法是添加jQuery

模板使用app.js文件开头,

  $(window).on('load', function () {
  .....
  }

在装入事件中设置了许多内容。

我读到,为了使用Blazor来jQuery用户,您需要让Blazor控制DOM,所以我的jquery app.js文件中不会有onReadyLoad事件。我需要从Blazor调用一个Initializer方法,该方法将充当Load事件。

我的问题是:

  1. 在Blazor中必须使用哪种生命周期方法来运行它?由于Blazor是 SPA ,因此该组件的初始设置仅会调用一次,或者在刷新页面时调用,因此我应该使用OnInitializedOnAfterRenderAsync(bool firstRender)

  2. 将运行此初始设置的Blazor生命周期方法必须在主路由路径@page "/"上运行?

  3. 在Blazor中使用jQuery违反了其概念设计,或者使用它没有问题或不良模式吗?我不会使用任何Ajax东西,等等,基本上基本上就是DOM操作,而使用jQuery很容易。

1 个答案:

答案 0 :(得分:0)

您应该使用OnAfterRenderAsync(bool firstRender)方法初始化JavaScript对象,并且只能初始化一次;也就是说,您的代码应包装在if语句中,如下所示:

if( firstRender )
{
// Initialization code comes here...
}

将运行此初始设置的Blazor生命周期方法必须在主路由路径@page“ /”上运行?

不一定...它应该在要使用它的组件页面的路由路径上运行。

在Blazor中使用jQuery违反其概念设计,或者使用它没有问题或不良模式吗?

在Blazor中寻找最佳做法的过程正在进行中。就个人而言,我反对在Blazor中使用jQuery,而是使用JSInterop将jQuery小部件转换为Blazor组件。但这只是我。其他人则另想,或者至少会别做。

但是,对于您而言,最好的办法是检查给定的jQuery代码是否与Blazor渲染系统无缝兼容。也许如果仅仅是“菜单动画和悬停CSS样式的控制”,那么实际上不会引起任何问题。但是你永远不会知道。因此,如上所述,您应该这样做,并测试它是否可以正常工作。