图书管理系统

  1. 初始化packgage.json以及入口文件index.js
 npm init -y
创建index.js
  1. www --- 静态资源根目录
css目录 ---style.css
js目录
img目录
  1. view --- 模板文件目录
addBook.html
editBook.html
index.html
//editBook.html



    
    添加图书


    
编辑图书
名称:
作者:
分类:
描述:
//addBook.html



    
    添加图书


    
添加图书
名称:
作者:
分类:
描述:
  1. 安装art-template
npm install art-template --save
  1. 创建服务器
  2. 引入静态资源模块,创建静态资源服务器
const http = require('http');
    const sserver  =require('./static-server.js');

    http.createServer((req, res) => {

        sserver.initStaticServer(req, res, __dirname, '/www');

    }).listen(3000, () => {
        console.log("running……");
    })
  1. 添加首页 --- index.html



    
    首页
    
    
    


    
图书管理系统 --- 添加图书
{{each list as item}} {{/each}}
序号 名称 作者 分类 描述 编辑 删除
{{item.id}} {{item.name}} {{item.author}} {{item.category}} {{item.desc}} 编辑 删除
  1. 做路由处理
//index.js
const http = require("http");
const sserver = require("./static-server.js");
const template = require("art-template");
const querystring = require("querystring");
const url = require('url');
var dataList = [
{
    id : 1,
    name : '三国演义',
    author : '罗贯中',
    category : '文学',
    desc : '一个杀伐纷争的年代'
},
{
    id : 2,
    name : '水浒传',
    author : '施耐庵',
    category : '文学',
    desc : '草寇就是草寇'
},
{
    id : 3,
    name : '西游记',
    author : '吴承恩',
    category : '文学',
    desc : '佛教与道教的斗争'
},
{
    id : 4,
    name : '红楼梦',
    author : '曹雪芹',
    category : '文学',
    desc : '一个封建王朝的缩影'
},
{
    id : 5,
    name : '浪潮之巅',
    author : '吴军',
    category : '科普',
    desc : 'IT巨头的兴衰史'
}
];
// 计算数据列表中数据的最大值
let countMax = (data) => {
    let arr = [];
    data.forEach((e) => {
        arr.push(e.id);
    });
    let max = Math.max.apply(null,arr);
    return max;
}
http.createServer((req, res) => {
    sserver.initStaticServer(req, res, __dirname, '/www');
    if (req.url === "/") {
        let html = template(__dirname + '/view/index', {list: dataList});
        res.end(html);
    }else if (req.url === "/toAdd") {
        // 跳转到添加图书列表
        let html = template(__dirname + '/view/addBook',{});
        res.end(html);
    }else if (req.url === "/addBook") {
        // 保存表单提交的图书信息
        // formdata表示post 表单提交的数据
        let formdata = '';
        req.on('data', (chunk) => {
            formdata += chunk;
        });

        req.on('end', () => {
            // 把表单数据解析成为对象形式
            let obj = querystring.parse(formdata);
            // 计算数据列表中id的最大值
            obj.id = (countMax(dataList) +1) ;
            dataList.push(obj);
        });

        // 数据添加成功之后,要跳转到主页
        // 302表示http协议的状态码,用来重定向
        // Location 属性指定了重定向的地址
        res.writeHead(302, {
            'location' : '/'
        });

        res.end();
}else if (req.url.startsWith('/toEdit')) {
        // 跳转到编辑图书页面
        let id = url.parse(req.url, true).query.id;
        let book = null;
        dataList.some((obj) => {
            if (id == obj.id) {
                book = obj;
                return false;
            }
        });

        let html = template(__dirname + '/view/editBook', book || {});
        res.end(html);
    }else if (req.url === '/editBook') {
        // 保存编辑图书
        let formdata = '';

        req.on('data',(chunk) => {
            formdata += chunk;
        });

        req.on('end',() => {
            let obj = querystring.parse(formdata);
            dataList.some((item) => {
                if (obj.id == item.id) {
                    item.name = obj.name;
                    item.author = obj.author;
                    item.category = obj.category;
                    item.desc = obj.desc;
                    return false;
                }
            });
            // 数据添加成功之后,要跳转到主页
            // 302表示http协议的状态码,用来重定向
            // Location 属性指定了重定向的地址
            res.writeHead(302, {
                'location' : '/'
            });
            res.end();
        });
    }else if (req.url.startsWith('/deleteBook')) {
        let id = url.parse(req.url, true).query.id;
        dataList.some((item, i) => {
            if (id == item.id) {
                // 删除数据列表中的一条数据
                dataList.splice(i,1);
                return false;
            }
        });
        res.writeHead(302, {
                'location' : '/'
            });
        res.end();
    }
}).listen(3000,() => {
    console.log("我是谁……")
})
  1. 启动服务器

你可能感兴趣的:(图书管理系统)