换个方式用C#开发微信小程序
换个方式用C#开发微信小程序在传统认知中微信小程序开发几乎被 JavaScript 和 WXML 垄断开发者需要学习一套全新的语法体系。但如果你是一名 C# 开发者是否能用熟悉的语言来开发小程序答案是肯定的。本文将介绍如何通过Blazor Hybrid结合微信小程序云开发用 C# 替代 JavaScript 构建小程序逻辑层实现“换个方式”的开发体验。## 为什么需要换个方式-技术栈统一如果团队后端是 .NET Core前端用 C# 开发小程序可以减少语言切换成本。-代码复用业务逻辑层如数据处理、接口调用可共享给 Web 端Blazor和移动端MAUI。-强类型优势C# 的编译时检查能避免 JavaScript 的动态类型错误尤其适合复杂业务场景。## 核心思路Blazor Hybrid 微信小程序云开发Blazor Hybrid 允许在原生应用中嵌入 Web UI而微信小程序本质上也是一个 WebView 容器。我们可以将 Blazor 编译后的 WebAssembly 文件部署到小程序云托管中让小程序加载 Blazor 渲染的页面。同时通过 JSBridge 调用微信原生 API如登录、支付。### 技术架构图微信小程序壳 → 加载 Blazor WebAssembly → 调用 C# 逻辑 ↓ 云开发 SDKJS → 通过 JSBridge 返回给 C### 准备工作1. 安装 .NET 8 SDK 和 Blazor WebAssembly 模板。2. 注册微信小程序并开通云开发功能。3. 创建一个小程序空白项目仅作为壳。## 第一步创建 Blazor 项目bashdotnet new blazorwasm -n WeChatMiniAppBlazorcd WeChatMiniAppBlazor修改wwwroot/index.html添加微信 JS-SDK 引用用于调用原生能力htmlscript srchttps://res.wx.qq.com/open/js/jweixin-1.6.0.js/script## 第二步用 C# 编写业务逻辑在Pages/Index.razor中我们用 C# 处理用户登录和云数据库查询csharppage /using Microsoft.JSInteropinject IJSRuntime JSRuntimeh3换个方式开发的微信小程序/h3button onclickLogin微信登录/buttonif (!string.IsNullOrEmpty(userInfo)){ div用户信息userInfo/div}code { private string? userInfo; private async Task Login() { // 1. 通过 JSBridge 调用微信原生 wx.login 获取 code var code await JSRuntime.InvokeAsyncstring(wxLogin); // 2. 调用云函数获取 openid实际应通过后端 API var openid await JSRuntime.InvokeAsyncstring(callCloudFunction, getOpenId, code); // 3. 模拟数据绑定实际应调用云数据库 userInfo $用户 {openid} 登录成功; StateHasChanged(); }}注意wxLogin和callCloudFunction需要在 JavaScript 中实现见下一步。## 第三步编写 JSBridge 适配层在wwwroot/js/app.js中编写 JavaScript 桥接函数让 C# 能调用微信原生 APIjavascript// 微信登录桥接window.wxLogin function () { return new Promise((resolve, reject) { wx.login({ success: res resolve(res.code), fail: err reject(err.errMsg) }); });};// 调用云函数桥接window.callCloudFunction function (name, data) { return new Promise((resolve, reject) { wx.cloud.callFunction({ name: name, data: { code: data }, success: res resolve(res.result.openid), fail: err reject(err.errMsg) }); });};## 第四步发布并部署到小程序云托管1. 编译 Blazor 项目bash dotnet publish -c Release -o publish2. 将publish/wwwroot文件夹内容上传到微信云开发平台的静态网站托管。3. 在小程序项目中创建一个 WebView 页面加载云托管地址xml !-- pages/webview/webview.wxml -- web-view srchttps://你的云托管域名/index.html/web-view4. 配置小程序白名单在云开发控制台设置 WebView 域名。## 第五步处理小程序原生能力以分享为例在 Blazor 中通过InvokeAsync调用微信分享 APIcsharpcode { private async Task ShareToMoments() { // 调用 JS 中的 wxShare 函数 await JSRuntime.InvokeVoidAsync(wxShare, new { title 用C#开发的小程序, path /pages/webview/webview, imageUrl https://example.com/share.jpg }); }}对应 JavaScriptjavascriptwindow.wxShare function (options) { wx.updateAppMessageShareData({ title: options.title, path: options.path, imageUrl: options.imageUrl, success: () console.log(分享成功) });};## 注意事项1.性能考虑Blazor WebAssembly 首次加载需要下载 .NET 运行时约 2MB建议启用压缩和预加载。2.API 限制部分微信 API如蓝牙、NFC无法通过 WebView 调用需通过小程序原生页面中转。3.调试方式使用微信开发者工具时需在 WebView 中开启调试模式https://debugx5.qq.com。## 完整示例云数据库查询下面演示如何用 C# 查询微信云数据库中的商品列表csharppage /productsinject IJSRuntime JSRuntimeh3商品列表/h3if (products null){ p加载中.../p}else{ ul foreach (var item in products) { liitem.Name - ¥item.Price/li } /ul}button onclickLoadProducts刷新数据/buttoncode { private ListProduct? products; private async Task LoadProducts() { // 调用云函数查询数据库对应云函数代码见后 var result await JSRuntime.InvokeAsyncstring(queryDatabase, products); products System.Text.Json.JsonSerializer.DeserializeListProduct(result); } public class Product { public string Name { get; set; } public decimal Price { get; set; } }}云函数queryDatabaseNode.js部署在云开发中javascript// 云函数入口文件const cloud require(wx-server-sdk)cloud.init()const db cloud.database()exports.main async (event, context) { const collection event.collection try { const res await db.collection(collection).get() return res.data } catch (err) { return err }}## 总结通过 Blazor Hybrid 微信小程序云托管的方式C# 开发者可以1.零学习成本用熟悉的 C# 语法和 Razor 组件构建小程序界面与逻辑。2.共享代码库将业务逻辑封装成 .NET 库同时用于 Web 端和小程序端。3.强类型安全编译时发现类型错误减少运行时崩溃。当然这种方式并非万能——你需要额外维护 JSBridge 层且无法使用所有微信原生 API。但对于中后台管理、数据展示类小程序它提供了一种高效且优雅的开发路径。现在打开你的 .NET 环境尝试用 C# 书写你的第一个微信小程序吧

