Node+Vue3+mysql+ant design实现前后端分离——表格的添加、修改和删除

在上一篇文章中,我们分享了如何运用NodeJS、Vue、MySQL以及其他技术来实现后台管理系统中的表格查询功能。今天,我们将继续探讨另外三个重要的功能实现原则。这些原则在构建后台管理系统时至关重要,同时还有导入和导出这两种功能也必不可少。关于导入和导出功能,我们会在下一次更新中详细介绍。下文中与上一篇文章重复的部分就不再进行详述,不懂的同学可以先看看上篇文章哦。

一、MySQL建表

首先,利用Navicat软件,在项目文件夹内创建"user_list"表格,并添置相关字段。此举便于nodejs连接数据库时提供特定需要的信息。如下图所示:

为了后续便于前端更好的联调数据,这里建议在创建完表后,添加一条相应的数据。

二、nodejs模拟数据并连接数据库

初始表格数据及增删改操作,本节和上篇文章一样可用NodeJS进行模拟,无需额外在服务器端的 routes 目录创建新文件夹。为保持一致性,相关代码将与上篇文章所述查询数据置于同一文件内。数据库的连接与之前方法也相同,仅需进行一次配置。

var express = require('express');
var router = express.Router();
//连接数据库
var connection=require('../db/sql.js');

//用户表格接口
router.get('/api/user/getUserList', (req, res) => {
  const sqlStr = 'select * from user_list';
  connection.query(sqlStr, (error, results) => {
      if (error) return res.json({
          code: 404,
          message: '数据不存在',
          affextedRows: 0
      })
      res.json({
          code: 200,
          message: results,
          affextedRows: results.affextedRows
      })
  })
})

//条件查找--请查看上篇文章

//添加用户信息
router.post('/api/user/addUserList', (req, res) => {
  // console.log(req,'是')
  const username = req.body.username;
  const userPwd = req.body.userPwd;
  const phone = req.body.phone;
  const imgUrl=req.body.imgUrl||'https://img0.baidu.com/it/u=1307225259,750358157&fm=253&fmt=auto?w=500&h=500';
  const nickName=req.body.nickName;
  const sqlStr = "insert into user_list(username,userPwd,phone,imgUrl,nickName) values('" + username + "','" + userPwd + "','" + phone + "','" + imgUrl + "','" + nickName + "')";
  connection.query(sqlStr,(err, results) => {
      if (err) return res.json({
          code: 404,
          message: err,
          affectedRows: 0
      });
      res.json({
          code: 200,
          message: '添加成功',
          affectedRows: results.affectedRows
      });
  })
});

//修改用户信息
router.post('/api/user/updateUserList', (req, res) => {
  // console.log(req.body,'是')
  const id = req.body.id;
  const username = req.body.username;
  const userPwd = req.body.userPwd;
  const phone = req.body.phone;
  const imgUrl=req.body.imgUrl||'https://img0.baidu.com/it/u=1307225259,750358157&fm=253&fmt=auto?w=500&h=500';
  const nickName=req.body.nickName;
  const sqlStr = "update user_list set username='" + username + "',userPwd='" + userPwd + "',phone='" + phone + "',imgUrl='" + imgUrl + "',nickName='" + nickName + "'where id=" + id
  connection.query(sqlStr,(err, results) => {
      if (err) return res.json({
          code: 404,
          message: err,
          affectedRows: 0
      });
      res.json({
          code: 200,
          message: '修改成功',
          affectedRows: results.affectedRows
      });
  })
});

//删除用户信息
router.get('/api/user/deleteUserList/', (req, res) => {
  const id = req.query.id;
  // console.log(req.query,'shuju ')
  // console.log(name,'name')
  const sqlStr = "delete from user_list where id=? ";
  connection.query(sqlStr, id,(err, results) => {
      if (err){
        console.log(err,'错误信息提示:')
        return res.json({
          code: 404,
          message: err,
          affextedRows: 0
        });
      }
      res.json({
          code: 200,
          message: '删除成功',
          affextedRows: results.affextedRows
      });
  })
})
module.exports = router;

