Vue2 实战 基于 Elmenet-UI 的 单页面开发 用户信息增删改查 | 支持分页查询 | 自动登录

案例介绍

为了熟悉 Vue2 框架 的使用,现采用 Vue2的基础知识、Router路由、Vuex 管理仓库来实现一个可对用户进行增删改查的小案例。数据存储在浏览器的 localStorage 本地缓存中,方便模拟从后端获取数据,不过这里仅有前端部分,没有涉及 axios 请求相关的内容。
技术栈:Vue2 + ElementUI + Vue Router + Vuex
【注:本案例只是作为初学者的分享,里面的设计思路不一定适合特定场景,可能存在许多不足,仅供参考】

案例地址:https://gitee.com/ccuni/vue-easy-user-crud

一、相关知识


1.1 Vue

Vue 是国人大牛【尤雨溪】开发的一套用于构建用户界面的开源的渐进式框架,支持 MVVM架构,具有易用、灵活和高效的特点,是前端领域比较火热的框架,不过目前最流行的前端框架还是 React,React框架在国外使用量最多,这里简单提一下。
目前 Vue2 是大多数使用企业中的主流版本(据说),而 Vue3 带来了更高性能,增加了一些新特性,在这里我以Vue 2 为主,先掌握 Vue2 的使用,之后有时间再继续学习 Vue3。

1.2 Vue-Router

Vue-Router 是 Vue官方提供的路由插件。
使用 Vue 开发的 Web 项目支持 SPA 页面的渲染,即 Single Page Web Application,单页面的web应用。
单页面可以提升页面切换速度,每次切换都是局部加载页面,提升网站的响应速度,减少服务器压力,支持组件化构建。
而 Vue-Router 简单来说就是支持我们定义不同的 URL 请求地址,跳转到不同的路由组件,在本次案例中,我没有使用到路由守卫、元数据等内容,只是简单的配置了一下页面和路由组件的映射,适合初学者入门。

1.3 Vuex

Vuex 也是 Vue官方提供的插件,采用集中式存储管理应用的所有组件的状态,主要分为三层,分别是 action 响应层,mutations 数据处理层,store 存储层。
对于这三层,我们可以类比 MVC架构里的 Controller、Service和 DAO, 但是这里是有区别的,可以从 mutations 直接到 store,而不经过 action。
在本次案例中,我使用 Vuex 来保存处理用户信息的所有业务代码,这样其他的所有路由组件都可以调用,可有效的降低代码耦合度,而用户的信息也存储在了 Vuex 的 store 层,方便任意组件获取数据。
在这里插入图片描述

1.4 VueCLI

Vue CLI 又称脚手架,是搭建 Vue项目的工具,在我们做 Vue 项目的开发时,不可能每次都从零开始创建项目文件,这样效率是比较低的,而官方提供的基于 Node.js 的脚手架可以很好的解决这个问题,我本次的案例是基于脚手架开发的,其中有许多文件都是默认生成的,不用自己手动去配置,降低了开发难度。

1.5 Element-UI

Element 是国内【饿了么】开发团队为开发者、设计师和产品经历准备的基于 Vue 的开源的桌面端组件库,有支持 Vue2的版本,同时也有支持 Vue3 的对应版本,用了这个神奇的框架,我们可以快速搭建前端页面,实现想要的效果,除此之外,该框架提供了一系列基于 Vue 实现的功能,大大降低了开发难度。

二、页面展示


2.1 注册页面

因为没有连接后端,故目前没有写注册功能

在这里插入图片描述

2.2 登录页面

在这里插入图片描述

2.3 管理页面

在这里插入图片描述

2.4 查看用户详情

在这里插入图片描述

2.5 编辑指定的用户

在这里插入图片描述

2.6 批量删除用户

在这里插入图片描述

2.7 退出登录

在这里插入图片描述

2.8 条件查询+分页

在这里插入图片描述

2.9 添加用户

在这里插入图片描述

三、思路整理


3.1 项目结构

本案例使用 Vue-CLI 脚手架进行创建,其中有一些是默认创建的文件

案例项目的整体结构
在这里插入图片描述

父项目各个组件的分配
在这里插入图片描述