相关新闻

Tabee浏览器标签页管理工具终极指南:深度解析标签页定制与自动化规则引擎

Tabee浏览器标签页管理工具终极指南:深度解析标签页定制与自动化规则引擎

Tabee浏览器标签页管理工具终极指南:深度解析标签页定制与自动化规则引擎 【免费下载链接】chrome-tab-modifier Take control of your tabs 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-tab-modifier 在现代Web开发和多任务处理中,浏览…

2026/10/15 14:27:11 阅读更多 →
verilog HDLBits刷题[Finite State Machines]“Fsm1”---Simple FSM1(asynchronous reset)

verilog HDLBits刷题[Finite State Machines]“Fsm1”---Simple FSM1(asynchronous reset)

1、题目 This is a Moore state machine with two states, one input, and one output. Implement this state machine. Notice that the reset state is B. This exercise is the same as fsm1s, but using asynchronous reset. 2、分析 Moore 有限状态机:输出只…

2026/10/17 22:14:56 阅读更多 →
暗黑破坏神2存档编辑器终极指南:5分钟学会修改游戏存档

暗黑破坏神2存档编辑器终极指南:5分钟学会修改游戏存档

暗黑破坏神2存档编辑器终极指南:5分钟学会修改游戏存档 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 暗黑破坏神2(Diablo 2)作为一款经典的动作角色扮演游戏,吸引了无数玩家投入…

2026/10/18 1:22:55 阅读更多 →

最新新闻

多模态图像分类案例

多模态图像分类案例

当然可以!以下是使用CIFAR-10数据集进行多模态图像识别分类的完整代码。由于CIFAR-10只有图像没有文本描述,我会模拟生成对应的文本描述来实现多模态实验:import torch import torch.nn as nn import torch.optim as optim from torch.utils.…

2026/10/18 23:10:18 阅读更多 →
Ashampoo Photo Commander:海量本地照片的管理与批处理利器

Ashampoo Photo Commander:海量本地照片的管理与批处理利器

管理照片这件事,我从还在用光盘版图片库软件的时代就开始折腾,十几年换过不少工具。Ashampoo Photo Commander 在国内算不上一线网红软件,但每次有人问我"本地图片管理到底该用什么",它基本都排在我推荐清单的前三名。说…

2026/10/18 23:10:18 阅读更多 →
根治你的健忘虾!全网最全!23款Agent记忆架构大横评:从向量数据库到TaoToken统一通道

根治你的健忘虾!全网最全!23款Agent记忆架构大横评:从向量数据库到TaoToken统一通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 23:10:18 阅读更多 →
C#显示设置实战:设置缩放比例后,鼠标光标位置与屏幕大小如何精准换算(TaoToken统一Key/API通道)

C#显示设置实战:设置缩放比例后,鼠标光标位置与屏幕大小如何精准换算(TaoToken统一Key/API通道)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 23:10:18 阅读更多 →
2026年AI Agent面试通关秘籍:用TaoToken统一Key打通MCP与Function Call实战

2026年AI Agent面试通关秘籍:用TaoToken统一Key打通MCP与Function Call实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 23:10:18 阅读更多 →
水文站点实时数据爬虫:Selenium+Requests混合方案实战

水文站点实时数据爬虫:Selenium+Requests混合方案实战

简介:本资源是一套面向Python初学者与数据爱好者设计的水文实时数据采集与可视化实践项目,聚焦网络爬虫与基础数据分析能力训练,适用于环境监测、水利信息化等场景的入门级技术验证。压缩包共9个文件,含3个核心Python脚本&#xf…

2026/10/18 23:09:18 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →