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

仙桃网站建设门户网站建设周期

仙桃网站建设,门户网站建设周期,金华网站建设黄页,做设计的素材网站有哪些预期效果#xff1a;#xff08;借助iview-ui的在线体验页面示意一下#xff09; 项目中只有一部分页面需要缓存#xff0c;且存在多级路由的页面。每打开一个菜单#xff0c;就会新增一个 Tab标签#xff0c;只要 Tab标签不关闭#xff0c;对应的页面就会被缓存#x… 预期效果借助iview-ui的在线体验页面示意一下 项目中只有一部分页面需要缓存且存在多级路由的页面。每打开一个菜单就会新增一个 Tab标签只要 Tab标签不关闭对应的页面就会被缓存Tab标签关闭时页面才会被销毁。 以下是我自己琢磨出来的方案可能有所欠缺多多包涵可以先翻到最后先大致了解一下相关逻辑。 代码实现 1. router.js import Vue from vue import VueRouter from vue-router import store from /storeVue.use(VueRouter)const routes [{path: /,redirect: /login},{path: /login,name: Login,component: () import(xxx/Login)},{path: /myProfix, // 自定义的顶层路由前缀component: () import(xxx/Main),name: Main,redirect: { name: Home },children: [{path: home,name: Home,component: () import(xxx/Home),meta: { keepAlive: true } // 需要缓存的页面路由在 meta中添加 keepAlive属性},{path: about,name: About,component: () import(xxx/About)},// 多级路由{path: father,name: Father,component: () import(xxx/Father),redirect: { name: Son0 },children: [{path: son0,name: Son0,component: () import(xxx/Son0),meta: { keepAlive: true }},{path: son1,name: Son1,component: () import(xxx/Son1)},]}]} ]const router new VueRouter({base: process.env.BASE_URL,routes })router.beforeEach((to, from, next) {// 当前路由如支持缓存将当前路由对应的页面组件名添加到 store中if (to.meta?.keepAlive) {// 支持多级路由多级路由存顶级父级路由的组件名这个顶级父路由是指顶层路由 /myProfix的下一级示例中的路由 /myProfix下只有2 层实际可以有 2层以上store.dispatch(updateKeepAliveRouteComponents, { operation: add, value: to.matched[1]?.name || to.name })}next() })export default router2. store.js import Vue from vue import Vuex from vuexVue.use(Vuex)export default new Vuex.Store({state: {keepAliveRouteComponents: [] // 需要缓存的路由对应的组件名称此处组件名称与路由名称设置成一样方便关闭 Tab标签时做匹配处理},actions: {// 更新 keepAliveRouteComponentsupdateKeepAliveRouteComponents: ({ commit }, data) {commit(UPDATE_KEEP_ALIVE_ROUTE_COMPONENTS, data)}},mutations: {// 关闭 Tab标签CLOSE_TAB (state, payload) {// ...此处省略关闭 Tab标签的逻辑// 删除 keepAliveRouteComponents中对应的组件名以清除对应路由组件的缓存const curRouteName ... // 根据实际情况获取到关闭 Tab标签对应的页面路由的 namethis.commit(UPDATE_KEEP_ALIVE_ROUTE_COMPONENTS, { operation: delete, value: curRouteName })},// 更新 keepAliveRouteComponentsUPDATE_KEEP_ALIVE_ROUTE_COMPONENTS (state, data) {const { operation, value } dataif (operation add !state.keepAliveRouteComponents.includes(value)) {state.keepAliveRouteComponents.push(value)}if (operation delete) {const valueIndex state.keepAliveRouteComponents.indexOf(value)if (valueIndex ! -1) {state.keepAliveRouteComponents.splice(valueIndex, 1)}}},// 退出登录LOGOUT (state) {// ...// 清空 keepAliveRouteComponents清除所有缓存的页面组件——其实也可以不清空因为退出到 Login页面时 Main组件会被销毁state.keepAliveRouteComponents []},} })3. App.vue templatediv idapprouter-view //div /template4. Main.vue templatediv classmainNavigation /div classmain-view// include属性与 store记录的 keepAliveRouteComponents绑定keep-alive :includekeepAliveRouteComponentsrouter-view //keep-alive/div/div /templatescript import { mapState } from vuex import Navigation from system/components/Navigationexport default {components: {Navigation},computed: {...mapState([keepAliveRouteComponents]),} } /script5. Home.vue templatediv classhome/div /templatescript export default {name: Home // 组件名称与路由名称设置成一样 } /script6. Father.vue templatediv classfatherkeep-alive :include[Son0]router-view //keep-alive/div /templatescript export default {name: Father // 组件名称与路由名称设置成一样 } /script7. Son0.vue templatediv classson0/div /templatescript export default {name: Son0 // 组件名称与路由名称设置成一样 } /script逻辑总结 需要缓存的页面路由添加meta属性{ keepAlive: true }页面路由对应的组件名称与路由名称设置成一样方便 Tab标签关闭时做匹配这一步不是必须的可以换成别的方法只要 Tab标签关闭时能有相关数据识别到对应的页面的组件名称即可在store中保存需要缓存的页面组件的名称列表keepAliveRouteComponentsMain组件中 组件的include属性与keepAliveRouteComponents绑定路由全局前置守卫中判断即将进入的路由keepAlive属性为true时在keepAliveRouteComponents列表中加入当前路由的name如果是多级路由即加入当前路由的顶级父级路由/myProfix的下一级的name——可以统一通过$route.matched[1]来获取需要的name为什么取matched[1]因为当前还有一层顶级的路由/myProfix在matched[0]此处记录路由的name是基于将页面路由对应的组件名称与路由名称设置成一样的前提条件下Tab标签关闭时删除keepAliveRouteComponents中对应的组件名以清除对应路由组件的缓存多级路由的情况内部子路由router-view /包裹keep-alive并根据具体子路由是否缓存添加include属性——如果这个多级路由只有一个子路由也可以不设置系统登出时清空keepAliveRouteComponents——其实清不清空无所谓因为跳转到login页面时整个Main组件都会被销毁
http://www.hkea.cn/news/14507657/

