news 2026/9/8 23:56:03

微信小程序商城实战:小米商城增删改查毕设项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
微信小程序商城实战:小米商城增删改查毕设项目

微信小程序商城项目实战:手把手搭建小米商城,增删改查全流程,毕设面试两不误

这次我们直接开干一个微信小程序商城项目,以小米商城为原型,从零搭建前端界面、后台管理系统,并完整实现商品增删改查、用户登录、购物车等核心功能。无论你是准备毕业设计、面试前突击,还是想快速上手微信小程序全栈开发,这篇教程都可以直接收藏。

项目本身不复杂,但覆盖了微信小程序开发的主要技术栈:WXML/WXSS 页面布局、JavaScript 逻辑交互、云开发或自建后端接口、数据库操作(增删改查)、用户授权与登录态管理。读完本文,你不仅能跑通一个完整的小米商城小程序,还能知道怎么把这套代码复用到其他电商类项目。

核心能力速览

能力项说明
前端框架微信小程序原生开发(WXML+WXSS+JS)
后台方案可选微信云开发(免服务器)或自建 Node.js/Java 后端
数据库云开发数据库 / MongoDB / MySQL(根据后端选型)
核心功能商品列表、商品详情、购物车、用户登录、地址管理、订单管理
增删改查后台管理端对商品、分类、订单的完整 CRUD
开发工具微信开发者工具
适合人群前端初中级开发者、准备毕设或面试的在校生
难点登录态管理、购物车本地存储与同步、后端接口设计
复用性修改商品数据和 UI 即可适配其他商城

适用场景与使用边界

适合谁?

  • 想快速完成一个微信小程序毕设项目,需要完整功能展示。
  • 面试前端岗位时,需要一个能说清“前后端交互、数据流、权限管理”的实战项目。
  • 想学习微信小程序开发,从仿站开始练手。

能解决什么问题?

  • 展示商品信息、用户浏览购买的基本流程。
  • 后台管理商品、分类、订单,支持增删改查。
  • 用户登录与授权,获取微信用户信息。

不适合什么场景?

  • 高并发、大流量电商平台(小程序原生+云开发能力有限)。
  • 需要复杂支付、物流、售后系统的商业项目(本项目仅为教学演示)。
  • 完全零基础未接触过 JavaScript 和前端基础的用户(建议先学 JS 基础)。

安全与合规提醒

  • 用户登录时务必遵循微信小程序隐私政策,获取用户信息前需弹窗授权。
  • 商品图片、品牌名称等素材需确保版权合规,教学使用建议用占位图。
  • 后台管理端需设置权限控制,防止未授权操作。

环境准备与前置条件

在开始写代码前,需要准备好以下工具和环境:

  • 微信开发者工具:从微信官网下载,注册小程序 AppID(个人或企业均可,测试可用测试号)。
  • Node.js(可选,如果自建后端):推荐 v16+,用于运行后端服务器。
  • 云开发环境(如果使用云开发):开通微信云开发,创建数据库集合。
  • 代码编辑器:VS Code 或其他,用于编写后端代码或管理项目文件。
  • 基础前端知识:HTML/CSS/JavaScript,理解微信小程序生命周期。

硬件要求:普通电脑即可,无需高配置。开发过程中只需微信开发者工具模拟器,真机调试需要一台手机和流量。

安装部署与启动方式

4.1 创建微信小程序项目
  1. 打开微信开发者工具,点击“新建项目”。
  2. 填写项目名称(如“小米商城”),选择目录,输入 AppID(可使用测试号,但部分 API 受限)。
  3. 选择“不使用云服务”或“使用云开发”根据需求勾选。
  4. 设置项目语言为 JavaScript,模板选择“基础模板”。
  5. 点击“确定”进入开发界面。
4.2 初始化项目结构

在项目根目录下,我们按功能模块规划文件夹:

project/ ├── pages/ │ ├── index/ // 首页 │ ├── category/ // 分类页 │ ├── goods/ // 商品详情 │ ├── cart/ // 购物车 │ ├── user/ // 个人中心 │ ├── login/ // 登录页 │ └── admin/ // 后台管理(可选单独页面) ├── components/ // 公共组件 ├── utils/ // 工具函数 ├── app.js ├── app.json ├── app.wxss └── project.config.json
4.3 配置 AppID 与基础信息

