1. 在权限控制和安全性方面遇到了哪些挑战?如何解决?
答案:
项目中菜单和页面访问都需要根据用户角色进行权限控制。挑战在于如何前后端协同,既保证前端体验又防止越权访问。
解决方案:
- 后端接口根据用户 token 校验权限,返回对应菜单和数据。
- 前端如
SideMenu.vue组件会根据用户角色过滤菜单,RecursiveMenu.vue递归渲染时也会判断requireAdmin字段。 - 敏感操作和页面,前端路由守卫和后端接口双重校验,防止通过接口绕过前端限制。
2. 大数据量表格渲染时遇到哪些性能瓶颈?如何优化?
答案:
当数据量很大时,普通表格会导致页面卡顿甚至崩溃。
解决方案:
- 封装了
VirtualTable.vue虚拟滚动表格组件,仅渲染可视区域的数据,大幅减少 DOM 节点数量。 - 结合搜索、排序等功能,前端只处理必要的数据,提升了用户体验和页面流畅度。
3. 实现大文件上传时遇到哪些技术难点?如何解决?
答案:
大文件上传容易超时、失败,且需要支持断点续传和进度显示。
解决方案:
Upload.vue组件将文件分片上传,前端计算文件 hash,已上传分片跳过,失败可重试。- 上传过程中实时显示进度条,上传完成后请求后端合并分片,提升了上传的可靠性和用户体验。
4. 组件复用和解耦方面遇到哪些问题?如何设计?
答案:
项目需要多个页面用到菜单、表格、上传等功能,如何保证组件的通用性和可维护性是个挑战。
解决方案:
- 采用
props和emits设计组件接口,如Editor.vue、Upload.vue、VirtualTable.vue都支持父子通信和自定义扩展。 - 递归组件(如
RecursiveMenu.vue)实现多级菜单的灵活复用,减少重复代码。
5. 多端适配和响应式布局遇到哪些问题?如何处理?
答案:
需要保证 PC 和移动端都能良好显示,尤其是导航栏、菜单栏等。
解决方案:
- 组件如
TopHeader.vue、SideMenu.vue监听窗口大小变化,动态调整布局和样式。 - 使用 SCSS 媒体查询和变量,保证不同屏幕下的样式自适应,提升了多端兼容性。