最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ant Design Blazor 組件庫的路由復用多標簽頁功能

 更新時間:2021年07月08日 09:15:37   作者:James Yeung''''''''s Blog  
在 Ant Design Blazor 組件庫中實現(xiàn)多標簽頁組件的呼聲日益高漲。于是,我利用周末時間,結合 Blazor 內置路由組件實現(xiàn)了基于 Tabs 組件的 ReuseTabs 組件,需要的朋友跟隨小編一起看看吧

最近,在 Ant Design Blazor 組件庫中實現(xiàn)多標簽頁組件的呼聲日益高漲。于是,我利用周末時間,結合 Blazor 內置路由組件實現(xiàn)了基于 `Tabs` 組件的 `ReuseTabs` 組件。

最近,在 Ant Design Blazor 組件庫中實現(xiàn)多標簽頁組件的呼聲日益高漲。于是,我利用周末時間,結合 Blazor 內置路由組件實現(xiàn)了基于 Tabs 組件的 ReuseTabs 組件。

前言

Blazor 是 .NET 最新的前端框架,可以基于 WebAssembly 或 SignalR (WebSocket)構建前端應用程序,基于 WebAssembly 托管模型的 Blazor 甚至可以離線運行。再加上可以共用 .NET 類庫,能使代碼量比以往的基于 JS 的前后端分離模型少 1/3。而且現(xiàn)在 .NET 開發(fā)者也可以使用自己熟悉的技術和經(jīng)驗來開發(fā)前端應用了,不同技術棧的開發(fā)人員之間的溝通成本也大大減少,從而再一次解放了生產(chǎn)力。

所以,Blazor 是 .NET 開發(fā)者的又一生產(chǎn)力技術!

通過使用 Blazor 社區(qū)生態(tài)開源的 UI 組件庫,常用的組件都被封裝了起來,用戶再也不需要寫 JS 和 CSS 了,使得 .NET 開發(fā)人員在社區(qū)里連連稱贊。目前,已經(jīng)有大量的基于 Blazor 構建的企業(yè)級應用程序被部署上線,逐漸被企業(yè)認可。

正文

什么是路由復用多標簽頁

本文標題中的路由復用,是 Angular 的 RouteReuseStrategy 中的概念,在中文社區(qū)也常被稱作“多標簽頁”,主要的功能是當切換頁面時,保持頁面的狀態(tài),并且可以通過任意切換頁面,當前展示的頁面狀態(tài)能夠恢復。通常是被用在比較復雜的后臺管理系統(tǒng),用戶可以在篩選了表格后,進入記錄的詳情頁,再回到列表頁后,仍然能保持原來的搜索條件、翻頁數(shù)等等;也或者是填寫表單時,需要去別的頁面查看正確的信息,在回到表單時,表達上已填過的內容不會丟失。

而由于天然的能復用 C# 代碼的優(yōu)勢, Blazor 通常被用于構建后臺管理系統(tǒng),所以使用標簽頁就成為了普遍的需求。然鵝,Blazor 官方團隊并沒有給我們直接提供這樣的組件,所以就需要社區(qū)的小伙伴來實現(xiàn)了。

但是縱觀社區(qū)中的幾個開源組件庫,都只是實現(xiàn)了通用的 Tabs 標簽頁組件,只能當作切換面板來使用。要用來實現(xiàn)“多標簽頁”的功能,要么不支持,要么還得要直接或間接地依賴自己菜單組件和布局組件,再要依賴頁面文件路徑,拼接出頁面組件的類型,最后用反射來創(chuàng)建頁面組件……

雖然說它們確實實現(xiàn)了多標簽頁的功能,但是實現(xiàn)方式不甚優(yōu)雅。耦合度非常高,只能在組件庫自己的框架布局中使用,而不能單獨拎出來使用。另外,反射的性能也不好,還要把頁面按照約定放置,對用戶種種制約。

當然,社區(qū)中還流傳一個比較認可的方案,就是 BlazorDemoMultiPagesTab 項目。它提供了一個原型,通過結合 Blazor 內置的路由組件實現(xiàn)了路由多標簽頁。但問題是它只是一個 demo,只實現(xiàn)了原理,代碼比較凌亂,作者也沒有再做整理,也沒有封裝成組件,如果想在自己項目中使用起來,肯定會薅禿自己的頭發(fā)的。

