Node.js分页接口对接前端表格组件

?

Node.js分页接口与前端表格组件对接指南

1. 后端分页接口设计(Node.js/Express)

核心参数:

page:当前页码(从1开始)

pageSize:每页数据量

返回结构:

{

"code": 200,

"data": {

"list": [], // 当前页数据

"total": 100, // 总数据量

"page": 1, // 当前页码

"pageSize": 10 // 每页条数

}

}

接口实现示例:

// Express路由

app.get('/api/data', async (req, res) => {

const page = parseInt(req.query.page) || 1;

const pageSize = parseInt(req.query.pageSize) || 10;

try {

// 1. 获取总数据量

const total = await Model.countDocuments();

// 2. 计算分页参数

const skip = (page - 1) * pageSize;

// 3. 查询当前页数据

const list = await Model.find()

.skip(skip)

.limit(pageSize);

// 4. 返回分页结构

res.json({

code: 200,

data: { list, total, page, pageSize }

});

} catch (err) {

res.status(500).json({ code: 500, message: err.message });

}

});

2. 前端表格对接(Vue + Element UI)

组件结构:

@size-change="handleSizeChange"

@current-change="handleCurrentChange"

:current-page="currentPage"

:page-sizes="[10, 20, 50]"

:page-size="pageSize"

layout="total, sizes, prev, pager, next"

:total="total"

/>

核心逻辑:

export default {

data() {

return {

tableData: [], // 表格数据

currentPage: 1, // 当前页码

pageSize: 10, // 每页条数

total: 0 // 总数据量

};

},

mounted() {

this.fetchData();

},

methods: {

// 获取分页数据

async fetchData() {

const params = {

page: this.currentPage,

pageSize: this.pageSize

};

const res = await axios.get('/api/data', { params });

this.tableData = res.data.data.list;

this.total = res.data.data.total;

},

// 每页条数变化

handleSizeChange(size) {

this.pageSize = size;

this.fetchData();

},

// 页码变化

handleCurrentChange(page) {

this.currentPage = page;

this.fetchData();

}

}

};

3. 关键对接点

前端通过page和pageSize参数请求

后端通过skip和limit实现分页查询

返回字段需包含list(当前页数据)和total(总数据量)

前端根据total计算总页数:$$ \text{总页数} = \lceil \frac{\text{total}}{\text{pageSize}} \rceil $$

后端:数据库查询使用索引优化skip/limit

前端:添加防抖处理频繁分页请求

4. 常见问题处理

// 后端校验

if (page < 1 || pageSize <= 0) {

return res.status(400).json({ error: "Invalid pagination params" });

}

暂无数据

let fetchId = 0;

async function fetchData() {

const currentId = ++fetchId;

const res = await axios.get(...);

if (currentId === fetchId) {

// 处理最新请求结果

}

}

?

转载请说明出处内容投诉
CSS教程网 » Node.js分页接口对接前端表格组件

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买