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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

别了,JavaScript;你好,Blazor

發(fā)布時間:2023/12/4 javascript 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 别了,JavaScript;你好,Blazor 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Web開發(fā)與JavaScript開發(fā)向來是同義詞。直到WebAssembly的橫空出世,WebAssembly (Wasm)是一種在瀏覽器中可以執(zhí)行的二進(jìn)制指令。WebAssembly 的 官方工具鏈 能夠編譯 C/C++ 代碼,但許多社區(qū)也提供了不同語言的編譯器,如 Rust,Python,Java 和 Blazor(C#)。特別是 Rust 社區(qū)非?;钴S,可以開始看到完整的前端框架,如 Yew 和 Dodrio,這為基于瀏覽器的應(yīng)用帶來了更多新的可能性,只要測試一些使用 WebAssembly 構(gòu)建的優(yōu)秀應(yīng)用,就可知道基于瀏覽器的近乎原生的應(yīng)用現(xiàn)在已經(jīng)成為現(xiàn)實(shí),例如 Sketchup 或 Magnum。WebAssembly被設(shè)計(jì)為可以和JavaScript一起協(xié)同工作——通過使用WebAssembly的JavaScript API,你可以把WebAssembly模塊加載到一個JavaScript應(yīng)用中并且在兩者之間共享功能。這允許你在同一個應(yīng)用中利用WebAssembly的性能和威力以及JavaScript的表達(dá)力和靈活性,即使你可能并不知道如何編寫WebAssembly代碼。

2017年 微軟開始嘗試基于WebAssembly使用Mono運(yùn)行時讓.NET進(jìn)入瀏覽器,Mono為.NET運(yùn)行庫(.dll)提供了基于WebAssembly運(yùn)行的環(huán)境。運(yùn)行在Mono之上的是Blazor,一個構(gòu)建于.NET的單頁Web應(yīng)用開發(fā)框架,通過Mono的WebAssembly運(yùn)行時在瀏覽器中運(yùn)行。經(jīng)過了3年時間的開發(fā),2020年5月19日在微軟年度技術(shù)大會Build上正式發(fā)布,我們來看一看Blazor將如何改變Web開發(fā)。

Blazor是什么?

Blazor 允許您使用 C# 而不是 JavaScript 構(gòu)建交互式 Web UI。

  • Blazor 應(yīng)用由使用 C#、HTML 和 CSS 實(shí)現(xiàn)的可重用 Web UI 組件組成。

  • 客戶端和服務(wù)器代碼都用 C# 編寫,允許您共享代碼和庫。

在很長一段時間內(nèi),我們構(gòu)建了僅在服務(wù)器上運(yùn)行的應(yīng)用程序,使用ASP.NET、PHP 等技術(shù),在服務(wù)端生成了要推送到瀏覽器的 HTML 文件。我們始終與 JavaScript 和 AJAX 有一些交互性,但多年來,大多數(shù)業(yè)務(wù)邏輯都處理在服務(wù)器本身上,吐出 HTML 頁面進(jìn)行交互,瀏覽器只是一個文檔查看器。

瀏覽器里很多年也是IE 當(dāng)?shù)?#xff0c;直到Chrome 這個瀏覽器的出現(xiàn),IE 11之后微軟重新用Chrome的心臟置換了Microsoft Edge,慢慢的改變了我們前端開發(fā)的模式,進(jìn)入了單頁面應(yīng)用程序時代,這個時代的典型代表就是Angular,React和Vue。我們在瀏覽器里運(yùn)行JavaScript構(gòu)建的完整應(yīng)用程序,見過大量的.NET程序員轉(zhuǎn)戰(zhàn)前端戰(zhàn)場。我們拆分業(yè)務(wù)邏輯,做到前后端分離架構(gòu),以便某些邏輯在瀏覽器上運(yùn)行,有些在服務(wù)器上運(yùn)行。JavaScript 應(yīng)用程序運(yùn)行客戶端并使用消息傳遞與"服務(wù)器"通信。您可以輕松地將"服務(wù)器"替換為云中的服務(wù)或應(yīng)用程序,但模型仍然相同。

Blazor 借助于WebAssembly技術(shù) 改進(jìn)這種前后端分離的模式,他有兩種模式支持:Blazor WebAssembly 應(yīng)用和Blazor Server ,個人認(rèn)為Blazor Webassembly 模式的應(yīng)用才是這種前后端分離的正途:

瀏覽器充當(dāng)應(yīng)用程序的宿主。在 Blazor WebAssembly 應(yīng)用程序中構(gòu)建的文件將編譯并發(fā)送到瀏覽器。然后,瀏覽器在瀏覽器的執(zhí)行沙盒中運(yùn)行您的 JavaScript、HTML 和 C#。它甚至運(yùn)行 .NET 運(yùn)行時的版本,這個運(yùn)行時處理 JavaScript 互操作,并提供基本服務(wù)(如垃圾回收)和更高級別的功能(布局、路由和用戶界面小部件等)。換句話說,blazor使用了一個駐留在另一個虛擬機(jī)中的虛擬機(jī),堪稱《盜夢空間》級別的悖論,也是一種在瀏覽器中運(yùn)行非 JavaScript 應(yīng)用程序框架的巧妙方法。這意味著您可以在瀏覽器中執(zhí)行對 .NET 的調(diào)用,并且它是瀏覽器中成熟的應(yīng)用程序。它甚至可以脫機(jī)運(yùn)行。

