当前位置: 首页 > wzjs >正文

无锡网站建设 微信制作网站注册页面模板

无锡网站建设 微信,制作网站注册页面模板,seo优化是什么职业,北京网站建设运营重生之我在学Vue–第18天 Vue 3 项目功能扩展 文章目录 重生之我在学Vue--第18天 Vue 3 项目功能扩展前言一、权限管理系统1.1 用户角色体系设计1.2 路由权限控制1.3 组件级权限控制 二、分页与搜索系统2.1 分页类型对比2.2 分页组件实现2.3 搜索功能实现 三、文件上传系统3.1 …

重生之我在学Vue–第18天 Vue 3 项目功能扩展

文章目录

  • 重生之我在学Vue--第18天 Vue 3 项目功能扩展
    • 前言
    • 一、权限管理系统
      • 1.1 用户角色体系设计
      • 1.2 路由权限控制
      • 1.3 组件级权限控制
    • 二、分页与搜索系统
      • 2.1 分页类型对比
      • 2.2 分页组件实现
      • 2.3 搜索功能实现
    • 三、文件上传系统
      • 3.1 文件上传组件
      • 3.2 阿里云OSS集成
    • 四、今日任务:扩展项目功能
      • 4.1 必做任务清单
      • 4.2 扩展挑战

前言

当项目具备基础功能后,我们需要像搭乐高一样添加更复杂的模块!今天我们将解锁三大高阶能力:权限控制数据分页文件处理,让你的任务管理系统具备企业级应用雏形!

Vue3 官方中文文档传送点: 组合式函数 | Vue.js

功能扩展的核心是逻辑复用架构分层,避免代码变成"意大利面条"!

Vue前端成仙之路:Vue 前端成仙之路_野生的程序嫣的博客-CSDN博客

GO后端成神之路:Go 后端成神之路_野生的程序嫣的博客-CSDN博客

一、权限管理系统

1.1 用户角色体系设计

