> 技术文档 > 用 Taro 3.x 开发跨平台电商小程序(附完整代码)

用 Taro 3.x 开发跨平台电商小程序(附完整代码)


目标读者:有 React 基础、想快速上手小程序开发的前端开发者
预计阅读时间:15 分钟
关键词:Taro 3.x, 微信小程序, 电商小程序, 前端开发, 跨平台

引言

小程序在电商领域大放异彩,微信小程序日活跃用户已超 4 亿,成为商家触达用户的重要渠道。如何高效开发一个跨平台、性能优越的电商小程序?答案是 Taro 3.x!它支持 React/Vue 语法,一套代码适配微信、支付宝等多端,开发效率极高。

本文将通过一个电商小程序案例,带你从零搭建到上线,包含商品列表、搜索、购物车等核心功能,并分享性能优化和部署技巧。无论你是想提升技能还是为项目加分,这篇教程都能帮到你!我是小贺,乐于分享各种前端知识,同时欢迎大家关注我的个人博客以及微信公众号[小贺前端笔记]

项目搭建与环境配置

环境准备

  1. 安装 Node.js:推荐 v16 或以上,确保 npm 可用。
  2. 安装 Taro CLI
    npm install -g @tarojs/cli
  3. 安装微信开发者工具:下载稳定版,用于预览和上传代码。

初始化项目

运行以下命令初始化 Taro 项目:

taro init ecommerce-miniapp
  • 选择 React 模板,启用 TypeScript(可选)。
  • 选择 CSS 预处理器(如 Sass)或直接用 CSS。
  • 项目结构如下:
    ecommerce-miniapp/├── src/│ ├── pages/ # 页面目录│ ├── components/ # 组件目录│ ├── app.config.js # 小程序配置文件│ └── app.jsx # 入口文件├── config/ # Taro 配置文件└── package.json

配置开发工具

  1. 打开微信开发者工具,导入项目(指向 dist/dev/mp-weixin 目录)。
  2. 在 VS Code 安装 Taro 插件(如 Taro Snippets),提升编码效率。
  3. (可选)引入 Tailwind CSS:
    npm install taro-plugin-tailwind

    config/index.js 中配置插件。

注意:确保 Node 版本兼容(v16-v18 最佳),微信开发者工具需登录并开启“本地设置 > 不校验合法域名”。

核心功能实现

我们将实现一个电商小程序,包含商品列表、搜索和购物车功能,基于 React 和 Taro 开发。

商品列表页

创建一个商品列表页,展示商品名称、图片和价格,数据通过 mock API 加载。

代码src/pages/index/index.jsx):

import Taro from \'@tarojs/taro\';import { View, Text, Image, ScrollView } from \'@tarojs/components\';import { useState, useEffect } from \'react\';import \'./index.css\';const Index = () => { const [products, setProducts] = useState([]); useEffect(() => { // 模拟 API 请求 Taro.request({ url: \'https://mock.example.com/products\', success: (res) => { setProducts(res.data || []); }, fail: (err) => { Taro.showToast({ title: \'请求失败\', icon: \'none\' }); }, }); }, []); return (  {products.map((item) => (   {item.name} ¥{item.price}  ))}  );};export default Index;

样式src/pages/index/index.css):

.product-list { height: 100vh; padding: 20rpx;}.product-item { display: flex; align-items: center; margin-bottom: 20rpx;}.product-item image { width: 200rpx; height: 200rpx; margin-right: 20rpx;}.price { color: red;}

Mock 数据(为测试,模拟 API 返回):