運(yùn)行時使得blazor 和 WebAssembly 上運(yùn)行的其他語言與眾不同,MonoCLR 編譯為WebAssembly。任何.NET Standard 2.1的代碼都可以在上面運(yùn)行,這樣就可以把.NET生態(tài)的大量庫帶到前端開發(fā),其他的語言只實(shí)現(xiàn)了直接編譯為WebAssembly,blazor當(dāng)前利用WebAssembly 的一個獨(dú)特創(chuàng)新。

為什么這是很酷的:
  • 您可以在任何靜態(tài)文件服務(wù)器上運(yùn)行它(Nginx、ISS、Apache、S3、Heroku 等)

  • 它以WebAssembly 運(yùn)行 JS,以接近本機(jī)的速度運(yùn)行 C#。

  • 您可以使用 C# 開發(fā)豐富的前端應(yīng)用程序。

  • 后端的API服務(wù)可以是任何語言,比如Java,PHP,Python,go

  • 重用 .NET 組件

  • 使用 Microsoft 工具(Visual Studio和Visual Studio Code)和調(diào)試

這非常適合低延遲應(yīng)用程序,如游戲。如果您不需要與服務(wù)器通信,則無需與服務(wù)器通信。您可以下載應(yīng)用程序并在瀏覽器中脫機(jī)運(yùn)行該應(yīng)用程序。

一些缺點(diǎn):
  • 首次需要下載 .NET 框架和其他運(yùn)行時文件(一次)

  • 您僅限于瀏覽器的功能

  • 在本地下載的所有機(jī)密(憑據(jù)、API 密鑰等)

  • 并非兼容所有 .NET 框架組件

有這些缺點(diǎn)也正是Blazor Server應(yīng)用程序模型可以彌補(bǔ),可以擁有要.NET的全部功能和瘦客戶端。

.NET切入Web開發(fā)的一個特殊優(yōu)勢,就是有了可以替換npm和WebPack的工具。作為一個多年的.NET程序員,我可以向NuGet(包管理程序)和MSBuild招手了。對我而言,這些工具問題少,更熟悉,且效率也高得多。盡管沒有完美的事物,但我使用NuGet和MSBuild的體驗(yàn)一直是很好的。這里不要誤解我的意思,不是npm和Webpack不好,希望大家放棄它們,但反之也一樣。npm和WebPack都是偉大的工具,還會存在相當(dāng)長的時間。如果你的JavaScript工具用來創(chuàng)建Web應(yīng)用很好使,那沒問題?;谖覍eb開發(fā)多年的認(rèn)知,我明白為什么會出現(xiàn)npm和WebPack,也對它們?nèi)〉玫某墒旌蛯⒁龀龅呢暙I(xiàn)表示贊賞,微軟也是花了大價錢把npm的提供商收至麾下,微軟肯定不是傻子。Blazor讓我非常震撼的是它使用起來非常簡單。公平地說,我承認(rèn)Blazor的生態(tài)還不夠完善,大量的利用前端技術(shù)圈的成果的開源項(xiàng)目正在不斷涌現(xiàn)。Blazor把簡單易用的Razor(UI)與其他.NET核心概念組合起來:依賴注入、配置、路由。而且從Angular及React等流行JavaScript框架借用了最佳模式,同時利用了Razor模板,并提供了與其他.NET慣例的一致性。這些功能的組合支持前所未有的技能重用。使用WebAssembly并不意味著可以拋棄JavaScript。WebAssembly眼下還只能被JavaScript加載和編譯。(沒錯,這有點(diǎn)亂。)雖然未來的計(jì)劃讓W(xué)ebAssembly模塊可以像ES6模塊一樣被瀏覽器加載,但JavaScript還是啟動WebAssembly必需的。JavaScript的必要性還不止于此。WebAssembly自身無法訪問任何平臺API,而要訪問這些API,JavaScript也是必要的。開發(fā)者可以通過Blazor interop在 WebAssembly自身不足時把JavaScript作為后備,此外這個交互機(jī)制也是一個抽象層,很多使用C#的程序員都會用到,他們不必?fù)?dān)心底層運(yùn)行的還是JavaScript。是不是使用C#開發(fā)Web 讓你激動, WebAssembly及ASP.NET Core的Blazor等框架就值得投入一些時間了呢?至少我學(xué)了那么多年.NET,現(xiàn)在終于可以用它來更快地做Web開發(fā)了,還是很值得炫耀的,這也是我有動力寫這篇文章的原因。不僅如此,我其實(shí)也很熟悉JavaScript,而且還在不斷學(xué)習(xí)。作為一個工程師,擁有這些技能就有了解決問題的思路。

總結(jié)

以上是生活随笔為你收集整理的别了,JavaScript;你好,Blazor的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。