用jQuery写后台项目思路

项目介绍

该项目是校园资讯管理系统,前后端分离,本文只针对前端进行阐述,前端使用swagger接口与后端交互数据即可,主要实现的功能无非是对数据的增删改查。

配置环境

  • 部署数据库
  • 连接服务器
  • 上传jar包到服务器上
  • 查看swagger接口文档

搭建项目框架

项目框架比较繁琐,尚不说明,重点讨论子页面怎么写

封装js文件

本项目中我们自己写了两个js文件

  • http.js
    这一文件主要是对ajax进行了封装,封装成get方法,postForm还有postJSON方法,在我们需要与后台交互数据时,调用对应的方法即可,就不用了每次都写ajax了。例如:
let myAjax = {
  get(url, params) {
    return new Promise((resovle, reject) => {
      $.ajax({
        url: baseURL + url,
        method: 'get',
        data: qs.stringify(params),
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded;charset=utf8',
          'Authorization': sessionStorage.getItem('token')
        },
        success(res) {
          resovle(res)
        },
        error(err) {
          reject(err);
        }
      })
    });
  },
 }
  • api.js
    这一文件是将swagger上的接口路径进行封装,提前写好就不用了每一次都去swagger文档中复制接口路径了,例如:
let api = {
    CATEGORY_FINDALL: '/category/findAll',
    CATEGORY_SAVEORUPDATE: '/category/saveOrUpdate',
    CATEGORY_DELETEBYID: '/category/deleteById',
    CATEGORY_BATCHDELETE: '/category/batchDelete',
    BASEUSER_PAGEQUERY: '/baseUser/pageQuery'
};

写子页面(重点)

思路

把页面基本元素布置好---->(查)将信息显示到页面上---->(删)删除信息---->(改)(增)添加和修改信息【共用一个模态框】

过程

  • html+css

这一部分没什么好说的,内容和样式按需求来设计

  • 数据模型
	// 数据模型
  var categoryDataModel = {
    // 所有类别数据
    categoryData: [],
    // 当前修改的对象
    currentCategory: {},
    // 模态框的标题
    dialogTitle: '新增分类信息',
  };

我们把接收到的数据存放到我们写好的数据模型中,在下方调用的时候,方便编写代码,能让思路清晰一点

  • categoryData存放后台发过来的所有数据,主要是用在findAll()方法中

  • currentCategory存放的是当前要修改的对象

  • dialogTitle 这一个存放的是模态框的标题,这里的内容放到模态框中进行阐述

  1. 封装模态框
// 封装 处理模态框的标题,追加option,设置表单控件内容,显示模态框
  function changeDialogTitle() {
    $('.dialog-title').text(categoryDataModel.dialogTitle);
    $('[name=parentId]').empty();
    $('[name=parentId]').append($(` <option value="">请选择</option>`)); //开单引号
    // 过滤一级栏目作为父栏目
    let result = categoryDataModel.categoryData.filter(item => !item.parentId);
    result.forEach(item => {
      $('[name=parentId]').append($(`<option value="${item.id}">${item.name}</option>`));
    });
    $('[name=name]').val(categoryDataModel.currentCategory.name);
    $('[name=parentId]').val(categoryDataModel.currentCategory.parentId);
    $('[name=no]').val(categoryDataModel.currentCategory.no);
    $('[name=description]').val(categoryDataModel.currentCategory.description);
    // 显示模态框
    $('.dialog').fadeIn();
  }

模态框是一个挺重要的一个部分,它涉及到了添加和修改这两个功能,当然我们可以让新增有新增的模态框,修改有修改的模态框,但这样代码量特别多,为了减少代码量,提高复用性,我们可以封装一个新增和修改都可以使用的模态框。新增模态框和修改模态框的区别在于模态框的标题不同,input中显示的内容不同,还有提交给后台数据的不同,我们来一一谈论一下

一、标题不同,让用户区分所使用的模态框是哪一种功能的,如果后台修改接口和新增接口是分开的,那么我们就可以用if语句判断模态框标题是新增还是修改,以此调用不同的接口实现不同的功能
二、后台提交的数据不同,如果新增和修改的功能是同一个接口,那我们要判断模态框提交的数据中是否有id值,有就更改该id的数据,没有就是新增一条数据。在这里,我们使用到了数据模型当中的currentCategory来存对象值,点击新增时我们会清空currentCategory,传数据时id为空,后台判断为新增;点击修改时,将改对象值赋给currentCategory,带有id值,传给后台后判断为修改。以此来实现新增和修改两个不同的功能
三、input中的内容不同,如上一条所说,在点击新增时清空input,即currentCategory中的数据,在点击修改时,将改对象值显示在input当中,并把值赋给currentCategory。
  1. 写一个FindAll()方法【查,刷新页面】
    findAll()其实是调用查询接口让后台把所有数据传上来,但为了方面我们在增删改后刷新页面,显示新的数据,我们把清除数据(防止数据累加)还有显示数据写到一个方法中,那他实现的功能就是获取页面初始信息还有刷新页面,在增删改中调用findAll()方法即可。
// 获取全部类别信息
  findAll();

  function findAll() {
    myAjax.get(api.CATEGORY_FINDALL, null).then((res) => {
      // console.log(res);
      // 清空节点
      $('.categoryManage tbody').empty();
      // 将数据设置到数据模型中
      categoryDataModel.categoryData = res.data;
      let arr = res.data || [];
      if (arr.length > 0) {
        arr.forEach((item, index) => {
          $('.categoryManage tbody').append($(`
        <tr>
          <td>${index + 1}</td>
          <td>${item.name}</td>
          <td>${item.no}</td>
          <td>${item.parentId || '--'}</td>
          <td>${item.description || '--'}</td>
          <td>
            <i data-item='${JSON.stringify(item)}' class="fa fa-edit" title="编辑"></i>
            <i data-id="${item.id}" class="fa fa-trash-o" title="删除"></i>
          </td>
        </tr>
        `));
        })
      }
    })
  }
  1. 写增删改查点击事件

查就是在打开页面时调用findAll()即可,删则绑定按钮,通过id调用myAjax对应的删除接口即可删除,改和查就绑定对应的按钮,调用模态框,更改模态框标题即可

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值