当前位置: 首页 > news >正文

vue+element-plus简洁完美实现淘宝网站模板

目录

一、项目介绍

二、项目截图

1.项目结构图

2.首页

3.详情

4.购物车

5.登陆页

三、源码实现

1.路由配置

2.依赖包

四、总结


一、项目介绍

项目在线预览:点击访问

本项目为vue项目,参考淘宝官方样式为主题来设计元素,简洁美观;

技术要点:vue、 路由router、element-plus、vuex、axios等;

二、项目截图

1.项目结构图

开发软件是webstorm,当然vscode、hbuilder等都可以,看自己习惯就行。

2.首页

分为顶部+中间具体页面+底部,组件思想重复利用实现 

3.详情

参考淘宝官方样式实现

4.购物车

5.登陆页

三、源码实现

 项目以组件(顶部、底部)+主布局页面配合路由构思实现,可以通过组件思维重复利用共同的局部页面,简单且美观,也更加利于后期功能页面拓展和维护、修改等。

1.路由配置

import { createRouter, createWebHistory } from 'vue-router'
// import { useUserStore } from '@/stores'

const router = createRouter({
  // history: createWebHistory(import.meta.env.BASE_URL),
  history: createWebHistory(import.meta.env.VITE_APP_BASE_PATH),
  routes: [
    {
      name: '首页',
      path: '/',
      component: () => import('@/views/layout/index.vue'),
      redirect: '/index',
      children: [
        {
          name: '首页',
          path: '/index',
          component: () => import('@/views/home/index.vue')
        },
        {
          name: '详情',
          path: '/detail',
          component: () => import('@/views/detail/index.vue')
        },
        {
          name: '购物车',
          path: '/cart',
          component: () => import('@/views/cart/index.vue')
        }
      ],
    },
    {
      path: '/login',
      name: '登录页',
      component: () =>
        import( /* webpackChunkName: "page" */ '@/views/login/index.vue')
    }
  ]
})

// 登录访问拦截 => 默认是直接放行的
// 根据返回值决定,是放行还是拦截
// 返回值:
// 1. undefined / true  直接放行
// 2. false 拦回from的地址页面
// 3. 具体路径 或 路径对象  拦截到对应的地址
//    '/login'   { name: 'login' }
// router.beforeEach((to) => {
//   // 如果没有token, 且访问的是非登录页,拦截到登录,其他情况正常放行
//   const useStore = useUserStore()
//   if (!useStore.token && to.path !== '/login3') return '/login3'
// })

export default router

2.依赖包

{
  "name": "vue3-project",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "dev": "vite",
    "build": "vite build --mode prod",
    "preview": "vite preview",
    "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore",
    "format": "prettier --write src/",
    "prepare": "husky install",
    "lint-staged": "lint-staged"
  },
  "dependencies": {
    "@element-plus/icons-vue": "^2.3.0",
    "@vant/area-data": "^1.5.1",
    "@vueup/vue-quill": "^1.2.0",
    "axios": "^1.4.0",
    "element-china-area-data": "^6.1.0",
    "element-plus": "^2.3.7",
    "express-jwt": "^8.4.1",
    "jsonwebtoken": "^9.0.2",
    "pinia": "^2.1.3",
    "vant": "^4.9.0",
    "vite-plugin-style-import": "^2.0.0",
    "vue": "^3.4.0",
    "vue-router": "^4.2.2",
    "vuex": "^4.1.0",
    "qrcode-generator": "^1.4.4"
  },
  "devDependencies": {
    "@rushstack/eslint-patch": "^1.2.0",
    "@vitejs/plugin-vue": "^4.2.3",
    "@vue/eslint-config-prettier": "^7.1.0",
    "eslint": "^8.39.0",
    "eslint-plugin-vue": "^9.11.0",
    "husky": "^8.0.0",
    "lint-staged": "^13.2.3",
    "pinia-plugin-persistedstate": "^3.1.0",
    "prettier": "^2.8.8",
    "sass": "^1.63.6",
    "unplugin-auto-import": "^0.16.6",
    "unplugin-vue-components": "^0.25.1",
    "vite": "^4.3.9"
  },
  "lint-staged": {
    "*.{js,ts,vue}": [
      "eslint --fix"
    ]
  }
}

四、总结

项目页面完整,后续可能将不断升级,完善其他页面。

关注作者,及时了解更多好项目!

更多优质项目请看作者主页!

获取源码或如需帮助,可通过博客后面名片+作者即可!

相关文章:

  • 【STM32】内存管理
  • UE_C++ —— Delegates
  • 网络安全营运周报
  • 【Linux系统编程】网络编程
  • 机器学习数学通关指南——拉格朗日乘子法
  • 汽水分离器 酿酒不锈钢碳钢蒸汽发生器锅炉空气旋风式油水分离器
  • Python----数据分析(Numpy一:numpy库简介,与list列表的区别,数组的创建,随机数组的创建)
  • 一、初始爬虫
  • 基于数据可视化学习的卡路里消耗预测分析
  • VisActor/VTable - 快速搭建表格
  • 【HeadFirst系列之HeadFirst设计模式】第10天之迭代器与组合模式:遍历与管理的艺术
  • 【C语言】第七期——字符数组、字符串、类型转换
  • JavaScript函数-arguments的使用
  • Kafka安装
  • 抽象类的好处
  • vue3学习2
  • 加密数据的模糊查询
  • BY组态:开启工业智能化的未来之钥
  • socket编程详解
  • 【HarmonyOS Next】地图使用详解(一)
  • hois.skxy.wordpress/seo分析案例
  • 成功的微网站/中文域名注册官网入口
  • 河南省汝州市建设网站/百度数据研究中心官网
  • 旅游网站设计的目的/智能营销系统
  • 权威的顺德网站建设/百度快速排名工具
  • 永久免费网站/企业营销策略有哪些