黑马Vue电商

本文介绍了基于Vue的电商项目开发,涵盖了前端技术栈如Element-UI、Axios和Editor,后端采用Express搭建API。详细讲解了登录退出的实现,包括用户状态存储、session与token的理解,以及登陆页面的组件使用。同时,概述了首页、商品分类、分类参数和添加商品的开发流程,涉及布局、路由守卫、树形表格和级联选择框等关键点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言:
最近发现养成记录的习惯真的太好了,本人习惯于用笔记记录,但是关于项目流程这些,其实没有一个特别系统化的认知,最近刷b站黑马的vue电商视频,再看到有很多小伙伴都记录了自己的开发流程,于是我决定把他摸出来记录一下! 这里参考了以下2个链接,都写的太棒拉!
参考1.
参考2.
参考3.

一、项目技术栈

1、1 前端

创建项目以后我直接用包管理器安装的,饿了么也是使用的全局(我懒)
大致需要安装:

  • Element-UI
  • Axios
  • Editor
  • Nprogress
  • Echarts

2、1 后端

后端是已经写好了的,采用 express 搭建的 API 服务,返回的数据是 JSON 格式的数据,只需要导入数据库,并配置一下数据库信息,就可以跑起来了。(跟着视频走)

二、开发流程

在这里插入图片描述

2、1 登陆和退出

  • 分析登陆业务流程
    1、在登陆页面输入用户名和密码。
    2、调用后台接口进行验证。
    3、通过验证后,根据后台响应状态跳转首页。

  • 登陆和退出的技术点
    1、了解用户信息存储方式。
    2、通过session在服务器记录状态。
    3、通过token来维持用户状态。

    应该掌握(自行了解~等我把整个文章都写完了再回来补充答案):
    1、什么时候用session或者cookie呢?
    2、两者有什么区别呢?
    3、跨域是什么?

token原理分析图
在这里插入图片描述

2-1-1 登陆页面

在这里插入图片描述
需要用到的饿了么组件:

  • el-form      (表单)
  • el-form-item      (表单的内容项)
  • el-input      (输入框)
  • el-button      (登陆重置按钮)
  • icon       (输入框前面的图标)
  • Message       (登陆成功失败以后的提示)

需要掌握:

每个表单都要绑定数据对象。:model
每个input绑定对应表单数据对象的属性。v-model
vue获取dom元素的方式为在标签上写ref。ref=xxx
表单重置的方法是resetFields。 this.$refs.xxx.resetFields()

验证表单的方法是validate。
this.$refs.xxx.validate( (valid) => { if (!valid) return)}
表单重置和验证,input必须要有prop属性去绑定对应的表单属性。
保存信息到session里面
window.sessionStorage.setItem("保存的名字",要保存的数据)
跳转页面:this.$router.push("/login");

<!-- 登陆 -->
<template>
  <div class="login_container">
    <div class="login_box">
      <!-- 头像 -->
      <div class="avatar_box">
        <img src="../assets/headerImg.jpg" />
      </div>
      <!-- 登陆 -->
      <el-form ref="loginFormRef" :model="loginForm" :rules="loginFormRules">
        <!-- 用户名 -->
        <el-form-item prop="username">
          <el-input
            prefix-icon="iconfont icon-user"
            v-model="loginForm.username"
            placeholder="请输入用户名"
          ></el-input>
        </el-form-item>
        <!-- 密码 -->
        <el-form-item prop="password">
          <el-input
            prefix-icon="iconfont icon-3702mima"
            v-model="loginForm.password"
            show-password
            placeholder="请输入登陆密码"
          ></el-input>
        </el-form-item>
        <!-- 按钮 -->
        <el-form-item class="btn">
          <el-button type="primary" @click="login">登陆</el-button>
          <el-button type="info" @click="resetLoginForm">重置</el-button>
        </el-form-item>
      </el-form>
    </div>
  </div>
</template>

<script>
export default {
   
  data() {
   
    return {
   
      //登陆表单
      loginForm: {
   
        username: "草莓SAMA",
        password: "xwq997",
      },
      // 表单验证规则
      loginFormRules: {
   
        username: ....此处省略
        password: ....此处省略
        ],
      },
    };
  },

  components: {
   },
  methods: {
   
    //重置按钮
    resetLoginForm() {
   
      this.$refs.loginFormRef.resetFields();
    },
    // 登陆按钮
    login() {
   
      this.$refs.loginFormRef.validate(async (valid) => {
   
        if (!valid) return;
        const {
    data: res } = await this.$axios.post("login", this.loginForm);
        console.log(res);
        if (res.meta.status !== 200) return this.$message.error("登陆失败");
        this.$message.success("登陆成功");
        //保存token到session里面
        window.sessionStorage.setItem("token", res.data.token);
        this.$router.push("/home");
      });
    },
  },
};
</script>

