当前位置: 首页 > news >正文

用JSON做数据传输格式中的一些问题总结

挥感蓉握一、运行效果

??演示使用C#写的LiveCharts,点击按钮动态生成一些数据。

1. Android真机运行

2. 模拟器运行

二、实现原理

??原理比较简单,如下图所示,将C#写的PixUI应用及C++写的Skia引擎编译为WebAssembly,然后通过微信小程序的WXWebAssembly加载,并在canvas(WebGL)通过skia绘制出用户界面,监听微信小程序的事件传给C#处理后重新绘制界面。

三、开发步骤

1. 创建wasmconsole项目

创建项目前请确认已经通过dotnet workload install安装wasm-experimental及wasm-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.url为globalThis.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的大神指点一下。

http://www.jsqmd.com/news/449912/

相关文章:

  • 《梁深浔计算机科学讲义》
  • 非常好玩的C#/.NET 基础 -- 安全有效引发事件
  • 菜鸟CLR VIA C#之旅():品味细节,CLR的执行模型
  • 江湖救急!今天聊个硬核实战技巧——用哈里斯鹰算法给LSSVM模型调参,手把手教你玩转多变量预测模型。这玩意儿在设备寿命预测、股票价格拟合场景贼好用,直接上干货
  • 所见即所得富文本编辑器实现原理
  • P1650 [ICPC 2004 Shanghai R] 田忌赛马(同洛谷2587)
  • 我心目中的Asp.net核心对象
  • 2026年靠谱喷淋清洗机源头厂家排行,给你清洗新选择,滚筒输送机/链板输送机/清洗机网带/料斗提升机,清洗机品牌哪里有卖 - 品牌推荐师
  • 菜鸟CLR VIA C#之旅—开始旅行:千里之行始于足下
  • 微软预览技术 大幅简化无障碍网站键盘导航开发
  • 在.net中读写config文件的各种方法
  • 分布式日志收集系统: Facebook Scribe
  • 程序员职业发展的绊脚石-思想的枷锁
  • 选河南种子会要考虑啥,对接会效果是否有保障 - 工业推荐榜
  • 通知监控系统框架:Python + API + Email + Docker + GitHub Actions + Prometheus
  • 2026年天津继承律师电话查询推荐:解决继承难题指南 - 品牌推荐
  • 擦亮自己的眼睛去看SQLServer之谈谈锁机制
  • 《C语言程序设计(第五版)》谭浩强--第4章习题答案
  • 一文讲透|当红之选的降AI率工具 —— 千笔·专业降AI率智能体
  • 1388: PIPI的逃跑路线Ⅳ
  • 基本复现:阶梯式碳交易机制与电制氢的综合能源系统热电优化
  • 为什么要关闭数据库连接,可以不关闭吗?
  • OpenAI发布GPT-5.4模型,朝自主智能体迈出重要一步
  • 女程序员如何高效率、不被骗地找到优质男友?——一份融合认知科学、行为心理学与系统化择偶策略的实战指南
  • 共享储能背景下微网运营商与用户聚合商间的Stackelberg博弈模型:MATLAB仿真与优化策略
  • 2026年汇总超声波液位计性价比高的品牌,值得收藏 - 工业品网
  • 计算机毕业设计之springboot大学生二手闲置物品置换交易管理系统
  • 亲测好用!2026 年私藏的 6 个 AI 论文写作宝藏网站
  • 郑州室内家装公司哪个靠谱,分享品牌推荐 - 工业设备
  • 帛书《周易》“泰壮”象不是《易经》“大壮”卦