(自定义指令) 按需导出 默认导出 公共模板组件 --->导入使用 Vue 路由模块中$route 和$router 的区别? --->路由扩展

在这里插入图片描述

import '@/drectives'
// 导入自定义指令
// import { color, Imgerror } from '@/drectives'

import * as directives from '@/drectives'
// console.log(directives)    // 默认  按需  都可以拿到

//for (const k in directives) {
    
    
// Vue.directive(k, directives[k])
//}
Object.keys(directives).forEach(k => Vue.directive(k, directives[k]))

在这里插入图片描述
公共组件(避免代码冗余 功能复用)

// import Vue from 'vue'
// // 自定义指令

// Vue.directive('Imgerror', {
    
    
//   inserted(el, binding) {
    
    
//     el.onerror = function() {
    
    
//       el.src = binding.value
//     }
//   }
// })
// // 设置文字颜色
// Vue.directive('color', {
    
    
//   inserted(el, binding) {
    
    
//     el.style.color = binding.value
//   }
// })

// 按需导出      (扩展: 默认导出 只能有一个)
export const Imgerror = {
    
    
  inserted(el, binding) {
    
    
    el.onerror = function() {
    
    
      el.src = binding.value
    }
  }
}
export const color = {
    
    
  inserted(el, binding) {
    
    
    el.style.color = binding.value
  }
}

使用组件

在这里插入图片描述

在这里插入图片描述

Vue 路由模块中 r o u t e 和 route 和 routerouter 的区别?

//route文件里面用的
$route 中存储的是跟路由相关的属性(如$route.params,$route.query) ; 
//组件内部可以用来跳转
$router 中存储的是和路由相关的方法(如$router.push(),$router.go()), 

**扩展:
**
$route 是“路由信息对象”,包括 path,params,hash,query,fullPath,matched,
name 等路由信息参数
r o u t e r 为 V u e R o u t e r 的 实 例 , 相 当 于 一 个 全 局 的 路 由 器 对 象 , 里 面 含 有 很 多 属 性 和 子 对 象 , 例 如 h i s t o r y 对 象 , 经 常 用 的 跳 转 链 接 就 可 以 用 t h i s . r o u t e r . p u s h 会 往 h i s t o r y 栈 中 添 加 一 个 新 的 记 录 。 返 回 上 一 个 h i s t o r y 也 是 使 用 router 为 VueRouter 的实例,相当于一个全局的路由器对象,里面含有很多属性和子对 象,例如 history 对象,经常用的跳转链接就可以用 this.router.push 会往 history 栈中添加一个 新的记录。返回上一个 history 也是使用 routerVueRouterhistorythis.router.pushhistoryhistory使router.go 方法

// 1. 定义路由规则
        //    path:'/detail/:形参名'

        // 2. 跳转 `to:/detail/实参`

        // 3. 在组件中获取当前的参数值?
        //   this.$route.params.形参
        //   - $route 引入了vueRouter插件之后, vue组件内部通过 $route 就可以直接来访问当前的组件对象
        //   - $route这个对象有很多属性,params用来保存当前传入动态路由的参数值

二级路由
普通写法
在这里插入图片描述

动态路由和静态路由 (方便维护 代码冗余)

路由分模块写

在这里插入图片描述
路由分模块组合书写使用

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

/* Layout */
import Layout from '@/layout'

// 引入多个模块的规则
import approvalsRouter from './modules/approvals'
import departmentsRouter from './modules/departments'
import employeesRouter from './modules/employees'
import permissionRouter from './modules/permission'
import attendancesRouter from './modules/attendances'
import salarysRouter from './modules/salarys'
import settingRouter from './modules/setting'
import socialRouter from './modules/social'
// 动态路由表 => 动态路由(需要权限才可以访问的) 我们这里准备一个数组存放
export const asyncRoutes = [
  approvalsRouter,
  departmentsRouter,
  employeesRouter,
  permissionRouter,
  attendancesRouter,
  salarysRouter,
  settingRouter,
  socialRouter
]
export const constantRoutes = [
  {
    
    
    path: '/login',
    component: () => import('@/views/login/index'),
    hidden: true
  },

  {
    
    
    path: '/404',
    component: () => import('@/views/404'),
    hidden: true
  },

  {
    
    
    // 重定向
    path: '/',
    component: Layout,
    redirect: '/dashboard',
    children: [{
    
    
      path: 'dashboard',
      name: 'Dashboard',
      component: () => import('@/views/dashboard/index'),
      meta: {
    
     title: 'Dashboard', icon: 'dashboard' }
    }]
  },

  // 404 page must be placed at the end !!!
  {
    
     path: '*', redirect: '/404', hidden: true }
]

const createRouter = () => new Router({
    
    
  // mode: 'history', // require service support
  scrollBehavior: () => ({
    
     y: 0 }), // 管理滚动行为, 让页面切换时回到顶部
  routes: [...constantRoutes, ...asyncRoutes] // 临时合并动态路由和静态路由
})

const router = createRouter()

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
    
    
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

export default router

// 其中的一个分模块 路由

import Layout from '@/layout'

export default {
    
    
  path: '/approvals',
  component: Layout,
  children: [{
    
    
    name: 'approvals',
    path: '',
    component: () => import('@/views/approvals'),
    meta: {
    
     title: '审批', icon: 'tree-table' }
  }]
}

猜你喜欢

转载自blog.csdn.net/qq_43944285/article/details/125027668
今日推荐