</style>

2、2 首页

在这里插入图片描述

需要用到的组件:

  • el-container      布局容器
  • NavMenu      左侧菜单栏

补充:beforeEach (是一个回调函数)如果是有权限的页面,要用路由导航守卫来进行判断。(不用的话,直接复制地址也可以进入页面。用了的话就会判断是否有token)
to:要去的页面
from:当前所在的页面(从哪个页面跳到to的页面)
next:能否进入成功 最重要的参数!只要有这个参数,就必须调用才能执行。,
next()放行,next(‘/login’)强制跳转

在data中定义一个数组menulist来接收左侧菜单数据

data数据为:
iconList: [
        "iconfont icon-user",
        "iconfont icon-tijikongjian",
        "iconfont icon-shangpin",
        "iconfont icon-danju",
        "iconfont icon-baobiao"
1.2. 结构化一下 1.3. 图形化一下 1.3.1. 运营商后台 1.3.2. 商家后台 1.3.3. 网页前台 参考京东 2. 技术选型 前端:angularJS + Bootstrap 后台:SSM( springmvc+spring+mybatis) 数据库:mysql,使用mycat读写分离 开发模式:SOA 服务中间件:dubbox,需要和zookeeper配合使用 注册中心:zookeeper 消息中间件:Activemq,使用spring-jms 负载均衡:nginx 搜索:solr集群(solrCloud),配合zookeeper搭建, 使用spring-data-solor 缓存:redis集群,使用spring-data-redis 图片存储:fastDFS集群 网页静态化:freemarker 单点登录:cas 权限管理:SpringSecurity, 跨域:cros 支付:微信扫描 短信验证:阿里大于 密码加密:BCrypt 富文本:KindEditor 事务:声明式事务 任务调度:spring task 所有的技术,都可能涉及到为什么用?怎么用?用的过程中有什么问题? 3. 框架搭建 3.1. 前端 理解baseControler.js、base.js、base_pagination.js,以及每一个xxxController.js里面都公共的做了些什么。 baseControler.js 分页配置 列表刷新 处理checkBox勾选 xxxControler.js 自动生成增删改查 base_pagination.js 带分页 base.js 不带分页 3.2. dao 使用了mybatis逆向工程 4. 模块开发 逐个模块开发就好 4.1. 学会评估模块难不难 一个模块难不难从几方面考虑。 涉及几张表? 1,2张表的操作还是没有什么难度的。 涉及哪些功能? 增删改查,批量删除。 前端展示? 分页列表、树形、面包屑、三级联动、内容格式化。 4.2. 举几个简单模块的例子 4.2.1. 品牌管理 单表 分页、新增、删除、修改 4.2.2. 规格管理 2张表 分页、新增、删除、修改、显示优化(显示列表内容的一部分) 4.2.3. 模板管理 2张表 分页、新增、删除、修改、显示优化(显示列表内容的一部分) 4.2.4. 分类管理 单表 4.2.5. 商家审核 单表 4.3. 举一个复杂模块 4.3.1. 商品新增 需要插入3张表,tb_goods、tb_goods_desc、tb_item 前端:三级联动、富文本、图片上传、动态生成内容 4.3.2. 商品修改 需要从3张表获取数据,然后进行回显。 4.4. 典型模块设计 4.4.1. 管理后台 商品新增、商品修改 4.4.2. 前台页面 搜索模块实现 购物车模块实现 支付模块实现 秒杀模块实现 5. 开发过程中问题&优化 1.1. 登录 单点登录怎么实现 session怎么共享 1.2. 缓存 哪些场景需要用到redis redis存储格式的选择 怎么提高redis缓存利用率 缓存如何同步 1.3. 图片上传 图片怎么存储 图片怎么上传 1.4. 搜索 ​ 怎么实现 数据量大、 并发量高的搜索 怎么分词 1.5. 消息通知 ​ 哪些情况用到activeMq 1.6. 优化 seo怎么优化 怎么加快访问速度 1.7. 秒杀 ​ 怎么处理高并发 ​ 秒杀过程中怎么控制库存
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值