<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>小程序开发专题 on PlumePHP</title><link>https://plumephp.com/posts/miniprogram/</link><description>Recent content in 小程序开发专题 on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 28 Sep 2026 15:00:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/posts/miniprogram/index.xml" rel="self" type="application/rss+xml"/><item><title>小程序数据统计与用户分析</title><link>https://plumephp.com/miniprogram-data-analytics/</link><pubDate>Mon, 28 Sep 2026 15:00:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-data-analytics/</guid><description>&lt;p&gt;小程序是「数据密度最高」的应用形态之一：微信自带官方统计，用户行为从点击、进入、停留到支付全链路可追踪。但拿到数据 ≠ 用对数据。本文从「官方统计 vs 自定义埋点」的区别出发，讲清楚小程序的埋点体系、核心分析方法与 AB 实验，帮助你从「看数字」升级到「用数据做决策」。&lt;/p&gt;</description></item><item><title>小程序实时音视频与直播能力</title><link>https://plumephp.com/miniprogram-live-av/</link><pubDate>Mon, 28 Sep 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-live-av/</guid><description>&lt;p&gt;直播是当下转化率最高的内容形态之一。微信小程序内置了完善的&lt;strong&gt;实时音视频能力&lt;/strong&gt;：&lt;code&gt;live-player&lt;/code&gt;/&lt;code&gt;live-pusher&lt;/code&gt; 组件让开发者可以快速搭建直播间，实时音视频（TRTC）服务则支持连麦、PK、多人互动等更复杂的场景。从「图文卖货」升级到「直播卖货」，是很多电商、教育、社交小程序的必经之路。本文从组件、链路、场景到合规，系统拆解小程序直播的实现路径。&lt;/p&gt;</description></item><item><title>小程序开放生态与插件体系</title><link>https://plumephp.com/miniprogram-plugin-ecosystem/</link><pubDate>Mon, 28 Sep 2026 13:00:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-plugin-ecosystem/</guid><description>&lt;p&gt;微信小程序不只是「一个应用」，而是一张&lt;strong&gt;不断扩展的能力网&lt;/strong&gt;：通过插件，开发者可以把支付、地图、客服、直播、商城等能力像积木一样接入自己的小程序；通过第三方平台，服务商可以批量代开发、代运营千万个小程序。理解这套开放生态，是让小程序从「孤岛应用」走向「生态节点」的关键。本文从插件开发、能力接入、第三方代开发三个层次拆解小程序的开放体系。&lt;/p&gt;</description></item><item><title>小程序分享与社交裂变实战</title><link>https://plumephp.com/miniprogram-share-growth/</link><pubDate>Mon, 28 Sep 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-share-growth/</guid><description>&lt;p&gt;微信是天然的&lt;strong&gt;社交裂变土壤&lt;/strong&gt;：熟人关系链密集、群聊触达效率高、分享路径极短。小程序「即点即用、无需下载」的轻量特性，让分享转化率远高于 H5。一个设计良好的分享裂变循环（分享 → 点击 → 体验 → 再分享）能让获客成本趋近于零。但裂变也是一把双刃剑——微信对诱导分享的打击非常严厉。本文从分享能力、裂变模型到合规红线，讲透小程序社交增长的完整打法。&lt;/p&gt;</description></item><item><title>小程序搜索与微信 SEO 优化实战</title><link>https://plumephp.com/miniprogram-search-seo/</link><pubDate>Mon, 28 Sep 2026 11:00:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-search-seo/</guid><description>&lt;p&gt;微信搜索是小程序最重要的&lt;strong&gt;免费自然流量入口&lt;/strong&gt;之一。用户已经养成了「在微信里搜一切」的习惯——搜品牌、搜服务、搜内容，而小程序正是搜索结果里最常见的承接载体。与 App 商店的 ASO 类似，小程序也有自己的「搜索优化」逻辑，但它的机制更加复杂：既有关键词权重，又有官方推出的&lt;strong&gt;服务直达&lt;/strong&gt;结构化能力。本文带你梳理小程序搜索的全部入口与可优化项。&lt;/p&gt;</description></item><item><title>小程序订阅消息与消息触达体系</title><link>https://plumephp.com/miniprogram-subscribe-messages/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-subscribe-messages/</guid><description>&lt;p&gt;小程序是典型的「用完即走」应用：用户低频打开、容易遗忘，而微信又不允许小程序像 App 一样随意推送。**订阅消息（Subscribe Message）**正是微信给小程序提供的一条受控触达通道——只有用户主动授权订阅，小程序才能在服务通知里发送模板消息。这一机制在保护用户不被骚扰的同时，也是小程序做留存、复购和召回最关键的运营抓手。本文系统梳理订阅消息的权限模型、发送链路与合规边界。&lt;/p&gt;</description></item><item><title>小程序动画与 Canvas 实践：交互动效、海报生成与可视化</title><link>https://plumephp.com/miniprogram-animation-canvas/</link><pubDate>Sat, 26 Sep 2026 12:30:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-animation-canvas/</guid><description>&lt;p&gt;动画让小程序「活起来」，Canvas 则承担了海报生成、图表绘制等无法用 WXML/CSS 表达的重任。但两者都藏着大量性能陷阱：动画用错属性会掉帧，Canvas 用错 API 在真机上黑屏，大图绘制直接撑爆内存。本文系统梳理 CSS 动画与 &lt;code&gt;wx.createAnimation&lt;/code&gt; 的适用边界、手势交互动效、Canvas 2D 与旧版 canvas 差异、海报生成流程、图表库选型与内存优化，帮助开发者写出流畅、稳定、可维护的动效与绘图代码。&lt;/p&gt;</description></item><item><title>微信支付与交易闭环：统一下单、回调与退款</title><link>https://plumephp.com/miniprogram-wechat-pay/</link><pubDate>Sat, 26 Sep 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-wechat-pay/</guid><description>&lt;p&gt;微信支付是电商、知识付费、线下到店等小程序商业化的核心环节。与一般 API 不同，支付涉及金额、签名、回调、退款、对账与合规，任何一步出错都意味着真金白银的损失。本文将以「微信支付 API v3」为主，完整拆解 JSAPI 支付的统一下单、拉起支付、回调验签与解密、退款对账、订单状态机，并给出云函数集成与合规注意事项。&lt;/p&gt;</description></item><item><title>小程序分包加载与性能优化进阶：主包瘦身、预下载与按需注入</title><link>https://plumephp.com/miniprogram-subpackage-perf/</link><pubDate>Sat, 26 Sep 2026 11:30:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-subpackage-perf/</guid><description>&lt;p&gt;上一篇文章《小程序性能优化全景指南》已经系统覆盖了性能优化的通用手段，本文聚焦分包加载与启动性能这条主线：当主包逼近 2MB 红线、冷启动明显变慢时，如何通过分包拆分、预下载、按需注入等技术把「首包体积」和「首屏耗时」降下来。内容包含分包原理、拆分策略、独立分包/异步分包、按需注入、资源优化与启动耗时分析工具，是对性能优化主题的纵深进阶。&lt;/p&gt;</description></item><item><title>小程序页面路由与导航架构：页面栈、tabBar 与自定义导航</title><link>https://plumephp.com/miniprogram-navigation-routing/</link><pubDate>Sat, 26 Sep 2026 11:00:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-navigation-routing/</guid><description>&lt;p&gt;小程序的路由系统与浏览器 URL 路由有本质区别：小程序维护一条「页面栈」，所有跳转都是对栈的压栈、出栈、替换操作。理解页面栈的行为模型，是设计导航架构的前提。本文将从页面栈机制讲起，覆盖五大路由 API、参数传递与 EventChannel 回传、自定义导航栏适配、路由分层与防跳转，以及分包与路由的协同设计。&lt;/p&gt;</description></item><item><title>小程序网络请求与数据层设计：wx.request、拦截器与状态管理</title><link>https://plumephp.com/miniprogram-network-data/</link><pubDate>Sat, 26 Sep 2026 10:30:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-network-data/</guid><description>&lt;p&gt;小程序的网络请求不仅是简单的 &lt;code&gt;wx.request&lt;/code&gt; 调用，更牵涉并发控制、错误处理、数据缓存、跨端数据一致性等系统工程问题。一套健壮的请求层设计，能显著降低业务代码复杂度、提升弱网体验、统一异常处理口径。本文将从 &lt;code&gt;wx.request&lt;/code&gt; 的底层行为讲起，逐步构建「请求封装 → 拦截器 → Repository 数据层 → 状态管理 → 缓存策略」的完整网络与数据架构。&lt;/p&gt;</description></item><item><title>小程序登录鉴权与用户体系：wx.login、code2session 与 Token</title><link>https://plumephp.com/miniprogram-login-auth/</link><pubDate>Sat, 26 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-login-auth/</guid><description>&lt;p&gt;小程序登录与常规 Web 登录有本质差异：微信不直接向开发者开放用户的密码体系，而是通过 &lt;code&gt;wx.login&lt;/code&gt; 获取临时凭证 code，再由开发者服务端调用微信接口换取用户的 OpenID。理解这条「code → code2session → 自定义 Token」链路，是构建小程序用户体系的基石。本文将从登录整体流程出发，深入拆解登录态 Token 设计、Session 管理、手机号快速验证、多端账号打通与登录态安全，帮助开发者搭建一套可靠、可扩展、可审计的登录鉴权方案。&lt;/p&gt;</description></item><item><title>小程序全栈项目实战：从零构建电商应用</title><link>https://plumephp.com/miniprogram-fullstack-project/</link><pubDate>Tue, 22 Sep 2026 12:15:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-fullstack-project/</guid><description>&lt;p&gt;理论知识只有在实战中才能真正内化。本文将以一个完整的电商小程序项目为例，从需求分析、技术选型、&lt;a href="https://plumephp.com/posts/architecture/"&gt;架构设计&lt;/a&gt;、前后端开发到最终部署，完整呈现全栈小程序项目的构建过程。这个项目综合运用了前文讨论的组件化架构、状态管理、云开发和性能优化等技术，为读者提供一个可参考、可复用的工程化实践样本。&lt;/p&gt;
&lt;h2 id="一项目概述"&gt;一、项目概述&lt;/h2&gt;
&lt;h3 id="11-需求范围"&gt;1.1 需求范围&lt;/h3&gt;
&lt;p&gt;本项目实现一个简版 B2C 电商小程序，覆盖以下核心功能模块：&lt;/p&gt;</description></item><item><title>小程序自动化测试与 CI/CD 实践</title><link>https://plumephp.com/miniprogram-testing-ci/</link><pubDate>Tue, 22 Sep 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-testing-ci/</guid><description>&lt;p&gt;软件质量保障离不开系统化的测试与持续交付。微信小程序作为运行在微信客户端内的应用，其测试与部署流程既有与传统 Web/App 共通的测试方法论，也有因为平台封闭性带来的特殊挑战。本文将从小程序特有的测试工具链出发，系统讲解单元测试、端到端自动化测试、微信官方 CI 服务以及与第三方 &lt;a href="https://plumephp.com/posts/devops/"&gt;CI/CD&lt;/a&gt; 平台的集成方案，帮助团队建立起可靠的质量门禁与交付流水线。&lt;/p&gt;</description></item><item><title>小程序安全与合规实践</title><link>https://plumephp.com/miniprogram-security-compliance/</link><pubDate>Tue, 22 Sep 2026 11:45:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-security-compliance/</guid><description>&lt;p&gt;随着小程序承载的业务场景日益复杂，涉及用户信息、支付交易和隐私数据的处理越来越多，安全与合规已从可选项变为必选项。微信小程序平台对安全和隐私的要求日益严格，违反相关规范可能导致审核被拒、功能受限甚至下架处理。本文将从代码安全、数据保护、隐私合规和审核策略四个维度，系统阐述小程序安全建设的核心要点。&lt;/p&gt;</description></item><item><title>小程序性能优化全景指南</title><link>https://plumephp.com/miniprogram-performance-optimization/</link><pubDate>Tue, 22 Sep 2026 11:30:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-performance-optimization/</guid><description>&lt;p&gt;小程序性能直接影响用户体验和留存率。微信官方数据显示，启动耗时每增加 1 秒，用户流失率会显著上升。本文将从包体积控制、渲染层优化、启动加速、网络请求优化和内存管理五个维度，构建一套完整的小程序性能优化体系，并配合实战案例说明每项优化的具体实施方法与效果量化。&lt;/p&gt;</description></item><item><title>小程序云开发实战</title><link>https://plumephp.com/miniprogram-cloud-development/</link><pubDate>Tue, 22 Sep 2026 11:00:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-cloud-development/</guid><description>&lt;p&gt;微信小程序云开发是微信官方推出的一站式后端云服务，它将云函数、云数据库、云存储和云调用四大能力整合在一起，使前端开发者无需搭建传统后端服务器即可构建完整的小程序应用。云开发采用 &lt;a href="https://plumephp.com/posts/tools/vercel/"&gt;Serverless&lt;/a&gt; 架构，开发者只需编写业务逻辑代码，由微信平台自动完成服务器运维、弹性扩缩容和负载均衡。本文将从云开发的整体架构入手，逐一深入各核心模块，并提供完整的实战案例。&lt;/p&gt;</description></item><item><title>多端小程序深度对比</title><link>https://plumephp.com/miniprogram-cross-platform-comparison/</link><pubDate>Tue, 22 Sep 2026 10:45:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-cross-platform-comparison/</guid><description>&lt;p&gt;国内移动互联网生态中，小程序已不再是微信小程序的专属概念。支付宝、字节跳动（抖音/今日头条）、百度和华为快应用等平台相继推出各自的轻应用框架，形成了多端并存的局面。对于希望覆盖更广泛用户群体的开发者和企业而言，理解各平台小程序的技术差异与适配策略至关重要。本文将从架构设计、API 差异、开发工具和商业生态等维度，深度对比五大平台的小程序方案。&lt;/p&gt;</description></item><item><title>小程序状态管理实战</title><link>https://plumephp.com/miniprogram-state-management/</link><pubDate>Tue, 22 Sep 2026 10:30:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-state-management/</guid><description>&lt;p&gt;随着小程序页面数量增加和业务逻辑复杂化，页面之间共享状态、同步数据的需求愈发迫切。微信小程序的原生架构并未内置类似 Vuex 或 Redux 的全局状态管理方案，开发者需要自行设计或使用第三方库来实现跨页面的状态共享。本文将从全局状态的核心设计出发，逐步深入到 MobX、Redux 等状态管理库在小程序中的适配实践，并提供完整的性能优化策略。&lt;/p&gt;</description></item><item><title>小程序组件化架构设计</title><link>https://plumephp.com/miniprogram-component-architecture/</link><pubDate>Tue, 22 Sep 2026 10:15:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-component-architecture/</guid><description>&lt;p&gt;随着小程序业务逻辑的日益复杂，单一页面内堆砌全部 UI 与交互逻辑的开发模式已难以维护。组件化架构成为构建中大型小程序项目的必然选择。本文将从小程序自定义组件的核心机制出发，逐步深入到 Behavior 复用、Slot 插槽、组件间通信，以及组件库的工程化建设，提供一套完整的小程序组件化设计方法论。&lt;/p&gt;</description></item><item><title>微信小程序原生开发完全指南</title><link>https://plumephp.com/miniprogram-native-development-guide/</link><pubDate>Tue, 22 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/miniprogram-native-development-guide/</guid><description>&lt;p&gt;微信小程序原生开发是所有跨端框架（Taro、Uni-app、WePY）的底层基础。无论是使用框架开发还是原生开发，深入理解微信小程序的核心技术栈——WXML、WXSS、JavaScript 和 JSON 配置——都是构建高质量小程序的必经之路。本文将系统性地剖析原生小程序开发的完整技术体系，从视图层到逻辑层，从基础配置到高级组件化，帮助开发者建立扎实的原生开发能力。&lt;/p&gt;</description></item><item><title>数字无极图像识别实现：基于特征向量与相似度匹配的闭集识别方案</title><link>https://plumephp.com/diginf-animal-image-recognition-implementation/</link><pubDate>Wed, 10 Dec 2025 10:00:00 +0800</pubDate><guid>https://plumephp.com/diginf-animal-image-recognition-implementation/</guid><description>&lt;p&gt;先不管具体语言栈，我先帮你把&amp;quot;怎么做一个可用的动物识别 API&amp;quot;这件事拆开，从整体方案到识别算法到 API 设计到数据结构到一些坑点，讲一遍。你后面如果确定用 &lt;a href="https://plumephp.com/posts/golang/"&gt;Go&lt;/a&gt; 或 &lt;a href="https://plumephp.com/posts/nodejs/"&gt;Node&lt;/a&gt; 或 &lt;a href="https://plumephp.com/posts/python/"&gt;Python&lt;/a&gt;，我再帮你落地到代码。&lt;/p&gt;</description></item><item><title>数字无极小程序问答设计</title><link>https://plumephp.com/shu-zi-wuji-qa-design/</link><pubDate>Mon, 24 Nov 2025 13:18:45 +0800</pubDate><guid>https://plumephp.com/shu-zi-wuji-qa-design/</guid><description>&lt;h2 id="1-需求"&gt;1. 需求&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;一个展览 = 一个或多个问答流程（这里先按一个流程来设计，可扩展多流程）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个流程有多道题，题型包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;单选题 &lt;code&gt;single_choice&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;多选题 &lt;code&gt;multiple_choice&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;判断题 &lt;code&gt;true_false&lt;/code&gt;（本质是特殊单选）&lt;/li&gt;
&lt;li&gt;填空题 / 简单文本题 &lt;code&gt;text&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;答案形式要支持：&lt;/p&gt;</description></item><item><title>数字无极小程序接口设计</title><link>https://plumephp.com/shu-zi-wuji-api-design/</link><pubDate>Sun, 06 Jul 2025 13:18:45 +0800</pubDate><guid>https://plumephp.com/shu-zi-wuji-api-design/</guid><description>&lt;h2 id="小程序后端接口文档"&gt;小程序后端接口文档&lt;/h2&gt;
&lt;h3 id="公共说明"&gt;公共说明&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;所有接口统一前缀：&lt;code&gt;/api/v1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;所有需要身份验证的接口需携带 &lt;code&gt;Authorization: Bearer &amp;lt;token&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;接口统一响应格式：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;code&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;success&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;data&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;code&lt;/code&gt; 为 0 表示成功，其他值表示失败&lt;/li&gt;
&lt;li&gt;&lt;code&gt;message&lt;/code&gt; 为错误信息&lt;/li&gt;
&lt;li&gt;&lt;code&gt;data&lt;/code&gt; 为接口返回的数据&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="1-用户模块"&gt;1. 用户模块&lt;/h2&gt;
&lt;h3 id="11-微信登录"&gt;1.1 微信登录&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;接口名称&lt;/strong&gt;：微信登录&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：POST&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;路径&lt;/strong&gt;：&lt;code&gt;/auth/login&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;描述&lt;/strong&gt;：通过微信 code 获取用户信息，生成登录 token&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;请求参数&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;code&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;微信临时登录凭证（wx.login 获取）&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;响应参数&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;token&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;登录令牌&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;user_info&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;openid&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;微信用户唯一标识&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;nickname&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;张三&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;avatar&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;phone&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;138xxxx0000&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="12-获取手机号"&gt;1.2 获取手机号&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：POST&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;路径&lt;/strong&gt;：&lt;code&gt;/user/phone&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;描述&lt;/strong&gt;：解密微信手机号或校验手机号验证码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;请求参数（方式一：微信加密数据）&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;encryptedData&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;iv&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;请求参数（方式二：验证码校验）&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;phone&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;138xxxxxxx&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;code&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1234&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;响应参数&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;phone&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;138xxxxxxx&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="13-获取验证码"&gt;1.3 获取验证码&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：POST&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;路径&lt;/strong&gt;：&lt;code&gt;/auth/send_code&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;描述&lt;/strong&gt;：向手机号发送短信验证码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;请求参数&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;phone&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;138xxxxxxx&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;响应参数&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;验证码已发送&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="14-验证验证码"&gt;1.4 验证验证码&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：POST&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;路径&lt;/strong&gt;：&lt;code&gt;/user/verify_code&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;描述&lt;/strong&gt;：验证用户验证码是否正确&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;请求参数&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;phone&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;138xxxxxxx&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;code&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1234&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;响应参数&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;验证码验证通过&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="15-获取用户信息"&gt;1.5 获取用户信息&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;方法&lt;/strong&gt;：GET&lt;/p&gt;</description></item><item><title>数字无极小程序功能规划</title><link>https://plumephp.com/shu-zi-xiao-cheng-neng/</link><pubDate>Sun, 06 Jul 2025 13:18:34 +0800</pubDate><guid>https://plumephp.com/shu-zi-xiao-cheng-neng/</guid><description>&lt;p&gt;本小程序为用户提供丰富的展览浏览功能，支持展览收藏、点赞、分享与预约参观和大屏互动。用户可通过微信登录和手机号验证快速登录，在线购票并支持二维码核销，方便高效地完成整个观展流程。&lt;/p&gt;</description></item><item><title>微信小程序开发框架优势</title><link>https://plumephp.com/xiao-cheng-kai-fa-kuang-jia-you-shi/</link><pubDate>Thu, 01 Aug 2024 20:55:29 +0800</pubDate><guid>https://plumephp.com/xiao-cheng-kai-fa-kuang-jia-you-shi/</guid><description>&lt;p&gt;使用微信小程序开发框架如Taro或Uni-app，相比于微信原生开发，它们提供了一些额外的优势，但同时也存在一些需要注意的地方。&lt;/p&gt;
&lt;h3 id="优势"&gt;优势：&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;跨平台开发&lt;/strong&gt;：Taro和Uni-app都支持跨平台开发，可以同时生成微信小程序、H5、&lt;a href="https://plumephp.com/posts/frontend/react/"&gt;React&lt;/a&gt; Native等不同平台的应用 。&lt;/p&gt;</description></item><item><title>微信小程序项目框架结构推荐</title><link>https://plumephp.com/xiao-cheng-mu-kuang-jia-gou/</link><pubDate>Wed, 31 Jul 2024 21:11:45 +0800</pubDate><guid>https://plumephp.com/xiao-cheng-mu-kuang-jia-gou/</guid><description>&lt;p&gt;在构建一个复杂的微信小程序大项目时，项目结构的合理性对于项目的可维护性、可扩展性和开发效率至关重要。以下是一个推荐的项目框架结构，它考虑了模块化、组件化以及清晰的职责分离：&lt;/p&gt;</description></item></channel></rss>