用户路由组件包括它的子组件
在这里插入图片描述

理清项目结构后,接下来就是关键功能实现的描述,稍微记录一下,将来可以做个优化。

3.2 自动登录

自动登录功能的实现是在 Vue各个生命周期钩子函数中的 mounted() ,即已挂载函数里执行。

在 Vue2 中,当页面渲染完毕则会执行这个函数,此时我们就可以在这个方法里执行自动登录。

自动登录的实现方式有很多,以前学到的就是读取浏览器中的cookie,然后用cookie里的用户信息向服务端发送登录的请求,这是比较传统的方式了,后来听说有了 token 凭证的方法,在 JavaWeb应用中称为 JWT,即 JSON Web Token,本质上就是一种字符串,规定好格式的字符串,它相比cookie安全很多,因为其中用到了加密算法,加密的密钥是由服务端设置的,在这里暂时不做深入,了解有这么一个技术即可。

在本次案例中我使用的是 localStorage 本地缓存,因为我们的浏览器中也是有数据库存在的,存储 Cookie、缓存这类信息,这里我就将用户登录的信息存储到本地缓存,然后在自动登录时读取这个缓存,因为没有后端,得到信息后就直接执行登录的方法,判断是否登录成功即可,整体来说逻辑还是比较简单的。

mounted(){
   
  // 读取本地缓存中的 userInfo,并转为 Object 对象
  let userInfo = JSO
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Vue和Element UI增删改查操作,一般可以按照以下步骤进行: 1. 引入Element UI组件和相关样式 在Vue组件中,需要先引入Element UI组件和相关的样式文件,比如: ``` import { Table, Button, Dialog, Form, FormItem, Input } from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' ``` 2. 创建数据列表 使用Table组件创建数据列表,可以指定表头和数据源,例如: ``` <el-table :data="tableData"> <el-table-column prop="name" label="名称"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button type="primary" @click="handleEdit(scope.row)">编辑</el-button> <el-button type="danger" @click="handleDelete(scope.row)">删除</el-button> </template> </el-table-column> </el-table> ``` 其中,tableData是数据源,handleEdit和handleDelete是编辑和删除操作的方法。 3. 创建弹窗 使用Dialog和Form组件创建弹窗,可以设置表项和按钮,例如: ``` <el-dialog :visible.sync="dialogVisible"> <el-form :model="formData"> <el-form-item label="名称"> <el-input v-model="formData.name"></el-input> </el-form-item> <el-form-item label="年龄"> <el-input v-model="formData.age"></el-input> </el-form-item> </el-form> <div slot="footer"> <el-button @click="dialogVisible = false">取消</el-button> <el-button type="primary" @click="handleSave">保存</el-button> </div> </el-dialog> ``` 其中,dialogVisible是弹窗的显示状态,formData是表数据,handleSave是保存操作的方法。 4. 实现增删改查操作 在Vue组件中,需要定义相关的方法来实现增删改查操作,例如: ``` export default { data() { return { tableData: [ { name: '张三', age: 18 }, { name: '李四', age: 20 }, { name: '王五', age: 22 } ], dialogVisible: false, formData: {} } }, methods: { handleAdd() { this.formData = {} this.dialogVisible = true }, handleEdit(row) { this.formData = { ...row } this.dialogVisible = true }, handleSave() { // 保存操作 if (this.formData.id) { // 编辑操作 const index = this.tableData.findIndex(item => item.id === this.formData.id) this.tableData.splice(index, 1, this.formData) } else { // 新增操作 this.tableData.push({ ...this.formData, id: new Date().getTime() }) } this.dialogVisible = false }, handleDelete(row) { // 删除操作 const index = this.tableData.findIndex(item => item.id === row.id) this.tableData.splice(index, 1) } } } ``` 其中,handleAdd是新增操作的方法,handleSave用来保存新增或编辑的数据,handleDelete用来删除数据。在handleSave方法中,通过判断formData中是否有id属性来确定是新增还是编辑操作。如果有id属性,则表示是编辑操作,需要找到对应的数据进行修改;如果没有id属性,则表示是新增操作,需要将数据添加到数据源中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值