欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

換個方式使用C#開發(fā)微信小程序的過程

 更新時間:2025年05月23日 09:06:38   作者:白菜園  
這篇文章主要介紹了換個方式使用C#開發(fā)微信小程序的過程,演示使用C#寫的LiveCharts,點擊按鈕動態(tài)生成一些數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧

  前一陣子幫朋友開發(fā)個微信小程序,一開始使用Wechat Devtools開發(fā),實在受不了轉用uniapp開發(fā)。后來突發(fā)奇想能否將C#寫的PixUI編譯成WebAssembly,由微信小程序加載運行。先上網(wǎng)搜了下小程序使用blazor的文章,都是用WebView包了一下blazor應用,沒有參考價值,還是自己動手實現(xiàn)吧。

一、運行效果

  演示使用C#寫的LiveCharts,點擊按鈕動態(tài)生成一些數(shù)據(jù)。

1. Android真機運行

2. 模擬器運行

二、實現(xiàn)原理

  原理比較簡單,如下圖所示,將C#寫的PixUI應用及C++寫的Skia引擎編譯為WebAssembly,然后通過微信小程序的WXWebAssembly加載,并在canvas(WebGL)通過skia繪制出用戶界面,監(jiān)聽微信小程序的事件傳給C#處理后重新繪制界面。

三、開發(fā)步驟

1. 創(chuàng)建wasmconsole項目

創(chuàng)建項目前請確認已經通過dotnet workload install安裝wasm-experimentalwasm-tools

dotnet new wasmconsole

2. 參考PixUI.Demo.Wasm.proj修改工程文件

3. 使用PixUI開發(fā)用戶界面

4. 編譯并分包

因微信小程序包大小限制問題,使用PixUI.WxmpPkgs工具自動拆分生成pkgs目錄

5. 將如圖所示的目錄及文件復制進PixUI.Demo.Wxmp/miniprogram/dotnet目錄內

6. 修改dotnet.native.js

因微信小程序的兼容問題,以及改動了dotnet的引導代碼暫需要手動修改emcc編譯生成的js。

  • 替換所有import.meta.urlglobalThis.bootUrl;
  • 搜索receiveInstace,將function receiveInstance(instance,module){wasmExports=instance.exports;替換為function receiveInstance(instance,module){wasmExports=instance.instance.exports;

7. 用Wechat Devtools打開PixUI.Demo.Wxmp工程即可運行

四、優(yōu)勢與劣勢

優(yōu)勢

  • 代碼復用:前后端可以統(tǒng)一開發(fā)語言,;
  • 動態(tài)加載:可以遠程加載C#寫的PixUI組件;

劣勢

  • 包太大: 因打包了dotnet的mono運行時及skia引擎,目前不包含中文字體總的包大小差不多8.8MB,小程序首次加載根據(jù)網(wǎng)絡情況會稍慢。

五、IOS真機問題

目前IOS真機上運行還有些問題,先在此記錄。

1. WebAssembly不支持Exception Handling

WXWebAssembly加載時會報invalid wasm file錯誤, 暫編譯不支持的版本繞過此問題。

2. JSC引擎的Function.length始終返回0

可以通過修改dotnet.runtime.js來繞過此問題, 搜索argument count mismatch for cwrap,將

if(o&&n&&o.length!==n.length&&(Pe(`argument count mismatch for cwrap ${e}`),o=void 0),"function"!=typeof o&&(o=Xe.cwrap(e,t,n,r))

替換為

if("function"!=typeof o&&(o=Xe.cwrap(e,t,n,r))

3. Jiterpreter造成微信閃退

暫通過修改dotnet.runtime.js來繞過此問題,搜索.tableSize,將

function(){if(ds)return;ds=!0;const e=ps(),t=e.tableSize,n=ot.emscriptenBuildOptions.runAOTCompilation?e.tableSize:1,

替換為

function(){return;if(ds)return;ds=!0;const e=ps(),t=e.tableSize,n=ot.emscriptenBuildOptions.runAOTCompilation?e.tableSize:1,

4. 報compiling function underran the stack錯誤,暫無解。請哪位熟悉WebAssembly的大神指點一下。

六、小結

  本次嘗試換種方式用自己熟悉的語言來開發(fā)微信小程序,也為AppBox快速開發(fā)框架做個用戶端拓展實驗。感興趣的小伙伴可以直接clone https://github.com/enjoycode/PixUI.git ,用Wechat Devtools打開PixUI.Demo.Wxmp項目體驗。如果感興趣的小伙伴比較多,我會繼續(xù)完善(包括將微信小程序的一些api用C#包裝一下)。作者個人能力實在有限Bug在所難免,如有問題請郵件聯(lián)系或Github Issue,歡迎感興趣的小伙伴們加入共同完善,當然更歡迎贊助項目或給作者介紹工作(目前找工作中)。

到此這篇關于換個方式用C#開發(fā)微信小程序的文章就介紹到這了,更多相關C#開發(fā)微信小程序內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#中String StringBuilder StringBuffer類的用法

    C#中String StringBuilder StringBuffer類的用法

    這篇文章給大家簡單介紹下C#中String StringBuilder StringBuffer三個類的用法,需要的的朋友參考下吧
    2017-05-05
  • Unity實現(xiàn)簡單換裝系統(tǒng)

    Unity實現(xiàn)簡單換裝系統(tǒng)

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)簡單換裝系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C#處理Access中事務的方法

    C#處理Access中事務的方法

    這篇文章主要介紹了C#處理Access中事務的方法,涉及C#中事物的實現(xiàn)及使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • C#判斷密碼強度的方法

    C#判斷密碼強度的方法

    這篇文章主要介紹了C#判斷密碼強度的方法,較為詳細的分析了C#判斷密碼強度的原理與實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • C#連接mysql數(shù)據(jù)庫完整實例

    C#連接mysql數(shù)據(jù)庫完整實例

    這篇文章主要介紹了C#連接mysql數(shù)據(jù)庫的方法,以一個完整實例形式分析了C#操作mysql數(shù)據(jù)庫連接的基本技巧,非常具有實用價值,需要的朋友可以參考下
    2015-05-05
  • C#網(wǎng)絡編程基礎之進程和線程詳解

    C#網(wǎng)絡編程基礎之進程和線程詳解

    這篇文章主要介紹了C#網(wǎng)絡編程基礎之進程和線程詳解,本文對進程、線程、線程池知識做了淺顯易懂的講解,并配有代碼實例,需要的朋友可以參考下
    2014-08-08
  • C#創(chuàng)建磁性窗體的實現(xiàn)方法

    C#創(chuàng)建磁性窗體的實現(xiàn)方法

    經常會遇到一種情況,即當拖動一個窗體(主窗體)時,其他窗體(子窗體)隨著該窗體移動,當拖動子窗體時,其他窗體將不跟隨移動,這就是磁性窗體,所以本文給大家介紹了C#創(chuàng)建磁性窗體的實現(xiàn)方法,需要的朋友可以參考下
    2024-04-04
  • C#簡易圖片格式轉換器實現(xiàn)方法

    C#簡易圖片格式轉換器實現(xiàn)方法

    這篇文章主要介紹了C#簡易圖片格式轉換器實現(xiàn)方法,涉及C#基于WinForm操作圖片的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • C#對Json進行序列化和反序列化

    C#對Json進行序列化和反序列化

    這篇文章介紹了C#對Json進行序列化和反序列化的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#獲取CPU編號的方法

    C#獲取CPU編號的方法

    這篇文章主要介紹了C#獲取CPU編號的方法,實例分析了C#獲取硬件信息的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07

最新評論