Vue2项目Headline---知识点总结

87 阅读2分钟

递归函数

  • 递归函数需要同时满足以下两个条件
    • 自己调用自己
    • 一定要有结束条件(否则就会出现死循环)
let i = 1;
function name() {
  i++;
  console.log(`${i}次`);
	
  if (i <= 5) {
    name();
  }
}
name(); // 输出2-6次

递归组件

  • 在本组件内调用本组件(自己调用自己,作用于嵌套),满足条件如上面的递归函数
  • 相当于注册了一个局部组件,并且只能在自己当前组件使用
<template>
    // 使用
	<注册的组件名/>
</template>

<script>
export default {
    // 相当于在本组件内注册了该组件,name的值就是注册的组件名
    name: "自定义组件名", // 等同于 父组件 注册 子组件 ===> components: {newItem}
};
</script>

image-20220603220455613

video标签属性

  • controls: 控制器
  • poster: 设置视频封面图片
<video :poster="图片路径" controls :src="视频路径"></video>

&&(与) 与|| (或)的执行条件

  • &&(与):两个条件同时满足才执行

  • || (或):一个条件满足就执行

数组方法

  • 数组删除
arr.splice(下标值,删除的个数)
  • 数组去重
let arr = [...new Set(去重对象)]
  • 找到对应的下标值
arr.findIndex((item) => {
    // item就是数组arr中的元素
    // 这个函数需要返回一个条件判断(布尔值),当条件成立,会立即返回当前的item
})

ref和refs的使用

  • 作用一

    • ref和refs的使用,等同于原生JS获取标签的方法:document.querySelector('类名'
    • ref:在标签上添加ref="自定义命名"
    • refs:结合this.$refs.自定义命名,来获取标签
  • 作用二

    • 可以获取到组件对象
<van-nav-bar ref='nav'" />

// 获取从框架中复制过来的组件
this.$refs.nav

导航/路由守卫

  • 本质上是一个函数,就是触发的时机比较特殊,会在路由跳转之前触发的一个叫beforeEach的函数

  • 语法:

router.beforeEach((to, from, next) => {
  // to:指的是跳转的目标由对象,里面有一个属性 to.path 就是我们的跳转的路径
  // from:指当前的路由对象,里面有一个属性,from.path 就是当前的路由路径
  // next:表示是否放行的函数

  // next() 表示放行
  // next(false) 表示不放行
  // next(路由路径)  表示跳转指定路径(当条件不满足时)

  // 使用场景:可以做页面(路由)权限
  // 黑马头条项目中:个人中心必须要登录后才能访问,就是可以使用到导航守卫来实现此功能
});

/deep/ 样式穿透

  • 组件库的组件名即为当前组件的类名,使用了样式穿透,我们就可以直接设置组件内部的标签样式

  • /deep/ 样式穿透是less预处理器提供的语法 ,并且要加上 scoped 属性,主要针对局部样式

<style lang="less" scoped>
/deep/.类名 {}
</style>

click修饰符-native

  • 自定义组件上不能直接绑定原生事件,需要借助.native才能绑定成功

meta-路由元信息

  • 可以用来保存数据,且路由跳转的时候这里的数据不会被重置

闭包

  • 在我们封装一些函数的时候,会发现有些变量不适合声明在函数里面,而闭包的存在就是为了让我们在使用的时候更加合理

  • 闭包:当两个函数嵌套在一起时,可以使一个函数访问另一个函数的变量

  • 应用场景:使得我们封装的函数更加的完善

  var a = 123  // 全局变量 

  function test(){
      console.log(a);  // 可以访问到
      var b = 456 // 局部变量
  }
  test()
        //  console.log(b); // 报错  b is not defined 
 
        // 封装的函数实现了,可以连续打印5次字符串123出来
  function test(){
      let i = 1;
      return function a(){
          i++;
          console.log("123");
          if(i<=5){
              a()
          }
      }
  }
  let aa = test()
  aa()