app.js 详情

```
const express = require('express')//express是node中的后端框架

const app = express()
const fs = require('fs')

app.engine('html', require('express-art-template'))//解析html要引入使用express-art-template

app.use('/node_modules', express.static('./node_modules'))
//           别名             开放静态资源
app.use('/public', express.static('./public'))

//配置body-parser,前端post给后端的信息,后端要用req.body来接收,要使用req.body必须借助body-parser
//express里原本不具备接收post的来的信息的能力,要借助外部插件body-parser,以前老版本的express中必须安装express后,在安装body-parser
//现在body-parser被内置在的express中
app.use(express.urlencoded({extended: false}))
app.use(express.json())
// 配置body-parser


app.get('/', function (req, res) {
    // res.send('我是服务器信息')//发送一个数据与res.render之间只能存在一个
    res.render('boot-login.html')//渲染页面,发送给前端
    //不管是res.render或者res.send发送给前端都必须要刷新页面
    //页面必须放在views文件夹内
})


app.post('/login', function (req, res) {
    //req(request):是前端给后端的信息
    //res(response):是后端给前端的信息
    //console.log(req.body)//post来的信息必须用req.body接受
    fs.readFile('./data/users.json', function (error, data) {
        if (error) {
            console.log(error)
        } else {
            //console.log(JSON.parse(data))
            /*for(item of JSON.parse(data)){
                if(item.account==req.body.account&&item.password==req.body.password){
                    res.render('index.html')
                }else{
                    res.send('账号或密码错误')
                }*/
            const user = JSON.parse(data).find(function (item) {
                return item.account == req.body.account
            })//find方法,是把数组里的每一个元素都拿出来根据return的条件进行比较,函数的传参就代表数组中的每一个元素(循环)
            //如果能找到,则user就是满足条件的第一个对象(找到一个后,不再往后查找了)
            //如果找不到,则user是underfined
            if (user && user.password == req.body.password) {
                delete user.password
                res.render('index.html', {user})
            } else {
                res.send('账号或密码错误')
            }
        }
    })
    /* if(req.body.account==='123456'&&req.body.password==='abc'){
         res.render('index.html')
     }else{
         res.send('账号或密码错误')
     }*/
})

app.get('/test_account', function (req, res) {
    console.log(req.query)//get用req.query来接收
    fs.readFile('./data/users.json', function (error, data) {
        if (error) {
            console.log(error)
        } else {
            /* const aaa =JSON.parse(data).find(function (item) {//JSON.parse(data):解析乱码
                     return item.account==req.query.account
             })*/

            /*if(aaa){
                res.send(true)
            }else{
                res.send(false)
            }*/

            // res.send(aaa?true:false)

            /* res.send(Boolean(JSON.parse(data).find(function (item) {//JSON.parse(data):解析乱码
                 return item.account==req.query.account
             })))*///null,0,'',undefined,NaN会被Boolean转换为false
            res.send(Boolean(JSON.parse(data).find(item => item.account == req.query.account)))
            //箭头函数
            //当函数参数只有一个,括号可以省略;但是没有参数时,括号不可以省略。
            //一种只包含一个表达式,省略掉了{ ... }和return。还有一种可以包含多条语句,这时候就不能省略{ ... }和return
        }
    })
})

app.get('/addScore',(req,res)=>{
    fs.readFile('./data/users.json',(error,data)=>{
        if(error){
            console.log(error)
        }else{
           /* const user = JSON.parse(data).find(item => item.account == req.query.account)
            if(user){
                user.bestScore = Math.max(req.query.scoreNum,user.bestScore)
                console.log(user)
            }else{
                res.send('用户不存在')
            }*/
            const users=JSON.parse(data)
            const index=users.findIndex(item => item.account == req.query.account)
            users[index].bestScore=Math.max(req.query.scoreNum,users[index].bestScore)
            console.log(users)
            fs.writeFile('./data/users.json',JSON.stringify(users),error=>{//JSON.stringify(users):将数组转化为字符串
                if(error){
                    console.log(error)
                }
            })
        }
    })
})

app.listen(3000, function () {//3000是端口号
    console.log('app is running...')
})
```
posted @ 2022-06-04 09:11  |oxo  阅读(91)  评论(0编辑  收藏  举报