日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Blazor University (1)介绍 - 什么是 Blazor?

發布時間:2023/12/4 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Blazor University (1)介绍 - 什么是 Blazor? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接:https://blazor-university.com/overview/what-is-blazor/

什么是 Blazor?

Blazor 是一個單頁應用程序開發框架。Blazor 這個名稱是單詞 Browser 和 Razor(.NET HTML 視圖生成引擎)的組合/變異。這意味著 Blazor 不必在服務器上執行 Razor 視圖以便將 HTML 呈現給瀏覽器,而是能夠在客戶端上執行這些視圖。

具有客戶端執行能力的 Blazor 應用

Blazor 還支持在服務器上執行 SPA。

Blazor 不是什么

Blazor 不像 Silverlight,微軟之前在瀏覽器內托管應用程序的嘗試。Silverlight 需要一個瀏覽器插件才能在客戶端上運行,這阻止了它在 iOS 設備上運行。

Blazor 不需要在客戶端上安裝任何類型的插件即可在瀏覽器中執行。Blazor 要么運行在服務器端,在這種情況下,它在服務器上執行,瀏覽器僅作為一個終端,要么通過使用 WebAssembly 在瀏覽器本身中運行。

因為 WebAssembly 是一種 Web 標準,它在所有主要瀏覽器上都受支持,這意味著 Blazor 客戶端應用程序可以在 Windows/Linux/Mac/Android 和 iOS 上的瀏覽器中運行。

Blazor 是開源的

Blazor 源代碼[1]可在此處獲得。源代碼歸 .NET 基金會[2]所有,該基金會是一個非營利組織,旨在支持基于 .NET 框架的開源項目。

據 .NET 基金會稱,在撰寫本文時,它得到了 3,700 家公司的支持,并有 61,000 名貢獻者。


什么是 WebAssembly?

WebAssembly(簡稱為“Wasm”)是一個指令集,旨在運行在任何能夠解釋這些指令或將它們編譯為本機機器代碼并執行它們的主機上。

Wasm 是一種以特定二進制格式格式化的指令集。因此,任何遵守本規范的主機(硬件或軟件)都能夠讀取二進制文件并執行它們——無論是解釋的,還是直接編譯成特定于設備的機器語言。

Wasm 類似于 .NET 源代碼編譯成的通用指令集(通用中間語言)。就像 .NET 一樣,Wasm 可以從 C# 等高級語言生成。

Blazor 不需要在客戶端上安裝 .NET 即可通過 WebAssembly 運行。

支持的瀏覽器

瀏覽器最低版本
Android browser67
Chrome57
Chrome for Android74
Edge16
Firefox52
Firefox for Android66
iOS Safari11
Opera44
Opera mobile46
Safari11
Samsung Internet7.2

數據來自 CanIUse.com[3]

Blazor 托管模型

Blazor 目前有兩種托管模型, Blazor Server 和 Blazor Web Assembly。服務端托管于 2019 年 9 月發布,Web Assembly 于 2020 年 5 月正式發布。

Blazor Web Assembly


優點

Web Assembly 在客戶端的瀏覽器內部運行,因此可以部署為靜態文件。盡管如此,由于瀏覽器安全限制,Blazor Wasm 應用程序不會直接從本地文件系統運行。

Blazor Wasm 可以離線工作。當與服務器的網絡連接丟失時,客戶端應用程序可以繼續運行(顯然它將無法與服務器通信以檢索新數據)。

它還可以很容易地作為漸進式 Web 應用程序[4]運行,這意味著客戶可以選擇將我們的應用程序安裝到他們的設備上,并在需要時運行它,而無需任何網絡訪問。

在客戶端機器上運行代碼,這意味著服務器負載顯著降低。

缺點

blazor.webassembly.js文件用于引導客戶端應用程序。它會下載所有必需的 .NET DLL 程序集,這使得應用程序的啟動時間在您的應用程序第一次運行時比服務器端慢(DLL 然后會由瀏覽器緩存,從而使后續啟動更快)。

