
基于Bootstrap+Nodejs的Web应用(三)_功能页面
发布日期:2021-05-14 05:22:03
浏览次数:21
分类:精选文章
本文共 5217 字,大约阅读时间需要 17 分钟。
1.综述
模拟实现一般功能页面,包括:
- 数据查询
- 表格展示
- 数据修改
bootstrap布局+bootstrapTable实现表格功能
2.布局
直接看代码。
查询条件:结果表格
- html定义表格id(位置)
- 字段由bootstrapTable(config)定义并生成。
- 表格字段对应
- 表格请求方法
$("#tabUsers").bootstrapTable({ url: '/users', //请求后台的URL(*) method: 'post', //请求方式(*) toolbar: '#toolbar', //工具按钮用哪个容器 striped: true, //是否显示行间隔色 cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) pagination: true, //是否显示分页(*) sortable: false, //是否启用排序 sortOrder: "asc", //排序方式 queryParams: oTableInit.queryParams,//传递参数(*) sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*) pageNumber:1, //初始化加载第一页,默认第一页 pageSize: 10, //每页的记录行数(*) pageList: [10, 25, 50, 100], //可供选择的每页的行数(*) search: true, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大 strictSearch: true, showColumns: true, //是否显示所有的列 showRefresh: true, //是否显示刷新按钮 minimumCountColumns: 2, //最少允许的列数 clickToSelect: true, //是否启用点击选中行 height: 500, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 uniqueId: "ID", //每一行的唯一标识,一般为主键列 showToggle:false, //是否显示详细视图和列表视图的切换按钮 cardView: false, //是否显示详细视图 detailView: false, //是否显示父子表 columns: [{ checkbox: true }, { field: 'id', title: 'ID' }, { field: 'name', title: '姓名' }, { field: 'aget', title: '年龄' }, ] });
2.前台触发
bootstrapTable里定义了全部信息,包括:- 目标url
- 请求方法
- 参数获取方法
- 字段对应关系
所以加载时可以自动触发。
如果要人工点击查询按钮触发呢? 调用bootstraptable的refresh方法即可。$('#btnQueryBoots').click(function(){ $("#tabUsers").bootstrapTable('refresh'); });
3.后台处理
路由
router用来定义访问入口的响应,是Express的顶级对象。
- 路由对象定义
var express = require('express');var router = express.Router();//开放module.exports = router;
- 路由定义 可针对url+方法定义响应方式。
\\针对所有方法、所有入口。可用来输出日志router.all('*', function(req, res, next) { console.log("=========%s %s %s",req.method, req.url, req.path); console.log(req.session); console.log(req.body); if(!req.session.uname){ console.log() } // req.cookie('time','1111',{maxAge:900000}); next();});//针对/users,不同请求方式,不同处理方法//get只打开页面;post执行查询router.route("/users").get(function(req,res){ // 到达此路径则渲染login文件,并传出title值供 login.html使用 res.render("users",{ title:'用户列表', datas:[]});}).post(function(req,res){ // 从此路径检测到post方式则进行post数据的处理操作 db.query(db.orm("getUsers",req.body),callFun,req,res);});
- 路由对象引用 在express默认文件app.js中引用路由
var indexRouter = require('./routes/index');app.use('/', indexRouter);
- 数据库 使用MySql数据库,需要:
- 引用mysql模块
- 数据库配置
- 定义orm映射:定义要执行的sql
- 定义操作接口:执行数据库操作后,需要把结果回传到browser,需要res对象。因此在数据库的回调函数被定义为了变量,方便使用res对象。
var mysql=require("mysql");var pool=mysql.createPool({ host:'localhost', user:'root', password:'root', database:'dbtest'});function query(sql,callback,req,res){ console.log("111111111111111query1"); pool.getConnection(function(err,connection){ console.log(sql); connection.query(sql,function(err,rows){ if(err){ console.log(err); } callback(err,rows,req,res); connection.release(); }); });}function orm(ormid,pars){ var sql=""; if (ormid=="getUsers") { sql="select * from users where 1=1 "; if (pars.s_name){ sql+="and name='"+pars.s_name+"'"; } if (pars.s_age){ sql+="and aget="+pars.s_age+""; } }else if(ormid=="delUsers") { sql="delete from users where id in ("+pars.ids+")"; }else if(ormid=="users_Adduser") { sql="insert into users values ("+pars.s_id+",'"+pars.s_name+"',"+pars.s_age+")"; } return sql;}exports.query=query;exports.orm=orm;
5.遗留问题:
数据库操作不支持事务。可以支持事务,暂时没时间验证。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月09日 04时42分28秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PL/SQL 动态Sql拼接where条件
2021-05-12
Lua-table 一种更少访问的安全取值方式
2021-05-12
虚函数
2021-05-12
RTL设计- 多时钟域按顺序复位释放
2021-05-12
斐波那契数列两种算法的时间复杂度
2021-05-12
int main(int argc,char* argv[])详解
2021-05-12
【Android踩过的坑】7.Android Studio 点击启动项目时进入调试模式
2021-05-12
【自学Flutter】4.1 Material Design字体图标的使用(icon)
2021-05-12
C++清空队列(queue)方法
2021-05-12
【换行符】什么时候用cin.get()吃掉输入流中的换行符
2021-05-12
【二叉树】已知后序与中序求先序
2021-05-12
数组范围的动态扩容
2021-05-12
解决Nginx 404 not found问题
2021-05-12
计算机网络之第三章笔记--数据链路层
2021-05-12
创建型模式之简单工厂模式实例及代码操作
2021-05-12
广东外语外贸大学第三届网络安全大赛Writeup
2021-05-12
跟着燕青学分布式事务控制技术方案
2021-05-12
Activiti视频分享
2021-05-12
VS2019 报错: LINK Error 无法找到 MSCOREE.lib的解决办法
2021-05-12