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

辽宁建设网站首页海口市网站开发

辽宁建设网站首页,海口市网站开发,wordpress去加密版权,网站首页的提交怎么做顶部组件搭建 顶部左侧折叠和面包屑实现 左侧菜单刷新折叠的问题解决---属性default-active 折叠之后图标不见#xff1a;icon放在插槽外面----element的menu属性#xff1a;collapse project\src\layout\index.vue // 获取路由对象 import { useRoute } from vue-route…顶部组件搭建 顶部左侧折叠和面包屑实现 左侧菜单刷新折叠的问题解决---属性default-active 折叠之后图标不见icon放在插槽外面----element的menu属性collapse project\src\layout\index.vue // 获取路由对象 import { useRoute } from vue-router; ​ let $route useRoute() ​ el-menu :default-active$route.path background-color$base-menu-background text-colorwhiteactive-text-coloryellowgreenMenu :menuListuserStore.menuRoutes / /el-menu 顶部tabbar静态组件封装拆分为左侧面包屑、右侧设置区域 面包屑组件project\src\layout\tabbar\breadcrumb\index.vue template!-- 顶部左侧静态 --el-icon stylemargin-right: 10px;Expand //el-icon!-- 左侧面包屑 --el-breadcrumb separator-iconArrowRightel-breadcrumb-item权限管理/el-breadcrumb-itemel-breadcrumb-item用户管理/el-breadcrumb-item/el-breadcrumb /templatescript setup langts/script style scoped langscss/style 右侧设置组件project\src\layout\tabbar\setting\index.vue templateel-button sizesmall iconRefresh circle /el-button sizesmall iconFullScreen circle /el-button sizesmall iconSetting circle /img src/public/logo.png stylewidth: 32px;height: 24px;margin: 0 10px;!-- 下拉菜单 --el-dropdownspan classel-dropdown-linkAdminel-icon classel-icon--rightarrow-down //el-icon/spantemplate #dropdownel-dropdown-menuel-dropdown-item退出登入/el-dropdown-item/el-dropdown-menu/template/el-dropdown /templatescript setup langts/script style scoped langscss/style project\src\layout\tabbar\index.vue templatediv classtabbardiv classtabbar_leftBreadcrumb //divdiv classtabbar_rightSetting //div/div /templatescript setup langts // 引入组件 import Breadcrumb from /layout/tabbar/breadcrumb/index.vue import Setting from /layout/tabbar/setting/index.vue /script script langts export default {name: Tabbar } /script style scoped langscss .tabbar {width: 100%;height: 100%;display: flex;justify-content: space-between; ​.tabbar_left {display: flex;align-items: center;margin-left: 20px; ​} ​.tabbar_right {display: flex;align-items: center;} } /style 菜单折叠的实现 定义控制折叠展开的变量 fold放在仓库比较合适因为其他组件也要根据fold进行变化放在面包屑组件的传递给其他组件比较麻烦 project\src\store\modules\setting.ts //小仓库:layout组件相关配置仓库 import { defineStore } from pinia ​ const useLayOutSettingStore defineStore(SettingStore, {state: () {return {fold: false, //用户控制菜单折叠还是收起控制}}, }) ​ export default useLayOutSettingStore 面包屑组件project\src\layout\tabbar\breadcrumb\index.vue通过点击图标切换仓库中fold的状态其他组件读取时获取最新的 // 获取小仓库中的控制折叠展开变量 fold import useLayOutSettingStore from /store/modules/setting; ​ // 获取仓库 let layOutSettingStore useLayOutSettingStore() // 点击折叠展开图标的方法 const changeIcon () {layOutSettingStore.fold !layOutSettingStore.fold } ​ ​ el-icon stylemargin-right: 10px; clickchangeIcon!-- vue提供的动态展示组件 --component :islayOutSettingStore.fold ? Expand : Fold/component /el-icon layout组件读取 fold 变量 project\src\layout\index.vue // 获取小仓库中的控制折叠展开变量 fold import useLayOutSettingStore from /store/modules/setting; // 获取仓库 let layOutSettingStore useLayOutSettingStore() ​ // :collapselayOutSettingStore.fold ? true : false el-menu :collapselayOutSettingStore.fold ? true : false :default-active$route.pathbackground-color$base-menu-background active-text-coloryellowgreenMenu :menuListuserStore.menuRoutes / /el-menu ​ //顶部导航和右侧内容展示区域添加动态类fold :class{ fold: layOutSettingStore.fold ? true : false } Collapse 有点问题折叠的时候还有bug 顶部面包屑动态展示 通过获取路由匹配信息来实现 layout组件不需要展示到面包屑直接展示首页所以去掉layout路由中的元信息title和icon然后再面包屑渲染时进行v-show判断 点击面包屑也可以进行路由跳转--element可以实现---to project\src\layout\tabbar\breadcrumb\index.vue // 获取路由 import { useRoute } from vue-router; let $route useRoute() ​!-- 左侧面包屑 --el-breadcrumb separator-iconArrowRightel-breadcrumb-item v-for(item, index) in $route.matched :keyindex v-showitem.meta.title :toitem.path!-- 渲染图标 --el-icon stylemargin: 0 2px;component :isitem.meta.icon/component/el-icon!-- 渲染面包屑标题 --span{{ item.meta.title }}/span/el-breadcrumb-item/el-breadcrumb 顶部tabbar右侧功能实现 刷新功能实现 简单来说就是路由组件销毁和重建重新发请求获取数据 涉及顶部导航与内容展示区域间通信---刷新的变量放在小仓库中 小仓库 refresh: false,//控制刷新效果 setting组件project\src\layout\tabbar\setting\index.vue // 获取仓库中的 刷新变量 refresh import useLayOutSettingStore from /store/modules/setting ​ let layOutSettingStore useLayOutSettingStore() ​ // 点击刷新的回调 const refreshChange () {layOutSettingStore.refresh !layOutSettingStore.refresh } ​ //刷新按钮 el-button sizesmall iconRefresh circle clickrefreshChange / Main组件监听refresh变化变化就重新发请求 project\src\layout\main\index.vue import { watch, ref, nextTick } from vue // 获取仓库中的 刷新变量 refresh import useLayOutSettingStore from /store/modules/setting ​ let layOutSettingStore useLayOutSettingStore() // 控制组件销毁与创建 let flag ref(true) // 监听仓库中的refresh如果发生变化说明用户点击刷新按钮 watch(() layOutSettingStore.refresh, () {//refresh变化则销毁组件flag.value false//等待组件完毕重新加载nextTick(() {flag.value true}) }) ​ component :isComponent v-ifflag / 全屏功能实现dom操作 // 点击实现全屏切换 const fullScreen () {//DOM对象的一个属性:可以用来判断当前是不是全屏模式[全屏:true,不是全屏:false]let full document.fullscreenElement;//切换为全屏模式if (!full) {//文档根节点的方法requestFullscreen,实现全屏模式document.documentElement.requestFullscreen();} else {//变为不是全屏模式-退出全屏模式document.exitFullscreen();} } ​ el-button sizesmall iconFullScreen circle clickfullScreen / 退出登入业务 token的理解 登入成功首页组件挂在完毕通知用户小仓库拿着token去找服务器那用户的相关数据并存在小仓库中 home组件project\src\views\home\index.vue后面可以在路由守卫中发请求 import { onMounted } from vue; //引入用户相关的仓库,获取当前用户的头像、昵称 import useUserStore from /store/modules/user; //获取存储用户信息的仓库对象 let userStore useUserStore(); //首页挂在完毕通知小仓库发请求拿数据 onMounted(() {userStore.getUserInfo() }) ​ 用户小仓库project\src\store\modules\user.ts //记得到type中进行类型定义 username: , avatar: // 拿token向服务器请求用户数据 async getUserInfo() {// 获取用户信息进行存储【头像用户名】let res await reqUserInfo()if (res.code 200) {this.username res.data.checkUser.usernamethis.avatar res.data.checkUser.avatar} else {} } 用户有n个请求那怎么携带token呢放在请求拦截器里面 project\src\utils\request.ts // 引入用户相关的仓库 import useUserStore from /store/modules/user ​ // 第二步request实例添加请求和响应拦截器 request.interceptors.request.use((config) {// 获取用户小仓库拿到登入成功的token数据携带给服务器let userStore useUserStore()if (userStore.token) {config.headers.token userStore.token}// config 配置对象有headers属性请求头经常给服务器端携带公共参数// 返回配置对象return config; }) 获取到用户信息之后在tabbar组件的setting组件中展示一下 project\src\layout\tabbar\setting\index.vue 获取仓库展示即可 退出登入功能实现点击之后退到登入页将用户信息和token清除掉 退出登入需要发送请求告诉服务器token失效下一次登入服务器重新返回新的token project\src\layout\tabbar\setting\index.vue // 退出登入需要进行路由跳转 import { useRouter } from vue-router; // 获取路由器对象 let $router useRouter() ​ //退出登录点击回调 const logout async () {//第一件事情:需要向服务器发请求[退出登录接口]******暂时没有//第二件事情:仓库当中关于用于相关的数据清空[token|username|avatar]//第三件事情:跳转到登录页面await userStore.userLogout();//跳转到登录页面$router.push({ path: /login }); } ​ el-dropdown-item clicklogout退出登入/el-dropdown-item 用户小仓库project\src\store\modules\user.ts //退出登入userLogout() {//目前没有退出接口//清除数据this.token this.username this.avatar localStorage.removeItem(TOKEN)} 还有一些问题需要解决登入成功之后不允许在跳转到login、用户信息需要持久化存储 路由鉴权与进度条实现 进度条是可以用全局路由守卫实现前置后置 路由组件挂在完毕我们去请求获取用户信息进行展示但是不适用大量组件可以通过全局路由守卫进行实现路由跳转的时候发请求就可以 创建路由鉴权文件 注意在组件的外部使用小仓库会报错同步的语句获取仓库不可以需要获取小仓库的数据必须先有大仓库 发请求本来我们是在各个组件中发请求获取用户信息现在我们可以在前置路由守卫中判断有没有用户名有的话可以放行到其他路由组件没有的话先获取用户信息再放行 放在路由守卫中也可以解决我们当时在首页中发请求获取用户信息时我们跳转其他路由组件数据丢失问题因为路由守卫就算没有用户信息也会发请求拿到 //获取用户相关的小仓库内部token数据,去判断用户是否登录成功 import useUserStore from ./store/modules/user import pinia from ./store const userStore useUserStore(pinia) project\src\permisstion.ts//路由鉴权:鉴权,项目当中路由能不能被的权限的设置(某一个路由什么条件下可以访问、什么条件下不可以访问) import router from /router import setting from /settings //ts-ignore import nprogress from nprogress //引入进度条样式 import nprogress/nprogress.css nprogress.configure({ showSpinner: false }) //获取用户相关的小仓库内部token数据,去判断用户是否登录成功 import useUserStore from ./store/modules/user import pinia from ./store const userStore useUserStore(pinia) //全局守卫:项目当中任意路由切换都会触发的钩子 //全局前置守卫 router.beforeEach(async (to: any, from: any, next: any) {//to:你将要访问那个路由//from:你从来个路由而来//next:路由的放行函数nprogress.start()//获取token,去判断用户登录、还是未登录const token userStore.token//获取用户名字const username userStore.username//用户登录判断if (token) {//登录成功,访问login,不能访问,指向首页if (to.path /login) {next({ path: / })} else {//登录成功访问其余六个路由(登录排除)//有用户信息if (username) {//放行next()} else {//如果没有用户信息,在守卫这里发请求获取到了用户信息再放行try {//获取用户信息await userStore.getUserInfo()//放行//万一:刷新的时候是异步路由,有可能获取到用户信息、异步路由还没有加载完毕,出现空白的效果next({ ...to })} catch (error) {//token过期:获取不到用户信息了//用户手动修改本地存储token//退出登录-用户相关的数据清空await userStore.userLogout()next({ path: /login })}}}} else {//用户未登录判断if (to.path /login) {next()} else {next({ path: /login })}} }) //全局后置守卫 router.afterEach((to: any, from: any) {document.title ${setting.title} - ${to.meta.title} ​nprogress.done() }) ​ //第一个问题:任意路由切换实现进度条业务 ---nprogress //第二个问题:路由鉴权(路由组件访问权限的设置) //全部路由组件:登录|404|任意路由|首页|数据大屏|权限管理(三个子路由)|商品管理(四个子路由) ​ //用户未登录:可以访问login,其余六个路由不能访问(指向login) //用户登录成功:不可以访问login[指向首页],其余的路由可以访问 ​ 在main中引入 //引入路由鉴权文件 import ./permisstion
http://www.dnsts.com.cn/news/186861.html

