日本xxxx18视频在线观看-日本xxxx1819-日本xxxwww在线观看-日本xxx-日本xx-日本www在线视频

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

換個方式用C#開發微信小程序

freeflydom
2025年5月16日 8:59 本文熱度 57

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

一、運行效果

??演示使用C#寫的LiveCharts,點擊按鈕動態生成一些數據。

1. Android真機運行

2. 模擬器運行

二、實現原理

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

三、開發步驟

1. 創建wasmconsole項目

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

dotnet new wasmconsole

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

3. 使用PixUI開發用戶界面

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工程即可運行

四、優勢與劣勢

優勢

  • 代碼復用:前后端可以統一開發語言,;
  • 動態加載:可以遠程加載C#寫的PixUI組件;

劣勢

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

五、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的大神指點一下。

六、小結

??本次嘗試換種方式用自己熟悉的語言來開發微信小程序,也為AppBox快速開發框架做個用戶端拓展實驗。感興趣的小伙伴可以直接clone https://github.com/enjoycode/PixUI.git ,用Wechat Devtools打開PixUI.Demo.Wxmp項目體驗。

?轉自https://www.cnblogs.com/BaiCai/p/18877189


該文章在 2025/5/16 8:59:45 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产黄大| 欧美网站一区二区 | 日本国产欧美性爱免费观看 | 国产午夜福利一区在线观看 | 91青青国产在线观看免费 | 欧美亚洲日产综合新一区 | www国产亚洲精| 国产电影手机在线观看黄 | 国产精品综合日韩精品第一页 | 朋友娇妻的滋味中文字幕 | 国产精品亚洲欧美大片在线观看 | 国产91后入高清在线 | 国内自拍另类 | 99re视频在线 | 国产精品民宅偷窥盗摄 | 岛国免费| 欧美日韩色老太熟女老妇 | 911国产| 国产自产免费精品一区 | 亚洲免费人成在线视频观看 | 国产精品午夜自在在线精品 | 日本高清一区二区三区中文字幕 | 国产免费一区二区 | 97色伦图片97综合影院 | 日本一区二区视频在线观看 | 国产性生大 | 成人h视频在线观看 | 精品免费美剧网排行榜在线看 | 韩国精品一区二区三区在线 | 九九精品免费观看在线 | 国产精品日韩在线 | 国产欧美va欧美va香蕉在 | 精品精品国 | 99国产精品中国在线 | 成人乱码一区二区三区不卡视频 | 日韩欧美国产精品 | 日韩美女黄大片在线观看 | 日韩精品在线二区三区 | 国产精品成人一区二区三区电影 | 国产精品尤物 | www.91视频.com |