• vue基础学习总结---用户列表案例


    用户列表案例

    前言在这里插入图片描述

    这篇文章介绍 vue学习总结案例:用户列表案例。
    本文详细记录了所有步骤,拿来学习是真不错!
    用到的知识点:
    vue-cli 创建 vue2 项目;
    element ui 组件库;
    axios 拦截器;
    proxy 跨域接口代理;
    vuer-router 路由;
    完整源码在gitee:https://gitee.com/xingyueqianduan/yonghuliebiaodemo
    看完不会你打我。哈哈哈,开玩笑的,不多说,上刺刀!!

    1. 案例效果

    在这里插入图片描述

    在这里插入图片描述

    2. 用到的知识点

    • vue-cli 创建 vue2 项目
    • element ui 组件库
    • axios 拦截器
    • proxy 跨域接口代理
    • vuer-router 路由

    3. 整体实现步骤

    ① 初始化项目

    ② 渲染用户表格的数据

    ③ 基于全局过滤器处理时间格式

    ④ 实现添加用户的操作

    ⑤ 实现删除用户的操作

    ⑥ 通过路由跳转到详情页

    4. 初始化项目

    4.1 梳理项目结构

    1.基于 vue-cli 运行如下的命令,新建 vue2.x 的项目:

    vue create code-users
    
    • 1

    2.重置 App.vue 组件中的代码:

      
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. 删除 components 目录下的 HelloWorld.vue 组件。

    4.2 修改项目的开发调试配置

    1.在项目根目录中新建 vue.config.js 配置文件。

    2.在 vue.config.js 配置文件中,通过 devServer 节点添加如下的配置项:

    module.exports = {
      devServer: {
        // 修改 dev 期间的端口号
        port: 3000,
        // 自动打开浏览器
        open: true
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.3 初始化路由

    1.运行如下的命令,在 vue2.x 的项目中安装 vue-router:

    npm install vue-router@3.4.9 -S
    
    • 1

    2.在 src 目录下新建 router/index.js 路由模块:

    // 路由模块
    import Vue from 'vue'
    import VueRouter from 'vue-router'
    // 安装路由插件
    Vue.use(VueRouter)
    // 创建路由实例对象
    const router = new VueRouter({
      // 路由规则
      routes: [],
    })
    // 向外共享路由实例对象
    export default router
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3.在 main.js 模块中导入并挂载路由模块:

    import Vue from 'vue'
    import App from './App.vue'
    // 导入路由模块
    import router from './router'
    
    Vue.config.productionTip = false
    
    new Vue({
      // 挂载路由
      router,
      render: h => h(App),
    }).$mount('#app')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4.4 使用路由渲染 UserList 组件

    1.在 components 目录下新建 UserList.vue 组件如下:

    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.在 router/index.js 路由模块中新增如下的路由规则:

    // 创建路由实例对象
    const router = new VueRouter({
      // 路由规则
      routes: [
        // 路由重定向
       { path: '/', redirect: '/users', },
        // 用户列表的路由规则
       { path: '/users', component: UserList }
     ],
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3.在 App.vue 中声明 router-view 路由占位符:

    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    5. 渲染用户列表组件

    5.1 安装并配置 axios

    1.运行如下的命令,在项目中安装 axios :

    npm install axios@0.21.1 -S
    
    • 1

    2.在 main.js 中导入并配置 axios :

    import Vue from 'vue'
    import App from './App.vue'
    import router from './router'
    // 导入 axios
    import axios from 'axios'
    
    Vue.config.productionTip = false
    
    // 全局配置 axios
    axios.defaults.baseURL = 'https://www.escook.cn'
    Vue.prototype.$http = axios
    new Vue({
      router,
      render: h => h(App),
    }).$mount('#app')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    5.2 请求用户列表的数据

    1.在 UserList.vue 组件中声明如下的 data 数据节点:

    data() {
      return {
        // 用户列表数据,默认为空数组
        userList: [],
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.在 created 生命周期函数中预调用 getUserList 方法:

    created() {
      // 调用此方法,请求用户列表数据
      this.getUserList()
    }
    
    • 1
    • 2
    • 3
    • 4

    3.在 methods 中声明 getUserList 方法:

    methods: {
      // 请求用户列表的数据
      async getUserList() {
        const { data: res } = await this.$http.get('/api/users')
        // res.status 等于 0 表示数据请求成功,否则,请求失败!
        if (res.status !== 0) return console.log('用户列表数据请求失
    败!')
        this.userList = res.data
     },
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    5.3 解决跨域请求限制

    由于 API 接口服务器并没有开启 CORS 跨域资源共享,因此终端会提示如下的错误:

    Access to XMLHttpRequest at ’ https://www.escook.cn/api/users ’ from origin ’ http://localhost:3000 ’ has been blocked byCORS policy: No 'Access-Control-Allow-Origin’header is present on the requested resource.

    解决方案:

    通过 vue.config.js 中的 devServer.proxy 即可在开发环境下将 API 请求代理到 API 服务器。

    module.exports = {
      devServer: {
        port: 3000,
        open: true,
        // 当前项目在开发调试阶段,
        // 会将任何未知请求 (没有匹配到静态文件的请求) 代理到https://www.escook.cn
        proxy: 'https://www.escook.cn'
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    同时,在 main.js 入口文件中,需要把 axios 的根路径改造为开发服务器的根路径

    // 全局配置 axios
    Vue.prototype.$http = axios
    axios.defaults.baseURL = 'http://localhost:3000'
    
    • 1
    • 2
    • 3

    注意:devServer.proxy 提供的代理功能,仅在开发调试阶段生效。项目上线发布时,依旧需要API 接口服务器开启 CORS 跨域资源共享。

    5.4 安装并配置 element-ui

    1.运行如下的命令,在项目中安装 element-ui 组件库:

    npm i element-ui -S
    
    • 1

    2.在 main.js 中配置 element-ui:

    import Vue from 'vue'
    import App from './App.vue'
    import router from './router'
    import axios from 'axios'
    // 1. 导入 element-ui
    import ElementUI from 'element-ui'
    // 2. 导入 element-ui 的样式表
    import 'element-ui/lib/theme-chalk/index.css'
    
    Vue.config.productionTip = false
    
    // 3. 将 ElementUI 安装为 vue 的插件
    Vue.use(ElementUI)
    
    Vue.prototype.$http = axios
    axios.defaults.baseURL = 'http://localhost:3000'
    
    new Vue({
      router,
      render: h => h(App),
    }).$mount('#app')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    完整打包源码下载:

    gitee:https://gitee.com/xingyueqianduan/yonghuliebiaodemo

    6.项目中用到的 API 接口

    请求根路径

    https://www.escook.cn/
    
    • 1

    获取用户列表

    • 请求方式:

    ​ GET

    • 请求地址:

    ​ /api/users

    • 请求参数:

    添加用户

    • 请求方式:

    ​ POST

    • 请求地址:

    ​ /api/users

    • 请求参数:

    ​ name 用户姓名(1 - 15 个字符之间)

    ​ age 用户年龄(1 - 100 之间)

    ​ position 职位(1 - 10 个字符之间)

    • 请求结果:

    ​ status 的值等于 0 表示成功

    删除用户

    • 请求方式:

    ​ delete

    • 请求地址:

    ​ /api/users/:id

    • 请求参数:

    ​ id 要删除的用户的Id(URL参数)

    • 请求结果:

    ​ status 的值等于 0 表示成功

    获取用户信息

    • 请求方式:

    ​ GET

    • 请求地址:

    ​ /api/users/:id

    • 请求参数:

    ​ id 要查询的用户的Id(URL参数)

    • 请求结果:

    ​ status 的值等于 0 表示成功

    写在最后

    ✨个人笔记博客✨

    星月前端博客
    http://blog.yhxweb.top/

    ✨原创不易,还希望各位大佬支持一下

    👍 点赞,你的认可是我创作的动力!

    ⭐️ 收藏,你的青睐是我努力的方向!

    ✏️评论,你的意见是我进步的财富!

  • 相关阅读:
    DeltaLake技术学习与总结待续
    观察者模式
    【GO语言卵细胞级别教程】10.探索Go语言中神奇的Map类型:解密键值对的魔力(含习题)
    HashMap中的put()和get()的实现原理
    springboot整合MeiliSearch轻量级搜索引擎
    python标准身高体重 青少年电子学会等级考试 中小学生python编程等级考试一级真题答案解析2022年12月
    【Github】 Github修改仓库的基本信息
    在Windows环境与Linux环境下搭建Zookeeper单机环境与集群环境
    3.7设计模式——Observer 观察者模式(行为型)
    Tomcat启动后的日志输出为乱码
  • 原文地址:https://blog.csdn.net/qq_61950936/article/details/126489942