1.创建一个文件夹:lraw-node
2.并在项目根目录中运行如下的命令,初始化包管理配置文件:npm init -y
npm init -y
//笔记-cmd查看node是否安装
查看node版本:node -v
查看本地安装的所有node版本:nvm ls
切换node版本:nvm use 16.15.0
3.输入命令安装指定版本的express
npm i express@4.17.1
4.在项目根目录中新建 app.js 作为整个项目的入口文件
// 导入 express 模块
const express = require('express')
// 创建 express 的服务器实例
const app = express()
app.listen(3007, function () {
console.log('api server running at http://127.0.0.1:3007')
})
5.配置 cors 跨域,通过npm 安装cors
npm i cors@2.8.5
6.在 app.js 中导入并配置 cors 中间件
// 导入 express 模块
const express = require('express')
// 创建 express 的服务器实例
const app = express()
// 导入 cors 中间件
const cors = require('cors')
// 将 cors 注册为全局中间件
app.use(cors())
app.listen(3007, function () {
console.log('api server running at http://127.0.0.1:3007')
})
7.配置解析表单数据的中间件
通过如下的代码,配置解析 application/x-www-form-urlencoded 格式的表单数据的中间件:
// 导入 express 模块
const express = require('express')
// 创建 express 的服务器实例
const app = express()
// 导入 cors 中间件
const cors = require('cors')
// 将 cors 注册为全局中间件
app.use(cors())
//配置解析 application/x-www-form-urlencoded 格式的表单数据的中间件
app.use(express.urlencoded({ extended: false }))
// write your code here...
// 调用 app.listen 方法,指定端口号并启动web服务器
app.listen(3007, function () {
console.log('api server running at http://127.0.0.1:3007')
})
8.初始化路由相关的文件夹 在项目根目录中,新建router 文件夹,用来存放所有的 路由模块
9. 在router 文件夹中,新 user.js 文件,作为用户的路由模块
npm install moment安装时间处理的插件
const express = require('express')
// 创建路由对象
const router = express.Router()
const moment = require('moment');
const fs = require('fs');
const { Console } = require('console');
// 用户抽奖抽中的奖品处理机制
router.post('/reguser', (req, res) => {
const param = JSON.parse(JSON.stringify(req.body));
// 异步读取JSON文件
fs.readFile('data.json', 'utf8', (err, data) => {
if (err) {
console.error('Error reading the file:', err);
return;
}
try {
// 解析JSON数据
const jsonData = JSON.parse(data);
let dataArry = JSON.parse(JSON.stringify(jsonData.defaultTable))
let isShow = false
console.log(dataArry.some(e => e.phone == param.phone))
if(dataArry.some(e => e.phone == param.phone)){
let isLength = dataArry.filter((e) => {return e.phone == param.phone})
console.log(isLength.length)
let timer = moment(new Date().getTime()).format('YYYY-MM-DD')
console.log(timer)
let createTime = moment(Number(isLength[0].createTime)).format('YYYY-MM-DD')
console.log(createTime)
// 处理当天抽奖只能有一条
if(isLength.length >= 1 && timer == createTime){
isShow = true
}
}
if(isShow){
return res.send(JSON.stringify({code:'44444',message:"已参与抽奖,不可重复抽奖"}))
}else{
dataArry.push(param)
// 将输入转换为JSON数组
const jsonArray = {defaultTable:dataArry};
// 写入文件
fs.writeFile('data.json', JSON.stringify(jsonArray, null, 2), 'utf8',(err) => {
if (err) {
console.error(err);
return;
}
console.log('数据已保存到data.json文件');
});
}
} catch (err) {
console.error('Error parsing JSON:', err);
}
});
})
// 登录
router.post('/login', (req, res) => {
res.send('login OK')
})
// 将路由对象共享出去
module.exports = router
10.在 app.js 中,导入并使用 用户路由模块
// 导入 express 模块
const express = require('express')
// 创建 express 的服务器实例
const app = express()
// 导入 cors 中间件
const cors = require('cors')
// 将 cors 注册为全局中间件
app.use(cors())
//配置解析 application/x-www-form-urlencoded 格式的表单数据的中间件
app.use(express.urlencoded({ extended: false }))
// write your code here...
// 调用 app.listen 方法,指定端口号并启动web服务器
// 导入并注册用户路由模块
const userRouter = require('./router/user')
app.use('/api', userRouter)
app.listen(3007, function () {
console.log('api server running at http://127.0.0.1:3007')
})
11.在终端通过node app.js 启动服务测试一下项目的功能
12.启动前端项目请求
前端请求地址:http://127.0.0.1:3007/api/reguser