3 Star 2 Fork 2

Invader / CRUD-express

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Express - crud

-(信息管理小系统)----node.js

起步

  • 初始化

  • 模板处理

  • 需掌握技术:

    • express--(node.js框架)
    • art-template 模板引擎(express-art-template)
    • body-parser --解析表单post请求体
  • 应熟练运用

    • fs文件操作模块

    • 模板引擎

    • 回调函数(callback)---要多写代码巩固经验---思维训练

路由设计

请求方法 请求路径 get参数 post参数 b备注
GET /students 渲染首页
GET /students/new 添加学生信息
POST /students/new name,gender,hobbies,fruits 处理添加学生请求
GET /students/edit id 渲染编辑页面
POST /student/edit id,gender,hobbies,fruits 编辑请求
GET /student/delete id 删除请求

入口模块

app.js

/*
* app.js入口模块
* --启动服务
* --做一些服务相关的配置
* --模板引擎
* --body-parser -解析表单post请求体
* --提供静态资源服务
* --挂在路由--app.use(router)
* --监听端口号启动服务
* */
let express= require('express')
let router=require('./router')
//第三方插件----解析路径
let bodyParser = require('body-parser')
let app=express()

//公开资源
app.use(express.static('public'))
app.use(express.static('node_modules'))

app.engine('html',require('express-art-template'))

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())

//把路由容器挂载到app服务中
app.use(router)


app.listen(3000,function () {
   console.log('app is running!')
})

提取路由模块

router.js

/*

- 路由模块

- */
  let express=require('express')
  let router=express.Router()
  let fs=require('fs')
  
    router.get('/',function (req,res) {

    })
   router.get('/students',function (req,res) {

    })
    router.get('/students/new',function (req,res) {

    })
    router.post('/students/new',function (req,res) {

    })
    router.get('/edit',function (req,res) {

    })
    router.post('/edit',function (req,res) {

    })
    router.get('/delete',function (req,res) {

    })

//导出router
module.exports=router

业务模块

students.js----node.js精华之所在

/*
* 操作文件数据
*   只处理数据,不关心业务
* */
let fs = require('fs')
let dbPath = './db.json'

//查询文件里面的数据
exports.find = function (callback) {
    fs.readFile(dbPath, 'utf-8', function (err, data) {
        if (err) {
            return callback(err)
        }
        callback(null, JSON.parse(data).students)
    })
}

//通过id查询数据
exports.findById = function (id, callback) {
    fs.readFile(dbPath, 'utf-8', function (err, data) {
        if (err) {
            return callback(err)
        }
        let students = JSON.parse(data).students

        let ret = students.find(function (item) {
            return item.id === parseInt(id)
        })

        callback(null, ret)

    })
}


//保存数据至文件
exports.save = function (student, callback) {
    //读取文件数据
    fs.readFile(dbPath, 'utf-8', function (err, data) {
        if (err) {
            return callback(err)
        }
        let students = JSON.parse(data).students
        student.id = students[students.length - 1].id + 1
        students.push(student)

        //把对象数据转成字符串
        let fileDate = JSON.stringify({
            students: students
        })
        //将数据保存至文件
        fs.writeFile(dbPath, fileDate, function (err) {
            if (err) {
                return callback(err)
            }
            callback(null)
        })

    })
}


// 更新学生信息(通过id)
exports.undataById = function (student, callback) {
    //读取文件数据
    fs.readFile(dbPath, 'utf-8', function (err, data) {
        if (err) {
            return callback(err)
        }
        let students = JSON.parse(data).students
        student.id = parseInt(student.id)

        //修改数据(根据id查找)
        // ecmaScript6数组方法----find
        let stu = students.find(function (item) {
            return item.id === student.id
        })

        for (let key in student) {
            stu[key] = student[key]
        }
        //把对象数据转成字符串
        let fileDate = JSON.stringify({
            students: students
        })
        //将数据保存至文件
        fs.writeFile(dbPath, fileDate, function (err) {
            if (err) {
                return callback(err)
            }
            callback(null)
        })
    })


}
//删除学生信息
exports.deleteById = function (id, callback) {
    fs.readFile(dbPath, 'utf-8', function (err, data) {
        if (err) {
            return callback(err)
        }
        let students = JSON.parse(data).students

        let deleteid = students.findIndex(function (item) {
            return item.id === parseInt(id)
        })

        students.splice(deleteid, 1)

        //把对象数据转成字符串
        let fileDate = JSON.stringify({
            students: students
        })
        //将数据保存至文件
        fs.writeFile(dbPath, fileDate, function (err) {
            if (err) {
                return callback(err)
            }
            callback(null)
        })

    })


}

界面概览:

1549352649860

1549352669788

空文件

简介

学生信息管理--express---文件保存 展开 收起
NodeJS
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
NodeJS
1
https://gitee.com/zxinc/CRUD-express.git
git@gitee.com:zxinc/CRUD-express.git
zxinc
CRUD-express
CRUD-express
master

搜索帮助