相关文章:

  • 江西做网站优化好的培训教育类网站模板
  • 实训课建设网站步骤产品质量推广营销语
  • 2017主流网站风格网站开发的相关技能
  • 免费做网站送域名的开放平台产品经理
  • 制作微信公众的网站开发优秀网站首页设计步骤
  • 学校建设外文网站情况wordpress dcloud
  • 盐城做网站山东新增5个高风险地区
  • 东莞网站seo价格如何自己做网页链接
  • 西安行业网站长沙市有什么好玩的旅游景点
  • 整站优化昌吉可以吗?贵州seo和网络推广
  • 做旅游网站的首页的图片商丘做网站优化的公司有哪些
  • 上线了做网站怎么样苏州知名高端网站建设机构
  • 随州网站推广哪家权威大学网站设计
  • 上海市网站建设公司58网站怎么解析到域名
  • 网站结构框架图怎么做邢台列表网
  • 在线设计网站海报做网站建设的技巧
  • 天猫官方网站湛江赤坎海田网站建设招聘
  • 网站建设和维护教程郑州制作网站ihanshi
  • 西安做网站设计的公司网络免费推广
  • wordpress+悬浮按钮爱站网seo综合查询工具
  • 静海集团网站建设西安有什么好玩的地方景点推荐
  • 外贸网站seo怎么做软件制作小程序开发
  • 北京服装网站建设社交网站建设码
  • 企业网站 静态页面wordpress网站+搬家
  • 电子商务网站模板页面wordpress默认邮件文件
  • 如何将自己做的网站上传seo网站技术培训
  • 网站检测报告哪里做电子商务网站建设第一章课后
  • wordpress网站前台密码织梦网站怎样做安全防护
  • wordpress 创业重庆网页优化seo公司
  • 昆明网站建设排名做网站模板