Mono 框架用于解釋 .NET 中間語言,因此比運行 Blazor Server 慢。計劃在未來的版本中進行提前 (Ahead-of-time AOT) 編譯。

Blazor Wasm 尚不支持多個線程,因此所有處理都發生在 UI 線程上——盡管對服務器/JavaScript 等的調用是異步發生的,所以不要阻止 UI 的響應。

此外,Blazor Wasm 僅適用于較新的瀏覽器,對搜索引擎不友好(除非我們啟用服務器端預渲染)。

Blazor Server

優點

Blazor Server 在將 HTML 內容發送到客戶端瀏覽器之前對其進行預渲染。這使它對搜索引擎友好,并且沒有可察覺的啟動時間。

Blazor Server 應用程序將在較舊的瀏覽器(例如 Internet Explorer 11)上運行,因為不需要 Web Assembly,只需要 HTML 和 JavaScript。當代碼在服務器上執行時,還可以在 Visual Studio 中調試我們的 .NET 代碼。

缺點

Blazor Server 為當前客戶端設置內存中會話,并使用 SignalR 在服務器上運行的 .NET 和客戶端瀏覽器之間進行通信。對于所有用戶,所有內存和 CPU 的使用都會以服務器為代價。這也意味著客戶端與首先為其提供服務的服務器綁定,因此無法使用負載均衡。

初始頁面被渲染并發送到瀏覽器后,blazor.server.js 文件將 hook 瀏覽器中的任何相關用戶交互事件,以便它可以在用戶和服務器之間進行通信。例如,如果呈現的元素注冊了 @onclick 事件,則 blazor.server.js 將 hook 到其 JavaScript onclick 事件,然后使用其 SignalR 連接將該事件發送到服務器并執行相關的 .NET 代碼。

<p>Current?count?=?@CurrentCount </p> <button?@onclick=IncrementCount>Click?me</button> @code {private?int?CurrentCount;public?void?Increment(){CurrentCount++;} }

.NET 代碼執行完成后,Blazor 將重新渲染頁面上的組件,然后將 HTML 的增量包發送回客戶端的瀏覽器,以便它可以更新其顯示,而無需重新加載整個頁面。

注意: 稍后將深入介紹渲染樹。

