node.js小白入门 开发图书管理系统 (附源码)

22 篇文章 0 订阅
9 篇文章 0 订阅

node.js 后台渲染 开发图书管理系统

  • 包视图结构
    在这里插入图片描述
  • 需要依赖下载的模块
    art-template": "^4.13.2", --模板引擎需要的模块
    "body-parser": "^1.19.0", -- 解析传入的请求主体
    "express": "^4.16.4", -- Fast, unopinionated, minimalist web framework for node.  一个简单  强大的web框架
    "express-art-template": "^1.0.1", -- 更好的兼容express框架
    "mysql": "^2.17.1"  -- 与mysql进行交互
    下载方式       npm install xxx(模块名) --save
    npm install  art-template , body-parser,express,express-art-template,mysql --save
    
  • 图书馆理系统入口文件配置(index.js)
/*
    图书管理系统-入口文件
*/
const express = require('express');
const path = require('path');
const router = require('./router.js');
const template = require('art-template');
const bodyParser = require('body-parser');
const app = express();

// 启动静态资源服务
app.use('/www',express.static('public'));

// 设置模板的路径
app.set('views',path.join(__dirname,'views'));
// 设置模板引擎
app.set('view engine','art');
// 使express兼容art-template模板引擎
app.engine('art', require('express-art-template'));

// 处理请求参数
// 挂载参数处理中间件(post)
app.use(bodyParser.urlencoded({ extended: false }));
// 处理json格式的参数
app.use(bodyParser.json());

// 启动服务器功能

// 配置路由
app.use(router);
// 监听端口
app.listen(3000,()=>{
    console.log('running...');
});
  • 配置模板视图
    1. 模板视图结构
      在这里插入图片描述
    2. 代码
	index.art :
		<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>图书管理系统</title>
    <!--界面的css 样式自己设置 这里就不分享了 -->
  <link rel="stylesheet" type="text/css" href="/www/style.css">
</head>
<body>
<div class="title">图书管理系统<a href="/toAddBook">添加图书</a></div>
<div class="content">
    <table cellpadding="0" cellspacing="0">
        <thead>
        <tr>
            <th>编号</th>
            <th>名称</th>
            <th>作者</th>
            <th>分类</th>
            <th>描述</th>
            <th>操作</th>
        </tr>
        </thead>
        <tbody>
      {{each list}}
        <tr>
            <td>{{$value.id}}</td>
            <td>{{$value.name}}</td>
            <td>{{$value.author}}</td>
            <td>{{$value.category}}</td>
            <td>{{$value.description}}</td>
            <td><a href="/toEditBook?id={{$value.id}}">修改</a>|<a href="/deleteBook?id={{$value.id}}">删除</a></td>
        </tr>
        {{/each}}
    </table>
</div>
</body>
</html>

addbook.art 
					<!DOCTYPE html>
				<html lang="en">
				<head>
				    <meta charset="UTF-8">
				    <title>Title</title>
				</head>
				<body>
				<div>添加图书</div>
				<form action="/addBook" method="post">
				    名称:<input type="text" name="name"><br>
				    作者:<input type="text" name="author"><br>
				    分类:<input type="text" name="category"><br>
				    描述:<input type="text" name="description"><br>
				    <input type="submit" value="提交">
				</form>
				</body>
				</html>
edbook.art
					<!DOCTYPE html>
					<html lang="en">
					<head>
					    <meta charset="UTF-8">
					    <title>Title</title>
					</head>
					<body>
					<div>修改图书</div>
					<form action="/editBook" method="post">
					      <input type="hidden" name="id" value="{{result[0].id}}">
					          名称:<input type="text" name="name" value="{{result[0].name}}"><br>
					          作者:<input type="text" name="author" value="{{result[0].author}}"><br>
					          分类:<input type="text" name="category" value="{{result[0].category}}"><br>
					          描述:<input type="text" name="description" value="{{result[0].description}}"><br>
					    <input type="submit" value="提交">
					</form>
					</body>
					</html>
  • 路由配置(router.js)
const express = require('express');
const router = express.Router();
const service = require('./Service.js');

//渲染主页
router.get('/',service.showIndex);

//跳转添加图书
router.get('/toAddBook',service.toAddBook);
//添加图书
router.post('/addBook',service.addBook);

//跳转到修改图书的页面
router.get('/toEditBook',service.toEditBook);
//编辑图书
router.post('/editBook',service.editBook);
//删除指定图书
router.get('/deleteBook',service.deleteBook);
module.exports = router;
  • 业务模块
/*
* 业务模块
* */
const path = require('path');
const fs = require('fs');
const db =require('./dbutils.js');

//渲染主页
exports.showIndex = (req,resp)=>{
    let sql = 'select * from book';
    db.base(sql,null,(result)=>{
        resp.render('index.art',{list:result})
    });

}
//跳转到添加图书页面
exports.toAddBook = (req,resp)=>{
    resp.render('addbook.art',{})
}
exports.addBook = (req,resp)=>{
    //获取表单数据
    let books = req.body;
    let obj = {};
    for(let key in books){
        obj[key] = books[key];
    }
    let sql = 'insert into book set ?';
    db.base(sql,obj,(result) =>{
        if (result.affectedRows == 1){
            resp.redirect('/')
        }
    })
}
//跳转到编辑图书页面
exports.toEditBook = function (req,resp) {
    //获取参数
    let id = req.query.id;
    let sql = 'select * from book where id = ?';
    let data = [id];
    db.base(sql,data,(result)=>{
       resp.render('edbook.art',{result})
    })
};
//修改图书
exports.editBook = function (req,resp) {
    let book = req.body;
    let sql = 'UPDATE `mybook`.`book` SET  `name`=?, `author`=?, `category`=?, `description`=? WHERE (`id`=?);';
    let data = [book.name,book.author,book.category,book.description,book.id];
    db.base(sql,data,(result) =>{
        if(result.affectedRows == 1){
            resp.redirect('/')
        }
    })
};

//删除指定图书
exports.deleteBook = function (req,resp) {
    let id = req.query.id;
    let sql = 'delete from book where id = ?';
    let data = [id];
    db.base(sql,data,(result) =>{
        if(result.affectedRows == 1){
            resp.redirect('/')
        }
    })
}
  • 8
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值