Skip to main content

Command Palette

Search for a command to run...

vue知识点

Updated
1 min readView as Markdown

组件通信

  • 父子组件间通讯:props和emit、emit、emit、parent、refs和refs和refs和children、v-model
  • 兄弟组件间通讯:事件总线、Vuex、localStorage
  • 隔代组件间通讯:provide和inject
  • 无相关组件间通讯:事件总线、Vuex、localStorage
Vue.directive(指令名, 配置对象)
或
Vue.directive(指令名, 回调函数)


Vue.directive('fbind', {
    // 指令与元素成功绑定时(一上来)
    bind(element, binding) {    // element就是DOM元素,binding就是要绑定的
      element.value = binding.value
    },
    // 指令所在元素被插入页面时
    inserted(element, binding) {
      element.focus()
    },
    // 指令所在的模板被重新解析时
    update(element, binding) {
      element.value = binding.value
    }
})

Vue组件

1.定义组件 2.注册组件 3.使用组件

ref 被用来给元素或子组件注册引用信息(id替代者)应用在html标签上获取的是真实dom元素,应用在组件标签上获取的是组件实例对象vc

使用:<h1 ref="xxx"><h1/>
获取:this.$refs.xxx

props 让组件接收外部传过来的数据 注意:props是只读的。

mixin 功能:可以把多个组件共用的配置提取成一个混入对象

组件的自定义事件

  • 第一种方式,在父组件中
  • 第二种方式,在父组件中this.$refs.demo.$on('事件名',方法)

全局事件总线(GlobalEventBus)

import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

new Vue({
  el:'#app',
  render: h => h(App),
  beforeCreate() {
    Vue.prototype.$bus = this // 安装全局事件总线
  }
})
// 绑定自定义事件(接受数据)
this.$bus.$on('xxx',方法)
// 触发自定义事件(发送数据)
this.$bus.$emit('xxx',数据)
// 最好在销毁组件时 关闭自定义事件
this.$bus.$off('xxx')

消息订阅与发布(pubsub)消息订阅与发布是一种组件间通信的方式,适用于任意组件间通信

$nextTick 生命周期钩子 this.$nextTick(回调函数) 在下一次dom更新结束后执行其指定的回调。

当改变数据后,要基于更新后的新dom进行某些操作时,要在nextTick所指定的回调函数中执行

默认插槽、具名插槽、作用域插槽

每个组件都有自己的$route属性,里面存储着自己的路由信息

整个应用只有一个router,可以通过组件的$router属性获取到

全局守卫 meta路由源信息

// 全局前置守卫:初始化时、每次路由切换前执行
router.beforeEach((to,from,next) => {
    console.log('beforeEach',to,from)
    if(to.meta.isAuth){ // 判断当前路由是否需要进行权限控制
        if(localStorage.getItem('school') === 'atguigu'){ // 权限控制的具体规则
            next()    // 放行
        }else{
            alert('暂无权限查看')
        }
    }else{
        next()    // 放行
    }
})

// 全局后置守卫:初始化时、每次路由切换后执行
router.afterEach((to,from) => {
    console.log('afterEach',to,from)
    if(to.meta.title){ 
        document.title = to.meta.title //修改网页的title
    }else{
        document.title = 'vue_test'
    }
})

独享守卫

beforeEnter(to,from,next){
    console.log('beforeEnter',to,from)
    if(localStorage.getItem('school') === 'atguigu'){
        next()
    }else{
        alert('暂无权限查看')
    }
}

组件内守卫

//进入守卫:通过路由规则,进入该组件时被调用
beforeRouteEnter (to, from, next) {... next()},

//离开守卫:通过路由规则,离开该组件时被调用
beforeRouteLeave (to, from, next) {... next()},

More from this blog

js 数组方法

一、增删改方法 push()方法接收任意数量的参数,并将它们添加到数组末尾,返回数组的最新长度 unshift()在数组开头添加任意多个值,然后返回新的数组长度 pop() 方法用于删除数组的最后一项,同时减少数组的 length 值,返回被删除的项 shift()方法用于删除数组的第一项,同时减少数组的 length 值,返回被删除的项 splice功能强大,可以同时对数组进行增删改的操作 二、搜索和位置方法 indexOf()返回要查找的元素在数组中第一次出现的下标,如果没找到则返回 -1 ...

Oct 16, 20231 min read

Server-Sent Events(SSE)

Server-Sent Events(SSE)是一种用于实现服务器向客户端实时推送数据的Web技术。与传统的轮询和长轮询相比,SSE提供了更高效和实时的数据推送机制。 SSE基于HTTP协议,允许服务器将数据以事件流(Event Stream)的形式发送给客户端。客户端通过建立持久的HTTP连接,并监听事件流,可以实时接收服务器推送的数据。 SSE的主要特点包括: 简单易用:SSE使用基于文本的数据格式,如纯文本、JSON等,使得数据的发送和解析都相对简单。 单向通信:SSE支持服务器向客户...

Sep 21, 20231 min read

Untitled Publication

28 posts