相关文章:

  • 深圳做网站-龙华信科互联网推广和互联网营销
  • 温州网站建设公司有哪些网站开发计入无形资产吗
  • 贵州建设厅网站官网百度网站排名 查询
  • dede 添加演示网站西安网站制作开发公司
  • 专业网站设计公司排行榜建设网站图片大全
  • 苏州市建设局网站首页保障性住房建设投资中心网站
  • h5效果的网站有哪些代理记账报税
  • 牌具做网站可以吗wap建站程序
  • 织梦网站图片修改wordpress 关闭保存修订版本
  • 搭建正规网站网页设计板式类型
  • 上线了建站价格建筑人才网首页
  • 搜房网站要怎么 做域名备案接入商查询
  • 网站开发提案优化网站入口页面的四个维度
  • 自动建站网站系统域名品牌网站建设策
  • 保定网站建设系统南通企业自助建站系统
  • 制作网站公司wordpress恢复默认设置
  • 建设网站需要多少钱济南兴田德润厉害吗学校学生网站模板下载
  • 如何建一个自己的网站深圳市专业的做网站
  • 制作网站软件手机wordpress 导出功能
  • 公司网站年费公司设计平面图
  • 简历制作网站免费基于o2o的旅游网站建设
  • 最好加盟网站建设医疗网站源码
  • 做机械产品用什么网站我的小程序在哪里找
  • 学做网站论坛怎么样wordpress 编辑php.ini
  • 一起做网店类型的网站三种类型的企业网站
  • 青海网站制作多少钱深圳营销网站建设多少钱
  • nas 做网站服务器微商管理系统
  • 兰州网站设计公司注册查询网站
  • 建设网站的群wordpress在哪儿打开
  • 宁波免费建站网站建设与管理大纲