# 毕业设计电商 **Repository Path**: aidayouxidecxy/graduation-project-e-commerce ## Basic Information - **Project Name**: 毕业设计电商 - **Description**: 毕业设计 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-28 - **Last Updated**: 2021-12-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # app ## Project setup ``` npm install ``` ### Compiles and hot-reloads for development ``` npm run serve ``` ### Compiles and minifies for production ``` npm run build ``` ### Lints and fixes files ``` npm run lint ``` ### Customize configuration See [Configuration Reference](https://cli.vuejs.org/config/). 1)lodash防抖(debounced)与节流(throttle) 不用npm安装,vue项目自带有 2)nprogress 加载进度条 npm install --save nprogress 3)mockjs 模拟接口数据 npm install --save mockjs 创建mock文件夹 添加假的数据(你需要模拟的数据,json格式) 把mock数据需要的图片放到public文件夹下 创建mockServer.js文件,通过mockjs插件实现模拟数据 把mockServer.js引入入口文件中至少执行一次,否则不能mock 4)安装swiper,npm install --save swiper@5 //5版本更稳定 在组件中引入包 在main.js中引入样式 因为是要等待接口数据,所以用watch+nextTick监听bannerList的数据变化 nextTick(将回调推迟到下一个 DOM 更新周期之后执行。在更改了一些数据以等待 DOM 更新后立即使用它。) 5)监听数据watch 可以保证数据一定ok,但不能保证v-for遍历结构是否完事 6)产品信息的数据,【比较复杂:skuInfo】,通过会话存储(不持久化,会话结束数据再消失) 本地存储|会话存储,一般存储的是字符串,需要把对象变为字符串存储(json),不能存储对象 sessionStorge.setItem('SKUINFO',JSON.stringify(this.skuInfo)); //获取存储数据 computed:{ skuInfo(){ return JSON.parse(sessionStorage.getItem('SKUINFO')) } } 7)uuid临时游客身份获取购物车数据(解决方案)(项目自带) npm => uuid 8)判断复选框是否被选中(数组every方法) isAllChecked(){ return this.cartInfoList.every(item=>item.isChecked==1)//只要有一个为false,就返回false } 9)注册业务 9.1注册业务|登录业务中表单验证先不处理【统一最后一天处理】 9.2获取验证码的接口 /api/... 10)登录业务 10.1注册---通过数据库储存用户信息(名字,密码) 10.2登录---登录成功的时候,后台为了区分你这个用户是谁-服务器下发token【令牌:唯一标识符】 登录接口做的不完美,一般登录成功服务器会下发token,前台持久化储存token,【带着token找服务器要用户信息进行展示】 10.3令牌理解: 11)退出登录 发送get请求,清除store中userInfo和token,以及本地存储的token(且要注意成功之后页面跳转home页面) 12)导航守卫 比如:用户已经登录,,用户不应该还能login页面 全局守卫:紫禁城大门守卫 路由独享守卫:去皇帝,太后,爱妃路上的守卫 组件内守卫:皇帝,太后,爱妃院子里的守卫 //13700000000 111111通用账号密码 13)微信支付的实现 后台返回微信支付链接 二维码图片地址src生成:qrcode插件(git找||npm) 前端使用elementui弹出框(能插入html内容) 14)全局守卫 未登录不能访问,交易相关(trade),支付相关(pay,paysuccess)、个人中心(center) 15)图片懒加载(Vue-Lazyload) 封装lazy插件 lazyload.js 16)vee-validate(表单验证插件)注册|登录页面 2.x版本的使用更简单 封装vue-validate.js 例子: 错误提示信息 {{errors.first("phone")}} 密码regex一般是8-20字符 写完还需要判断,输入格式没问题后提交表单 async userRegister(){ const success=this.$calidator.validateAll() if(success){ try { //如果成功--路由跳转 const {phone,code,password,password1}=this; //const phone=this.phone,code=this.code,password=this.password,password1=this.password1; (phone&&code&&password==password1) && await this.$store.dispatch('userRegister',{phone,code,password}) this.$router.push('/login') } catch (error) { alert(error.message); } } } 17)路由懒加载 import('./Foo.vue') // 返回 Promise 第一种:const Foo = () => import('./Foo.vue') 第二种:component:()=>import('...') 18)打包上线 项目打包后,代码都是经过加密的,如果运行时报错,输出的错误信息无法准确得知哪里的代码报错 有了 map 文件就可以像未加密的代码一样,准确的输出是哪一行那一列有错 改文件如果项目不需要可以去除掉 vue.config.js productionSourceMap:false 19)服务器 Xshell6控制服务器 Xftp7可以往远程服务器上传项目