Ant Design Blazor 中的 ReuseTabs 組件

最近,在 Ant Design Blazor 組件庫中實現(xiàn)多標簽頁組件的呼聲日益高漲。于是,我利用周末時間,基于 BlazorDemoMultiPagesTab 中提供的思路,結合 Blazor 內置路由組件實現(xiàn)了基于 Tabs 組件的 ReuseTabs 組件。

ReuseTabs 組件只包含兩個子組件,ReuseTabsRouteViewReuseTabs,其中 ReuseTabsRouteView 繼承自內置的 RouteView 組件,負責接管頁面組件的生命周期,使頁面組件能夠保持狀態(tài)或被銷毀;ReuseTabs 負責標簽的展示和交互。除此之外,沒有再依賴菜單、布局之類的其他組件,因此可以直接用于任何 Blazor 應用程序,也可以很好地與其他組件庫一起使用。

主要的特點

  • 只需修改兩處代碼即可應用
  • 支持靜態(tài)或動態(tài)地設置標簽名
  • 與路由同步,支持 <a> 標簽、NavigationManger 等各種方式的跳轉

下面介紹一下基礎的使用方法,以 dotnet new 模板項目為例。

使用方法

首先,按照 Ant Design Blazor 文檔中介紹的方式安裝 AntDesign 包和服務注冊。

然后,修改項目中的 App.razor 文件,把 RouteView 替換成 ReuseTabsRouteView。

<Router AppAssembly="@typeof(Program).Assembly">
    <Found Context="routeData">
-       <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" / >
+       <ReuseTabsRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
    </Found>
    ...
</Router>

修改項目中的 MainLayout.razor 文件,

@inherits LayoutComponentBase

<div class="page">
    <div class="sidebar">
        <NavMenu />
    </div>

    <div class="main">
-       <div class="top-row px-4">
-           <a  rel="external nofollow"  target="_blank" class="ml-md-auto">About</a>
-       </div>
-       <div class="content px-4">
-           @Body
-       </div>
+       <ReuseTabs Class="top-row px-4" TabPaneClass="content px-4" / >
    </div>
</div>

兩種方式自定義標簽名

如果是純文本,可以在頁面組件使用 ReuseTabsPageTitle 特性。

@page "/counter"
+ @attribute [ReuseTabsPageTitle("Counter")]

如果需要使用模板來獲取動態(tài)的標簽名,比如添加另一個組件,或者從頁面內容中獲取標題,需要實現(xiàn) IReuseTabsPage 接口:

@page "/"
+ @implements IReuseTabsPage

<h1>Hello, world!</h1>

@code{
+   public RenderFragment GetPageTitle() =>
+       @<div>
+           <Icon Type="home"/> Home
+       </div>
+   ;
}

注意:當前 ReuseTabs 組件在 0.9.0 版本的每日構建包中,在正式發(fā)布之前,需要參考文檔中介紹的方式來安裝。

后續(xù)功能

目前該組件只實現(xiàn)了基本的功能,還有一些功能在后續(xù)的計劃當中:

  • 右鍵菜單
  • 代碼方式關閉
  • 緩存策略
  • 路由守衛(wèi)與權限控制

后記

Blazor 社區(qū)中對多標簽頁的呼聲有一年多了,這幾天終于實現(xiàn)了,國內外的社區(qū)都一片歡騰,也是頗有成就感的。

對于實現(xiàn)的細節(jié),感興趣的同學可以到 Ant Design Blazor 的源碼中查看,也只是幾個文件。當然,如果感興趣的同學比較多,我也可以寫一篇詳細的文章來介紹。

其實我是比較希望社區(qū)中能有更多的愛好者站出來,分享心得、貢獻開源項目,這樣才能讓社區(qū)健康發(fā)展起來。
Ant Design Blazor 發(fā)展至今已有一年有多,但是說實話相對于其他組件庫項目的作者,我自己的投入的時間和貢獻并沒有很多。其中除了貢獻代碼,一大部分精力都花在了社區(qū)的運營。
為項目作宣傳,把路人變成用戶,再把用戶變成貢獻者,讓更多人各自花少量精力,達到眾人拾柴的效果,才是開源項目得以長期活躍的長久之計。