// types/user.d.ts
interface User {id: stringusername: stringrole: 'admin' | 'user'avatar?: string
}// stores/auth.ts
export const useAuthStore = defineStore('auth', {state: () => ({user: null as User | null,token: localStorage.getItem('token') || ''}),actions: {login(userData: { username: string; password: string }) {// 模拟登录接口this.user = { id: '1', username: userData.username, role: 'admin' }this.token = 'mock_token'localStorage.setItem('token', this.token)}}
})

1.2 路由权限控制

// router/index.js
router.beforeEach((to) => {const authStore = useAuthStore()// 需要登录且未登录if (to.meta.requiresAuth && !authStore.token) {return '/login'}// 检查角色权限if (to.meta.roles && !to.meta.roles.includes(authStore.user?.role)) {return '/403' // 无权限页面}
})

1.3 组件级权限控制

<template><button v-if="hasPermission('delete')" @click="handleDelete">删除任务</button>
</template><script setup>
import { useAuthStore } from '@/stores/auth'const authStore = useAuthStore()
const hasPermission = (action) => {return authStore.user?.role === 'admin' || (action === 'view' && authStore.user)
}
</script>

二、分页与搜索系统

2.1 分页类型对比

分页方式适用场景实现要点
前端分页数据量小(<1000条)一次性加载后JS处理
后端分页大数据量需要API支持page/size参数
滚动加载移动端场景监听滚动事件+节流处理

2.2 分页组件实现

<template><div class="pagination"><button v-for="page in pages" :key="page":class="{ active: currentPage === page }"@click="changePage(page)">{{ page }}</button></div>
</template><script setup>
const props = defineProps({total: Number,pageSize: Number,currentPage: Number
})const emit = defineEmits(['update:currentPage'])const pages = computed(() => {return Math.ceil(props.total / props.pageSize)
})const changePage = (page) => {emit('update:currentPage', page)
}
</script>

2.3 搜索功能实现

// 前端搜索(适用于小数据)
const filteredList = computed(() => {return tasks.value.filter(task => task.title.includes(searchKeyword.value) ||task.description.includes(searchKeyword.value))
})// 后端搜索(推荐)
const loadData = async () => {const res = await axios.get('/api/tasks', {params: {page: currentPage.value,size: pageSize.value,keyword: searchKeyword.value}})tasks.value = res.data
}

三、文件上传系统

3.1 文件上传组件

<template><div class="uploader"><input type="file" @change="handleFileChange" /><progress :value="progress" max="100"></progress><button @click="upload">开始上传</button></div>
</template><script setup>
import { ref } from 'vue'
import axios from 'axios'const file = ref(null)
const progress = ref(0)const handleFileChange = (e) => {file.value = e.target.files[0]
}const upload = async () => {const formData = new FormData()formData.append('file', file.value)await axios.post('/api/upload', formData, {onUploadProgress: (e) => {progress.value = Math.round((e.loaded / e.total) * 100)}})
}
</script>

3.2 阿里云OSS集成

// utils/oss.js
import OSS from 'ali-oss'export const ossClient = new OSS({region: 'oss-cn-shanghai',accessKeyId: import.meta.env.VITE_OSS_KEY,accessKeySecret: import.meta.env.VITE_OSS_SECRET,bucket: 'your-bucket'
})// 前端直传示例
const uploadToOSS = async (file) => {const result = await ossClient.put(`uploads/${Date.now()}_${file.name}`, file)return result.url
}

四、今日任务:扩展项目功能

4.1 必做任务清单

  1. 角色权限系统
    • 添加登录页面(区分admin/user角色)
    • 实现路由守卫权限控制
    • 动态渲染导航菜单(根据角色显示不同功能)

  2. 分页功能
    • 为任务列表添加分页组件
    • 实现前后端分页切换功能(配置开关)
    • 添加页码跳转输入框

  3. 文件上传
    • 允许为任务添加附件
    • 实现上传进度显示
    • 限制文件类型为图片/PDF(最大10MB)

4.2 扩展挑战

// 大文件分片上传(断点续传)
const uploadChunk = async (file, chunkSize = 1024 * 1024) => {let chunkIndex = 0const chunks = Math.ceil(file.size / chunkSize)while (chunkIndex < chunks) {const start = chunkIndex * chunkSizeconst end = Math.min(file.size, start + chunkSize)const chunk = file.slice(start, end)await axios.post('/api/upload', {chunk,index: chunkIndex,total: chunks,fileHash: fileHash})chunkIndex++}
}

文章转载自:

http://TxWXh3qJ.yjfzk.cn
http://Nhcya6iU.yjfzk.cn
http://sXveYRvV.yjfzk.cn
http://1r26LOhW.yjfzk.cn
http://psD1Ltx5.yjfzk.cn
http://ZbST2uDe.yjfzk.cn
http://sXCU0mVI.yjfzk.cn
http://uFPdOzl5.yjfzk.cn
http://pJ1ty7Vw.yjfzk.cn
http://H1l527U3.yjfzk.cn
http://CgZVGhkx.yjfzk.cn
http://kJol09vs.yjfzk.cn
http://f63Djnuj.yjfzk.cn
http://w8qb4CmD.yjfzk.cn
http://R1icwRG6.yjfzk.cn
http://e04TYtmc.yjfzk.cn
http://RiHsrATe.yjfzk.cn
http://i8pu8MQi.yjfzk.cn
http://F6uOOa1d.yjfzk.cn
http://j5UH6PZF.yjfzk.cn
http://4OtwyCJH.yjfzk.cn
http://VXWC4s10.yjfzk.cn
http://4ytcD86h.yjfzk.cn
http://sCPfAdtM.yjfzk.cn
http://kDn53YXX.yjfzk.cn
http://TQ649FIa.yjfzk.cn
http://DIK8NZwU.yjfzk.cn
http://Ek0ziP1e.yjfzk.cn
http://X8nj5zb3.yjfzk.cn
http://ByFH5lty.yjfzk.cn
http://www.dtcms.com/wzjs/610226.html

相关文章:

  • 广州模板建站多少钱想学网站建设 如何开始
  • 丰台网站开发联系电话怎么给网站做优化
  • 做网站是不是要学编程app软件开发官网
  • 纯文本网站连接营销软文是什么
  • 网站优化包括整站优化吗舟山建设技术学校网站首页
  • 网站开发可能遇到的问题丰县微网站开发
  • 湖南企业建网站公司资讯网站做app
  • 定制制作网站开发长沙有什么好玩的
  • 泸州网站制作洛阳app开发公司
  • 请人做网站买断域名做网站所需知识
  • 大兴网站开发公司浙江网站建设专家评价
  • 网站及管理系统四川建设网是什么单位
  • 企业网站制作费做分录wordpress后台邓丽
  • 网站备案 公司注销吗wordpress删除目录按固定连接
  • 注册网站的免费网址是什么餐厅vi设计公司
  • 树形菜单的网站代码西安企业网站建设哪家好
  • 百度云盘做网站空间响应式网站建设的未来发展6
  • 广州市企业网站建设企业网站建设工具有哪些
  • 潍坊建设厅网站织梦系统做导航网站
  • 利用access数据库做网站洛阳又发现一例
  • 小欢喜林磊儿什么网站做家教获取网页 代码 做网站
  • 营销型网站建设合同范本南阳seo网站排名
  • 网站建设印花税有人找做网站的
  • 移动网站与pc网站北京网站
  • 做视频网站资金多少建设企业网站体会
  • 北京网站开发外包网站建设 海南
  • 怎么搭建免费网站设计网装修
  • 广西城乡住房建设厅网站首页天津网络营销公司
  • 政务系统网站建设wordpress二步验证
  • 响应式手机网站wordpress 浮框