整个项目的实现 结果是 点击add按钮 就能 发送post请求 向web服务器中添加数据
并刷新页面 重新 获取数据 渲染页面
一、先展示一下基本的结构
二、npm init -y 先初始化 一个 包管理工具
我们在整个 过程中 会用到 三个包
express 用来创建web服务器 body-parser 用来做中间的数据桥梁 cors解决同源问题
三、看一下我的html代码(中间引入了jq)
<body>
<input type="text" placeholder="果名" class="name" value="li">
<input type="text" placeholder="数量" class="num" value="1">
<input type="text" placeholder="价格" class="price" value="5">
<button class="add">add</button>
<table width="300" border="1">
<thead class="thead">
<tr>
<td>商品</td>
<td>数量</td>
<td>价格</td>
<td>删除</td>
</tr>
</thead>
<tbody class="tbody">
</tbody>
</table>
</body>
</html>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
<script>
$(function () {
$.ajax({
url: ' http://127.0.0.1:8080/goodslist',
method: 'get',
success(res) {
renderpage(res)
}
})
$('.add').on('click', function () {
let name = $('.name').val()
let num = $('.num').val()
let price = $('.price').val()
$.ajax({
url: "http://127.0.0.1:8080/addgoods",
method: 'post',
data: {
name,
num,
price
},
success(res) {
let data = JSON.parse(res)
renderpage(data)
}
})
})
function renderpage(res) {
let data = JSON.parse(res).list
let str = ''
data.forEach(item => {
str += ` <tr>
<td>${item.name}</td>
<td>${item.num}</td>
<td>${item.price}</td>
<td><button>删除</button></td>
</tr>`
});
$('.tbody').html(str)
}
})
</script>
四、我的后台web代码
const express = require('express')
const fs = require('fs')
const cp = require('child_process')
const cors = require('cors')
const bodyParser = require('body-parser')
const app = express();
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(bodyParser.json());
app.use(cors());
app.get('/goodslist', (rep, res) => {
fs.readFile('./goodslist.json', 'utf8', (err, data) => {
if (err) throw err
res.send(data)
})
})
app.post('/addgoods', (req, res) => {
// console.log(11, req.body.name, req.body.num, req.body.price);
let newFluit = {
name: req.body.name,
num: req.body.num,
price: req.body.price
}
console.log(newFluit);
fs.readFile('./goodslist.json', 'utf8', (err, data) => {
if (err) throw err
let dataArr = {
...JSON.parse(data)
}
dataArr.list.push(newFluit)
// console.log(111, dataArr);
let str = `${JSON.stringify(dataArr)}`
fs.writeFile('./goodslist.json', str, err => {
throw err
console.log('写入成功');
})
})
})
app.listen(8080, () => {
console.log('serve running at http://127.0.0.1:8080/goodslist');
})
这样 一个简单的前后台交互的web服务 就实现了