1. 为什么选择 Vue3 + Vant 来构建购物商城?
如果你正在寻找一个能快速上手、开发体验流畅、并且最终产品性能出色的技术栈来开发一个购物商城,那么 Vue3 配合 Vant 移动端 UI 库,绝对是一个让你“真香”的选择。我自己在最近的一个电商项目中就采用了这套组合,从零到上线,整个过程踩过一些坑,也积累了不少实战心得,今天就来和你详细聊聊。
首先说说 Vue3。Vue3 带来的 Composition API,尤其是 setup 语法糖,彻底改变了我们组织代码的方式。以前在 Vue2 里,一个功能相关的 data、methods、computed 可能会散落在组件选项的不同位置,维护一个稍微复杂点的页面,比如商品列表页,上下滚动找代码是常事。现在用 setup,你可以把所有跟“商品列表”相关的逻辑——数据获取、分页加载、筛选逻辑——都集中写在一起,代码的內聚性大大提升,阅读和维护起来就像读一篇结构清晰的文章,舒服多了。这对于商城项目里动辄几十上百个组件的场景来说,长期维护成本能降低不少。
然后是 Vant。做移动端商城,UI 组件库的选择至关重要。Vant 是业界公认的、为移动端而生的 Vue UI 库,它的组件设计完全遵循了移动端的交互习惯。你需要的商城基础组件,比如轮播图 Swipe、商品卡片 Card、数字步进器 Stepper、提交订单栏 SubmitBar、地址编辑 AddressEdit 等等,它都提供了,而且样式美观,开箱即用。更重要的是,Vant 对 Vue3 的支持非常完善和稳定,这意味着你不需要自己去折腾一些基础组件的兼容性问题,可以把精力完全放在业务逻辑的实现上。
这套组合的另一个巨大优势是“快”。Vue3 本身的性能优化(如更快的虚拟 DOM、Tree-shaking 支持)让页面响应更迅速。Vant 的组件按需引入能力,配合现代构建工具,能确保最终打包出来的文件体积尽可能小。对于一个购物商城应用,首屏加载速度直接关系到用户留存,这一点至关重要。我实测下来,一个中等复杂度的商城首页,在优化后能做到 1.5 秒内完成核心内容渲染,用户体验非常顺滑。
2. 从零开始:项目初始化与环境搭建
万事开头难,但一个好的开始能让后续开发事半功倍。这里我会带你一步步搭建一个干净、可扩展的项目基础。
2.1 创建 Vue3 项目与基础配置
首先,确保你的开发环境已经安装了 Node.js(建议版本 16 或以上)和 npm。打开终端,我们使用 Vue 官方的脚手架工具 create-vue 来创建项目,这是目前创建 Vue3 项目最推荐的方式。
npm create vue@latest
执行这个命令后,命令行会交互式地询问你一些配置选项。对于我们的商城项目,我的建议如下:
- 项目名称:输入
mall-project或你喜欢的名字。 - 是否添加 TypeScript:强烈建议选择 Yes。TypeScript 能在开发阶段就帮你捕获很多潜在的类型错误,对于中大型的商城项目,它能极大提升代码的健壮性和团队协作效率。别担心,Vant 对 TypeScript 的支持很好。
- 是否添加 JSX 支持:根据习惯选择,商城项目用模板语法居多,可以选 No。
- 是否添加 Vue Router:选择 Yes。单页面应用的路由管理是必须的。
- 是否添加 Pinia:选择 Yes。这是 Vue 官方推荐的状态管理库,比 Vuex 更简洁、对 TypeScript 支持更好,非常适合管理商城的用户信息、购物车数据等全局状态。
- 是否添加 Vitest 等测试工具:初期可以选 No,后期有需要再加。
- 是否添加 ESLint:选择 Yes。统一的代码风格很重要。
项目创建完成后,进入项目目录并安装依赖:
cd mall-project
npm install
现在,你的项目骨架就搭好了。我习惯在 package.json 里添加几个常用的脚本别名,比如把 npm run dev 改成更简短的 npm start:
{
"scripts": {
"start": "vue-cli-service serve",
"build": "vue-cli-service build",
"preview": "vite preview"
}
}
2.2 引入并配置 Vant 组件库
接下来,我们把 Vant 请进项目。使用 npm 或 yarn 安装:
npm add vant
我强烈推荐使用 按需引入 的方式。这能确保最终打包时只包含你实际使用到的组件代码,有效控制包体积。我们需要安装两个插件来辅助实现:
npm add unplugin-vue-components -D
然后,修改你的构建配置文件(如果你用的是 Vite,就是 vite.config.ts):
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import { VantResolver } from 'unplugin-vue-components/resolvers'
export default defineConfig({
plugins: [
vue(),
Components({
resolvers: [VantResolver()],
}),
],
})
这样配置之后,你就可以在项目的任何 .vue 文件中直接使用 Vant 组件了,无需再手动 import 和 components 注册。插件会自动识别并为你处理。比如,在模板里直接写 <van-button type="primary">按钮</van-button>,它就能正常渲染。这大大提升了开发效率,是我认为 Vant 生态里最棒的特性之一。
2.3 项目目录结构规划
一个清晰的项目结构是团队协作和项目可维护性的基石。参考我之前的项目经验,我通常会这样组织 src 目录:
src/
├── api/ # 所有网络请求接口,按模块划分
│ ├── home.ts
│ ├── product.ts
│ └── user.ts
├── assets/ # 静态资源
│ ├── images/
│ └── styles/ # 全局样式、变量
├── components/ # 全局公共组件
│ ├── common/ # 纯UI组件,如按钮、弹窗
│ └── content/ # 业务组件,如商品卡片、分类栏
├── composables/ # Composition API 可复用逻辑(Vue3特色)
├── router/ # 路由配置
├── stores/ # Pinia 状态管理仓库
│ ├── cart.ts
│ └── user.ts
├── types/ # TypeScript 类型定义
├── utils/ # 工具函数
├── views/ # 页面级组件
│ ├── Home.vue
│ ├── Category.vue
│ └── Cart.vue
└── App.vue
└── main.ts
重点说一下 composables 目录,这是 Vue3 Composition API 的精髓所在。你可以把一些通用的、与UI无关的业务逻辑抽离到这里,比如 usePagination(分页逻辑)、useLocalStorage(本地存储操作)、useProductDetail(商品详情数据获取与处理)。这样,相同的逻辑在不同页面间复用会变得非常轻松。
3. 商城核心功能实战:用 Composition API 组织代码
现在,我们进入最核心的部分,用 Vue3 的 setup 和 Composition API 来实现商城的几个典型页面。你会发现,这种代码组织方式有多么清晰和高效。
3.1 首页:商品列表与无限滚动加载
首页通常是商城的门面,核心是商品列表


6405

被折叠的 条评论
为什么被折叠?



