注意事项: 一:自定义属性规范 data-mainplanname="<%= item.mainPlanName %>"
自定义属性data-mainplanname,不能有大写,否则无法获取到值
获取值:
$('.update').click(function () {
var updateMainPlanName = $(this).data('mainplanname');
})
二:数据库信息: db:user table1:admin table2:bannerLists table3:plan
三:淘宝镜像:npm install -g cnpm --registry=registry.npm.taobao.org
1.cnpm-v:查看版本
2.cnpm install xxx : 把xxx模块下载到当前目录下
****简写:cnpm i jquery
3.下载方式
cnpm install xxx -g :全局
cnpm install xxx -S:局部,生成环境 (以后我们下载局部基本都用-S)
cnpm install xxx -D:局部,开发环境
准备工作:
1》下载mysql 下载地址:https://dev.mysql.com/downloads/mysql/
2》工具 :nacicat premium
3》node连接数据库
a>在目录中下载mysql包 npm install mysql
b>引入mysql
c>配置mysql信息
var mysql = require('mysql');
var connection = mysql.createConnection({
host : '主机名', user : '用户名', password : '密码',
database : '库名称', port : '端口号' });
connection.connect();
connection.query(
'select * from 表名称',
function (error, results, fields) {
if (error) throw error;
console.log(results)
});
connection.end();
二:express
1》express:基于node.js的web应用开发框架
2》目录结构
bin www ===》启动文件【入口文件】
app.js ===》全局配置文件
新建一个一级目录的模块:比如新建一个名为(admin)
var adminRouter = require('./routes/admin');
app.use('/admin', adminRouter);
routers ===》路由的配置
这里配置新建的目录的路由信息(一级路由|二级路由),要新建一个admin.js 文件
var express = require('express');
var router = express.Router();
/*一级路由配置 */
router.get('/', function(req, res, next) {
res.render('admin');
});
//二级路由配置
router.get('/login',function (req,res,next){
res.render('login',{这里可以以key:val形式传参到页面})
})
module.exports = router;
views ===》页面
在这里创建(一级|二级)路由的ejs页面,
重启服务器 就可以跟根据配置的路由访问页面了(例如):
一级路由的访问:http://localhost:3000/admin
二级页面的访问:http://localhost:3000/admin/login
public ===》静态资源 【css、img、js】
<%= title %>
三:MySQL
1》mysql查询数据
select * from 表名称 查询所有
select * from 表名称 where userName=? and userPwd=? where==》条件
connection.query('select * from 表名称 where userName=? and userPwd=?',
[第一个?,第二个?],
(err,results,fields)=>{ })
1》mysql增 insert into 表名称 value (100,123,456)
2》删除:
var express = require('express');
var router = express.Router();
var db = require('../sql.js');
/* GET home page. */
router.get('/', function(req, res, next) {
var id = req.query.id;
db.query(`delete from plan where id=${id}`,function(err,data){
db.query('select * from plan',function (err,data) {
var pager = {};
//当前第几页,默认第一页
pager.pageCurrent = 1;
//总的记录数
pager.maxNum = data.length;
//每页显示多少条记录
pager.pageSize = 5;
//一共有多少页
pager.pageCount = parseInt(Math.ceil(pager.maxNum / pager.pageSize));
//修改了传递的数据数量
var dataList = data.slice( (pager.pageCurrent-1) * pager.pageSize , (pager.pageCurrent-1) * pager.pageSize + pager.pageSize );
if( err ){
throw err;
}else{
res.render('planLists',{
planLists:dataList,
pager:pager
})
}
})
})
});
module.exports = router;
3》修改:
var express = require('express');
var router = express.Router();
var db = require('../sql.js');
var multiparty = require('multiparty');
/* GET home page. */
router.post('/', function(req, res, next) {
var form = new multiparty.Form();
//上传的图片需要保存某一个目录,目录必须存在
form.uploadDir = './public/upload';
form.parse(req,function(err,fields,files){
// console.log(fields)
// console.log(files)
var upid = fields.upid[0];
var planName = fields.mainPlanName[0]; // 课程名称
console.log(planName)
var mainPlanName = fields.mainPlanName[1]; // 主课程名称
let planPath = files.planPath[0].path; // 图片路径
var planType = fields.planType[0]; // 授课类型
var planTime = fields.planTime[0]; // 授课时间
db.query(`update plan set id=?,planName=?,mainPlanName=?,planPath =? ,planType=?,planTime=? where id=${upid}`,[upid,planName,mainPlanName,planPath,planType,planTime],function(err,data){
if( err ){
throw err;
}else{
db.query('select * from plan',function (err,data) {
var pager = {};
//当前第几页,默认第一页
pager.pageCurrent = 1;
//总的记录数
pager.maxNum = data.length;
//每页显示多少条记录
pager.pageSize = 5;
//一共有多少页
pager.pageCount = parseInt(Math.ceil(pager.maxNum / pager.pageSize));
//修改了传递的数据数量
var dataList = data.slice( (pager.pageCurrent-1) * pager.pageSize , (pager.pageCurrent-1) * pager.pageSize + pager.pageSize );
if( err ){
throw err;
}else{
res.render('planLists',{
planLists:dataList,
pager:pager
})
}
})
}
})
})
});
module.exports = router;
五:阶段考核:
1、产品是什么? 这次我们做的是一个web后管理系统,叫:小鹿线后台管理, 2、用了哪些技能点和接入的东西? 采用 express+node.js+mysql做数据管理,一共有三个表,分别是用户信息表,banner图表,开班计划表 3、具体实现哪些功能? 下面我说一下我负责的功能模块分别是 :首页的登录,banner图,开班计划 列表数据渲染。
先说一下登录:通过req.body获取用户输入的用户名和密码,通过mysql查询用户信息表,查到表中的用户名和密码,进行比对,如果能查到并且信息一致,就渲染render 进入一个后台首页。如果信息不一致就提示用户重新登录。 banner图和开班计划有下拉选择查找,输入名称模糊查找, 还有:添加,修改,删除,翻页功能,这里涉及到3个表,都是通过操作不同的数据库来让数据实现添加修改和删除。 翻页功能主要是获取每个表的数据,定义每页默认5条数据,在判断一共展示多少页,实现首页,尾页,上一页和下一页切换页数的基本功能。