project.config.json中确保appid字段正确。在app.json中注册所有页面路径:

{ "pages": [ "pages/index/index", "pages/category/category", "pages/goods/goods", "pages/cart/cart", "pages/user/user", "pages/login/login", "pages/admin/admin" ], "window": { "navigationBarTitleText": "小米商城", "navigationBarBackgroundColor": "#ffffff", "navigationBarTextStyle": "black" }, "tabBar": { "list": [ {"pagePath": "pages/index/index", "text": "首页", "iconPath": "images/home.png"}, {"pagePath": "pages/category/category", "text": "分类", "iconPath": "images/category.png"}, {"pagePath": "pages/cart/cart", "text": "购物车", "iconPath": "images/cart.png"}, {"pagePath": "pages/user/user", "text": "我的", "iconPath": "images/user.png"} ] } }
4.4 启动后端服务(选择自建 Node.js 后端)

如果使用微信云开发,跳过此步骤。采用自建后端时,用 Express 搭建简单 API:

npm init -y npm install express cors body-parser mongoose

创建server.js

const express = require('express'); const cors = require('cors'); const app = express(); app.use(cors()); app.use(express.json()); // 模拟商品数据(实际从 MongoDB 读取) let goods = [ { id: 1, name: '小米14', price: 3999, image: 'https://via.placeholder.com/200' }, { id: 2, name: 'Redmi K70', price: 2499, image: 'https://via.placeholder.com/200' } ]; // 增删改查接口 app.get('/api/goods', (req, res) => res.json(goods)); app.post('/api/goods', (req, res) => { goods.push({ id: Date.now(), ...req.body }); res.json({ success: true }); }); app.put('/api/goods/:id', (req, res) => { /* 更新逻辑 */ }); app.delete('/api/goods/:id', (req, res) => { /* 删除逻辑 */ }); app.listen(3000, () => console.log('Server running on 3000'));
4.5 前后端联调

在小程序app.js中配置后端地址:

App({ globalData: { baseUrl: 'http://localhost:3000' // 开发环境,真机调试时改为局域网IP } });

在任意页面通过wx.request调用接口:

wx.request({ url: getApp().globalData.baseUrl + '/api/goods', success: (res) => { console.log(res.data); } });

功能测试与效果验证

5.1 首页商品列表展示

测试目的:验证前端能否正确渲染后端返回的商品数据。
操作步骤

  1. pages/index/index.jsonLoad生命周期中调用商品接口。
  2. 将返回的数据绑定到data.goodsList
  3. WXML 中使用wx:for循环渲染卡片布局。

预期结果:模拟器首页显示商品卡片,包含图片、名称、价格。
常见失败原因

  • 后端未启动或端口错误。
  • 接口返回数据格式与前端预期不一致(如字段名大小写)。
  • 请求被拦截(开发环境需关闭“校验合法域名”)。
5.2 商品详情页面

测试目的:点击商品卡片跳转到详情页,并展示完整信息。
实现方式:通过navigator组件传递商品id,详情页通过options.id获取并请求单个商品接口。
验证:详情页显示商品大图、价格、描述、加入购物车按钮。

5.3 购物车增删改查

测试目的:购物车增删改查功能是否正常。
实现方式:使用本地缓存wx.setStorageSync保存购物车数据,或通过接口同步。
操作步骤

  1. 在商品详情页点击“加入购物车”,将商品数据存入缓存(若已存在则增加数量)。
  2. 购物车页面读取缓存,显示商品列表,支持修改数量、删除商品、清空购物车。
  3. 计算总价并显示。

预期结果:加入商品后,购物车页面展示对应商品,数量可调,总价自动更新。
排查方法

  • 检查缓存数据结构和读写逻辑。
  • 注意wx.setStorageSync的同步与异步问题。
5.4 用户登录与授权

测试目的:获取微信用户信息,完成登录态管理。
流程

  1. 用户点击“授权登录”按钮,触发wx.getUserProfile(微信已调整,需使用getUserInfo+ 按钮 open-type)。
  2. 获取code通过后端换取openid(云开发可自动获取)。
  3. 将用户信息存入全局或缓存,标记已登录状态。

常见问题

  • 微信官方对用户信息接口有调整,需使用wx.getUserProfilegetUserInfo结合open-type
  • 2023年后,wx.getUserInfo不再弹出授权弹窗,需用户手动点击按钮。
  • 模拟器上可能无法模拟真实授权,建议真机调试。
5.5 后台管理增删改查

测试目的:后台管理页面能否对商品、分类、订单进行 CRUD 操作。
实现方式:单独页面pages/admin/admin,通过表单提交调用后端接口。
操作步骤

  1. 管理员登录(可简单密码验证或直接开放)。
  2. 展示商品列表,每条记录有“编辑”“删除”按钮。
  3. 点击“新增商品”弹出表单,提交后刷新列表。
  4. 编辑同理,删除需二次确认。

预期结果:数据能正确写入/更新/删除,并反映到前端页面。
注意:教学演示无需权限校验,但实际项目必须配置登录鉴权。

接口 API 与批量任务

6.1 接口设计示例

接口设计遵循 RESTful 风格,返回 JSON 格式。

方法接口路径功能参数
GET/api/goods获取商品列表可选page,limit,category
GET/api/goods/:id获取商品详情
POST/api/goods新增商品name,price,image,description
PUT/api/goods/:id更新商品同上
DELETE/api/goods/:id删除商品
POST/api/login用户登录code(返回 openid)
GET/api/orders获取订单列表(需登录)
6.2 批量任务示例:商品批量上架

后台管理端支持批量导入商品,通过上传 CSV 或 JSON 文件。
前端使用wx.chooseMessageFile选择文件,读取后通过接口逐个或批量新增。

伪代码

// 小程序端读取文件 wx.chooseMessageFile({ count: 1, type: 'file', success: (res) => { const filePath = res.tempFiles[0].path; wx.getFileSystemManager().readFile({ filePath: filePath, encoding: 'utf-8', success: (data) => { const goodsList = JSON.parse(data.data); // 假设文件是JSON数组 // 逐条调用新增接口 goodsList.forEach(item => { wx.request({ url: getApp().globalData.baseUrl + '/api/goods', method: 'POST', data: item, fail: (e) => console.error(e) }); }); } }); } });

后端可增加批量接口POST /api/goods/batch,接收数组,一次插入数据库,减少请求次数。

资源占用与性能观察

微信小程序本身非常轻量,主要资源消耗在:

  • 内存:本地缓存数据(购物车、登录态)一般不超过 10MB,无需担心。
  • 网络:频繁请求接口会消耗用户流量,建议对数据做缓存(如商品列表缓存 5 分钟)。
  • 后端服务器:如果自建 Node.js,单机可支撑几百人同时访问,但图片资源建议使用 CDN 或云存储。

性能优化建议

  • 使用setData时合并多次更新,避免频繁渲染。
  • 图片使用懒加载或压缩,商品列表页优先加载缩略图。
  • 后端接口添加分页,避免一次性返回大量数据。
  • 云开发数据库有免费额度,注意查询次数限制。

常见问题与排查方法

问题现象可能原因排查方式解决方案
小程序启动后白屏页面路径未注册或 app.json 格式错误查看控制台错误信息检查app.jsonpages字段
接口请求失败errno: 600001后端地址未配置或域名未校验关闭“校验合法域名”或配置白名单开发环境勾选“不校验合法域名”,生产环境需配置
登录后获取不到用户信息微信 API 调整,未使用新版授权方式打印wx.getUserProfile返回值改用open-type="getUserInfo"按钮
购物车数据不刷新缓存未及时更新或页面未重新加载检查setStorageSync调用时机onShow中重新读取缓存
管理后台商品列表显示不全后端分页参数错误或数据库查询失败查看后端日志,检查接口返回数据调试分页逻辑,确保skiplimit正确
真机调试时网络不通后端地址为 localhost,手机无法访问改为电脑的局域网 IP,并关闭防火墙使用ipconfig查看 IP,替换baseUrl

最佳实践与使用建议

  1. 从小项目开始:先实现首页和商品列表,再逐步添加购物车、登录、后台管理。每完成一个功能就真机测试一次。
  2. 代码组织:将公共方法(如请求封装、日期格式化)放在utils文件夹,减少重复代码。
  3. 数据管理:商品数据建议使用云开发数据库或 MongoDB,方便后期扩展。本地缓存只用于购物车等临时数据。
  4. 版本控制:使用 Git 管理代码,每次稳定版本后提交,方便回退。
  5. 接口安全:后台管理接口应添加 Token 验证,防止未授权操作。
  6. 素材合规:不要直接使用小米官方图片,使用占位图或自行设计。
  7. 面试准备:理解项目中的难点(如登录态管理、购物车同步、组件通信),能清晰表述技术选型理由。

总结与下一步

这个小米商城小程序项目覆盖了微信小程序开发的核心流程,从页面搭建、数据请求、增删改查到后台管理,如果你能完整跑通并理解每个环节,应付毕业设计或初级前端面试完全足够。

最先要验证的功能:首页商品列表接口能否正常返回数据。
最容易踩的坑:用户登录授权接口的变动和真机调试的网络问题。
后续可以扩展的方向

  • 接入微信支付(需企业资质)。
  • 添加商品搜索、筛选、排序功能。
  • 实现订单状态流转(待付款、已付款、已发货、已完成)。
  • 使用 WebSocket 实现客服聊天。
  • 将后台管理做成独立 PC 端(Vue3 + Element Plus)。

建议收藏本文,搭配代码实操,效果更佳。如果你在过程中遇到问题,欢迎在评论区留言,我会尽量协助排查。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 19:30:32

LangChain实战指南:从核心概念到RAG与Agent工程落地

最近不少读者问我:LangChain 版本更新这么快,社区资料又杂,到底该怎么学才不踩坑?这个问题问得很实在。我见过不少团队把 LangChain 当成“调用大模型的 HTTP 封装”来用,结果项目一复杂就发现到处都是坑:P…

作者头像 李华
网站建设 2026/9/8 23:55:25

移动平均模型MA:用“意外”预测时间序列的量化利器

如果你刚开始接触量化交易里的时间序列建模,大概率会被“MA模型”这个词搞晕。技术分析里有 MA5、MA10 均线,AI 圈最近也天天聊模型量化(比如 INT8 压缩),而统计学里还有一个 Moving Average Model。同样是“MA”&…

作者头像 李华
网站建设 2026/9/5 14:41:24

长时程任务为何总翻车?Agent工程化闭环的四个技术瓶颈与解法

最近,投资人 Chamath 的一句评论在 AI 圈里传得很快:长时程任务仍是笑话,AI 将陷入幻灭低谷。这句话大概率会让不少正在做 Agent 产品的人感到冒犯,但稍微冷静一点,就会发现它戳中了当前 AI 应用最疼的地方。过去一年&…

作者头像 李华
网站建设 2026/9/6 10:16:22

交通灯检测未标注数据获取与利用:从数据集挖掘到伪标签训练

简介:本资源是面向计算机视觉与智能交通领域研究者的交通灯检测基础数据集,适用于目标检测模型训练、信号灯状态识别算法验证及CCF BDCI相关赛题备赛。数据集包含2000个原始采集样本,其中1997张JPG格式图像覆盖城市道路、交叉口、不同光照与天…

作者头像 李华
网站建设 2026/9/2 7:48:50

嵌入式C语言数据类型扩展:从stdint.h到volatile的确定性编程

很多从 PC 端 C 语言开发转嵌入式的人,都会在某个时刻遇到一种诡异的情况:代码在电脑上编译运行一点问题没有,放到单片机工程里就各种错乱。排查到最后,往往发现罪魁祸首不是逻辑,而是int类型。C 语言标准对int只给了一…

作者头像 李华
网站建设 2026/9/6 13:25:23

牛客五模编程题详解:校招笔试算法备战与刷题策略

2019年牛客第五次模拟考试的编程题集合,我到现在还有印象。那时候秋招刚进入白热化,身边同学人手一个牛客账号,每周模考雷打不动。五模这个场次比较特殊,它不像前几模那样偏重单一考点,而是把字符串处理、排序、动态规…

作者头像 李华