如果我們運行一個標準的 Blazor 應用程序,單擊菜單中的 Counter 鏈接,然后單擊 Click me 按鈕,我們可以觀察到與服務器之間的 SignalR 數據通信。

  • 在 Chrome 瀏覽器中運行應用程序。

  • 單擊應用程序菜單中的 Counter 鏈接。

  • 按 F12 打開瀏覽器的開發者工具。

  • 在開發人員工具窗口中,單擊網絡選項卡。

  • 重新加載頁面。

  • 接下來,單擊 WS 選項卡(WebSocket 的縮寫)。

  • 單擊 _blazor 項以顯示套接字數據。

  • 單擊 Click me 按鈕將顯示類似于以下內容的網絡流量(為便于閱讀而進行了刪減和格式化)。

  • DispatchBrowserEvent{"browserRendererId":?0,"eventHandlerId":?3,"eventArgsType":?"mouse","eventFieldInfo":?null}{"type":?"click","detail":?1,"screenX":?338,"screenY":?211,"clientX":?338,"clientY":?109,"button":?0,"buttons":?0,"ctrlKey":?false,"shiftKey":?false,"altKey":?false,"metaKey":?false}

    相應的來自服務器的響應如下所示:

    注意: 突出顯示的 1 表示增量 HTML,并且是計數器的新值。

    如果客戶端的瀏覽器和服務器沒有關閉或者它們之間的網絡連接很慢,特別是當觸發狀態更改的事件頻繁時,這種往返會提供緩慢的體驗。例如,諸如 onmousemove 之類的事件會經常觸發。

    此外,需要大量 HTML 增量更新的更改也可能很慢。例如,如果我們的頁面中有一個 HTML <textarea> 組件,它更新了顯示區域以在用戶鍵入時預覽用戶的輸入,那么來自服務器的 delta HTML 將隨著添加到 <textarea> 中的每個字符而增加。當輸入內容變大時,會導致每次按鍵都進行較大的網絡傳輸。

    與 Blazor Wasm 不同,一旦從瀏覽器到服務器的連接丟失,應用程序就會無響應。Blazor 將嘗試重新建立與服務器的連接,但在成功之前,應用程序會顯示消息“正在嘗試重新連接到服務器……”并阻止所有鼠標與用戶界面的交互。

    Blazor Mobile Bindings

    2020 年 1 月,Microsoft 宣布了 Blazor Mobile Bindings,這是一個實驗性項目,允許開發人員結合使用 Blazor 和 Xamarin.Forms (XAML) 的 Razor 變體來構建本機移動應用程序。

    你可以在這里[5]找到官方公告。

    安裝 Blazor

    服務器端 Blazor 和 Blazor WebAssembly 現在都作為 .NET Core 3.2.0 的一部分發布。安裝 Blazor 現在就像安裝 Visual Studio 16.6 或更高版本一樣簡單!您可以通過此鏈接[6]下載最新版本的 Visual Studio。

    安裝時,請確保在 Workloads 選項卡下選擇選項 ASP.NET 和 Web 開發

    創建項目

    • 打開 Visual Studio。

    • 單擊創建新項目

    • 在搜索框中鍵入 Blazor。

    • 選擇 Blazor WebAssembly 應用

    • 點擊下一步

    • 輸入項目名稱,例如 MyFirstBlazorApp

    • 點擊下一步

    • 選中 ASP.NET Core 托管復選框。

    • 單擊創建

    創建頁面

    在 Blazor 中,頁面是可以通過 URL 訪問的頂級視圖。在本練習中,我們將從頭開始重新創建 Counter.razor 頁面。

    • 在解決方案資源管理器窗口中,展開 MyFirstBlazorApp.Client 項目。

    • 展開 Pages 文件夾。

    • 右鍵單擊 ·Counter.razor· 并將其刪除。

    • 右鍵單擊Pages 文件夾。

    • 選擇 添加->Razor 頁面 并創建一個名為 Counter.razor 的新頁面。如果您收到“腳手架”錯誤,您可以選擇另一種文件格式并為其指定 .razor 文件擴展名。

    Razor 頁面是一個獨立的視圖。我們可以包含 HTML 和 Razor 視圖標記,以及事件等所需的任何 C# 方法。使用以下內容啟動新的 Razor 頁面。

    @page?"/counter" <h1>Counter</h1> <p>The?counter?value?is?@currentCount</p> @code?{private?int?currentCount=?42; }

    第一行標識呈現此頁面內容所需的 URL。路由部分將介紹更高級的路由技術。

    接下來是一些標準的 HTML,一個帶有頁面標題的 H1 和一個帶有一些內容的段落。就像使用標準 ASP.NET Razor 頁面一樣,可以通過使用 @ 符號對其進行轉義來插入可編程內容。在本示例中,我們將顯示 currentCount 私有成員的值。

    最后,聲明頁面的 @code 節。這是我們編寫屬性/方法、事件處理程序或其他任何我們需要的代碼的地方。這里我們聲明了 currentCount 私有成員和設置它的初始值。運行應用程序,單擊頁面左側的 Counter 鏈接,您應該會看到如下內容:

    與頁面交互

    到目前為止,我們已經綁定了頁面的私有成員,以便在呈現 Razor 視圖時將其值作為 HTML 輸出。接下來,我們將更新該值作為對用戶操作的響應。

    更改 razor 視圖以包含以下按鈕標記。

    <button?class="btn?btn-primary"?@onclick=IncrementCount>Increment?counter</button>

    這將添加一個 HTML 按鈕并使用一些 Bootstrap 樣式使其看起來更漂亮。它還將其 onclick 事件設置為執行名為 IncrementCounter 的方法。方法實現非常簡單,放在 @code 節。

    @page?"/counter" <h1>Counter</h1> <p>The?counter?value?is?@currentCount</p> <button?class="btn?btn-primary"?@onclick=IncrementCounter>Increment?counter</button> @code?{private?int?currentCount?=?42;private?void?IncrementCounter(){currentCount++;} }

    現在再次運行應用程序,導航到 Counter 頁面,然后單擊按鈕查看頁面更新的值。

    參考資料

    [1]

    Blazor 源代碼: https://dotnetfoundation.org/

    [2]

    .NET 基金會: https://dotnetfoundation.org/

    [3]

    CanIUse.com: https://caniuse.com/#search=wasm

    [4]

    漸進式 Web 應用程序: https://web.dev/progressive-web-apps/

    [5]

    這里: https://devblogs.microsoft.com/aspnet/mobile-blazor-bindings-experiment/

    [6]

    此鏈接: https://visualstudio.microsoft.com/vs/

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Blazor University (1)介绍 - 什么是 Blazor?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美综合网 | 日本一级大毛片a一 | 亚洲成人另类 | brazzers猛女系列 | 锦绣未央在线观看 | 国产女主播自拍 | 色爱av | 91精品久久久久久粉嫩 | 大香焦久久 | 性xxxxbbbb| 日日草天天干 | 一区二区乱码 | 韩国三级在线 | 无码一区二区三区视频 | 国产ts在线视频 | 九九热国产精品视频 | 男女午夜视频 | 精品人妻一区二区三区香蕉 | 亚洲专区欧美专区 | 免费福利影院 | 午夜激情影院 | 国产综合精品 | 免费看h网站 | 国产做受网站 | 久久99久久精品 | 欧美色频| 对白刺激国产子与伦 | 国产精品成人免费看片 | 国产最新视频 | 国产乱淫a∨片免费视频 | 2021国产在线视频 | 欧美激情片在线观看 | 精品日韩制服无码久久久久久 | 91免费视频网 | 国产福利在线视频观看 | 狠狠干干干 | 污污视频免费看 | 中国女人特级毛片 | 香蕉视频黄色在线观看 | 国产又粗又深又猛又爽又在线观看 | 日欧美女人 | 美日韩中文字幕 | 色欲久久久天天天精品综合网 | www.亚洲天堂.com| av视觉盛宴| 国产在线观看免费av | а√在线中文网新版地址在线 | 日韩av在线免费观看 | 国产在线一级 | 国产又粗又猛又黄 | 爱爱动态图| 性精品 | 人妖粗暴刺激videos呻吟 | 国产精品成人一区 | 国产精品偷拍 | 91视频免费在线观看 | 老女人丨91丨九色 | 一级黄色片在线免费观看 | 国产经典一区二区 | 大尺度av在线 | 亚洲一区二区三区婷婷 | 亚洲AV蜜桃永久无码精品性色 | 天堂8中文在线 | 欧美日韩中文字幕视频 | 日本少妇中出 | 超碰人人cao | www.五月天com | 久久影院午夜 | 国产人妻人伦精品1国产 | 国语av在线 | 天天干天天爽天天操 | 天堂网www在线 | 综合欧美亚洲 | 亚洲天堂av一区二区三区 | 亚洲一区精品在线 | 亚洲九九视频 | 亚洲激情五月 | 8x8x国产精品一区二区 | 日韩欧美在线精品 | 制服丝袜中文字幕在线 | av一卡 | 91成人免费在线观看视频 | 亚洲精品免费看 | 免费精品国产 | 深夜福利影院 | 丁香花在线影院观看在线播放 | 欧美激情一区 | 国产精品无码免费播放 | 一级黄色片在线看 | 欧美日韩国产精品一区二区三区 | 亚洲天天在线 | 日日射天天操 | 黄网站免费观看 | 免费黄在线看 | 草草影院网址 | 开心激情综合网 | 久久久www成人免费精品 | 91午夜交换视频 | 亚洲射图 |