最后還是非常感激支持我們的用戶和貢獻者!他們的每個 issue、案例和 PR 都是對我們的肯定,也是讓我們堅持的動力!

參考鏈接

https://github.com/BlazorPlus/BlazorDemoMultiPagesTab

https://github.com/ant-design-blazor/demo-reuse-tabs

https://antblazor.com/docs/nightly-build

到此這篇關于Ant Design Blazor 組件庫的路由復用多標簽頁介紹的文章就介紹到這了,更多相關Ant Design Blazor 組件庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • js實現(xiàn)的Easy Tabs選項卡用法實例

    js實現(xiàn)的Easy Tabs選項卡用法實例

    這篇文章主要介紹了js實現(xiàn)的Easy Tabs選項卡用法,以完整實例形式較為詳細的分析了JavaScript鼠標事件動態(tài)操作頁面元素樣式的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • BootStrap實用代碼片段之一

    BootStrap實用代碼片段之一

    這篇文章主要為大家詳細介紹了BootStrap實用代碼片段之一,總結在使用BootStrap中遇到的問題,并記錄解決方法,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 一文搞懂JavaScript中最難理解概念之一的閉包

    一文搞懂JavaScript中最難理解概念之一的閉包

    閉包常常被譽為JavaScript中最難理解的概念之一,這篇文章就來帶大家深入了解一下JavaScript中閉包的概念、實現(xiàn)與應用,需要的可以參考一下
    2023-04-04
  • JavaScript簡單實現(xiàn)彈出拖拽窗口(一)

    JavaScript簡單實現(xiàn)彈出拖拽窗口(一)

    這篇文章主要為大家詳細介紹了JavaScript簡單實現(xiàn)彈出拖拽窗口的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Rxjs tap 操作符的使用場景示例

    Rxjs tap 操作符的使用場景示例

    這篇文章主要為大家介紹了Rxjs tap 操作符的使用場景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • TypeScript與JavaScript多方面闡述對比相同點和區(qū)別

    TypeScript與JavaScript多方面闡述對比相同點和區(qū)別

    TypeScript和JavaScript在開發(fā)交互式網(wǎng)頁方面有許多相似之處,在提供TypeScript與 JavaScript的直接比較時,我們可以說JavaScript是一種輕量級的解釋型動態(tài)語言,用于增強HTML網(wǎng)頁,TypeScript是JavaScript的增強版,這意味著TypeScript是JavaScript和其他一些特性的組合
    2024-07-07
  • javascript根據(jù)時間生成m位隨機數(shù)最大13位

    javascript根據(jù)時間生成m位隨機數(shù)最大13位

    javascript根據(jù)時間生成m位隨機數(shù),最大13位隨機數(shù),并且不能保證首位不為0,實現(xiàn)代碼如下,需要的朋友可以參考下
    2014-10-10
  • javaScript之split與join的區(qū)別(詳解)

    javaScript之split與join的區(qū)別(詳解)

    下面小編就為大家?guī)硪黄猨avaScript之split與join的區(qū)別(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • javascript實現(xiàn)前端分頁功能

    javascript實現(xiàn)前端分頁功能

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)前端分頁功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • js生成隨機數(shù)方法和實例

    js生成隨機數(shù)方法和實例

    這篇文章主要介紹了js生成隨機數(shù)方法和實例,由js生成一切隨機數(shù)的基礎都是Math.random(),有興趣的可以了解一下。
    2017-01-01

最新評論

和田市| 疏勒县| 随州市| 龙口市| 福州市| 扬州市| 大姚县| 周口市| 陈巴尔虎旗| 赞皇县| 宜黄县| 大埔区| 安徽省| 仁怀市| 包头市| 松阳县| 巨野县| 平舆县| 毕节市| 申扎县| 布拖县| 建水县| 安泽县| 元江| 唐山市| 闽清县| 孟津县| 普陀区| 南昌县| 宜黄县| 孝义市| 梁河县| 崇明县| 永吉县| 嘉黎县| 德江县| 福安市| 正镶白旗| 富蕴县| 岱山县| 定西市|