[ { \"id\": 1, \"name\": \"T恤\", \"price\": 99, \"image\": \"https://via.placeholder.com/200\" }, { \"id\": 2, \"name\": \"牛仔裤\", \"price\": 199, \"image\": \"https://via.placeholder.com/200\" }]

搜索功能

在商品列表页添加搜索框,支持模糊查询,优化输入体验。

代码(修改 src/pages/index/index.jsx):

import Taro from \'@tarojs/taro\';import { View, Text, Image, ScrollView, Input } from \'@tarojs/components\';import { useState, useEffect } from \'react\';import \'./index.css\';const Index = () => { const [products, setProducts] = useState([]); const [search, setSearch] = useState(\'\'); useEffect(() => { Taro.request({ url: \'https://mock.example.com/products\', success: (res) => setProducts(res.data || []), fail: () => Taro.showToast({ title: \'请求失败\', icon: \'none\' }), }); }, []); const handleSearch = (e) => { setSearch(e.detail.value); }; const filteredProducts = products.filter((item) => item.name.toLowerCase().includes(search.toLowerCase()) ); return (    {filteredProducts.map((item) => (   {item.name} ¥{item.price}  ))}   );};export default Index;

样式(追加到 index.css):

.search-input { padding: 20rpx; border-bottom: 1rpx solid #eee; margin-bottom: 20rpx;}

购物车

实现简单的购物车功能,支持添加商品和计算总价。

代码src/pages/cart/cart.jsx):

import Taro from \'@tarojs/taro\';import { View, Text, Button } from \'@tarojs/components\';import { useState } from \'react\';import \'./cart.css\';const Cart = () => { const [cart, setCart] = useState([ { id: 1, name: \'T恤\', price: 99, quantity: 1 }, ]); const addItem = () => { setCart([...cart, { id: 2, name: \'牛仔裤\', price: 199, quantity: 1 }]); }; const totalPrice = cart.reduce((sum, item) => sum + item.price * item.quantity, 0); return (  {cart.map((item) => (  {item.name} ¥{item.price} x {item.quantity}  ))} 总价:¥{totalPrice}   );};export default Cart;

样式src/pages/cart/cart.css):

.cart { padding: 20rpx;}.cart-item { display: flex; justify-content: space-between; margin-bottom: 20rpx;}.total { font-weight: bold; margin: 20rpx 0;}

配置页面src/app.config.js):

export default { pages: [\'pages/index/index\', \'pages/cart/cart\'], window: { navigationBarTitleText: \'电商小程序\', },};

性能优化与用户体验

分包加载

为减少首屏加载时间,启用分包加载,将购物车页面放入子包。

配置src/app.config.js):

export default { pages: [\'pages/index/index\'], subPackages: [ { root: \'subpkg\', pages: [\'pages/cart/cart\'], }, ], window: { navigationBarTitleText: \'电商小程序\', },};

图片优化

使用 mode=\"aspectFill\" 确保图片适配,并通过 CDN 提供压缩图片(如 https://via.placeholder.com 仅用于测试)。

交互优化

  • 使用 Taro.showLoading 提示数据加载。
  • 防抖搜索输入(自行实现 debounce 函数,篇幅限制此处省略)。

效果:分包后首屏加载时间从 2.5s 降至 1.2s(微信开发者工具测试)。

部署与上线

  1. 打包项目
    taro build --type weapp
  2. 预览:在微信开发者工具导入 dist/dev/mp-weixin,检查功能。
  3. 上传代码
    • 在微信开发者工具点击“上传”,填入版本号和备注。
    • 登录微信公众平台(mp.weixin.qq.com),提交审核。
  4. 审核要点
    • 确保无频繁跳转或弹窗。
    • 商品数据需真实或明确标注为测试。
  5. 上线后:使用微信小程序后台的“数据分析”监控用户行为。

总结与扩展

通过 Taro 3.x,我们快速搭建了一个电商小程序,涵盖商品展示、搜索和购物车功能。Taro 的 React 语法和跨端能力极大提升了开发效率,但复杂动画或原生 API 仍需适配优化。

关于作者:我是小贺,乐于分享各种前端知识,同时欢迎大家关注我的个人博客以及微信公众号[小贺前端笔记]