三、前端界面开发

在上述操作都完成后,接下来就是前端界面的开发以及数据联调了。

(1)表格的添加和修改前端思想使用了ant design组件中的模态框以及表单,利用其表单的双向绑定来实现添加和修改数据,具体代码如下:

<template>
  <div class="user-tab">
    <!-- 新增用户 -->
    <div class="tab-add-btn" @click="handleAddUser">
      <i class="iconfont icon-jiahaotianjia"></i>
      <span>新增用户</span>
    </div>
    <!-- 表格 -->
    <div class="tab-body">
      <a-table
        :columns="columns"
        bordered
        :data-source="dataSource"
        :pagination="pagination"
        :loading="tableLoading"
        rowKey="id"
        :scroll="{ y: 'calc(100vh - 380px - 10px)', x: 200 }"
      >
        <template #index="{ index }">
            {
  { index + 1 }}
        </template>
        <template #picture="{ record }">
          <img style="width: 100px; heigth: 100px" :src="record.picture" />
        </template>
        <template #action="{ record }">
          <a href="javascript:void(0)" @click="editGroup(record)">修改</a>
          &nbsp;&nbsp;
          <a href="javascript:void(0)" @click="removeGroup(record)">删除</a>
        </template>
      </a-table>
    </div>
    <!-- 弹窗 -->
    <div class="tab-modal">
      <a-modal v-model:visible="visible" :footer="null" ok-text="确认"
      cancel-text="取消">
        <a-tabs>
          <a-tab-pane key="1" :tab="submitDialogText === '1' ? '新增用户' : submitDialogText === '2' ? '修改信息' : ''">
            <a-form
              :label="{ span: 12, offset: 24 }"
              layout="horizontal"
              :rules="rules"
              :model="submitForm"
              style="padding: 15px 0 0 60px"
            >
              <a-row>
                <a-col :span="20">
                  <a-form-item ref="adminName" label="用户账号" name="adminName">
                    <a-input v-model:value="submitForm.adminName" placeholder="请输入账号" />
                  </a-form-item>
                </a-col>
                <a-col :span="20">
                  <a-form-item ref="adminPwd" label="用户密码" name="adminPwd">
                    <a-input v-model:value="submitForm.adminPwd" placeholder="请
  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前后分离是一种开发模式,它将前和后的开发分离,前主要负责用户界面的展示和交互,后主要负责数据的处理和存储。Vue2、Node.js和MySQL可以结合使用来实现前后分离。 首先,我们可以使用Vue2作为前框架,通过它来开发用户界面。Vue2提供了一套响应式的数据绑定和组件化的架构,使得前开发更加高效和灵活。我们可以使用Vue的官方脚手架工具vue-cli来快速搭建项目的基础结构。 其次,Node.js可以用作后技术,作为一个基于事件驱动的服务器JavaScript运行环境,它提供了丰富的模块和工具,使得后开发更加便捷。我们可以使用Express框架来构建Node.js的后应用,通过定义路由和处理请求,与前进行数据的交互。 最后,MySQL是一个开源的关系型数据库管理系统,它可以存储和管理数据。我们可以使用Node.js的mysql库来连接和操作MySQL数据库,通过编写SQL语句来实现数据的增删改查。 在实际开发中,前通过Ajax或者Axios等工具向后发送请求,后接收请求后,通过与MySQL数据库的交互来获取或处理数据,并将结果返回给前。前通过Vue2的数据绑定和渲染机制,将后返回的数据展示在用户界面上。 通过Vue2、Node.js和MySQL的组合,我们可以实现一个完整的前后分离的应用程序。Vue2提供了优秀的用户界面,Node.js作为后技术提供了强大的功能和灵活性,MySQL作为数据库管理系统提供了数据的存储和管理。这样的开发模式可以提高开发效率和代码的维护性,同时也能够实现更好的用户体验和性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值