混合開發的概念是相對與原生開發來說的:App不直接運行原生程序,而是在原生程序中運行一個Web程序,原生程序中包含Web運行時,用於承載Web頁面。暫且將原生應用稱之為Web容器,Web容器應該能讓JavaScript代碼與原生平台的代碼交互,互相調用,同時為上層提供交互邏輯,例如導航,事件,Cookie,刷新等內容。
之前使用Xamarin可以利用WebView控件做混合開發,但是到目前為止WebView功能還是比較孱弱。用WebView實現混合開發主要是通過重寫各個平台的自定義呈現器(Renderer)編寫邏輯對其進行自定義,將JavaScript代碼注入,實現調用C#代碼的功能。自己要實現較完整和好用的Web容器比較困難,像Xam.pluging和Xamarin Community Toolkit等社區也有較好的WebView實現 ,Xamarin對各平台的呈現器如下:
如今Maui的Preview版本已經發布,該版本將Xamarin SDK統一到.Net6,並起了個全新的名稱 Multi-platform App UI(MAUI), 無論是Xamarin還是MAUI,底層還是用的還是mono,編程方式不變,但現在它已作為.Net6核心的內容發布,與同屬 Asp.net 6 的 Blazor共享相同的基類庫,這意味着可以在Maui上使用Blazor了,打開VisualStudio 2022 Preview,創建新項目,可以選擇Maui Blazor App模板作為混合開發項目(如下圖),這兩個框架可以算是目前微軟最先進的技術。
我們用
其實Blazor引擎很強大,不止於js與C#交互的這一功能, 介於目前國內大多數的web技術用的是Vue,React等模板引擎,下一章節我們將Vue技術結合進來,打造最目前強混合開發框架!