1、vue的路由跳转及传参有哪些方式?
1、router-link 跳转的方法
有时候跳转时需要传递一个数组,数组中带有多个参数,简便方法如下
<!-- 直接跳转 -->
<router-link to='/testDemo'>
<button>点击跳转2</button>
</router-link>
<!-- 带参数跳转 -->
<router-link :to="{path:'testDemo',query:{setid:123456}}">
<button>点击跳转1</button>
</router-link>
<router-link :to="{name:'testDemo',params:{setid:1111222}}">
<button>点击跳转3</button>
</router-link>
<router-link to="/HH?setid=123qq">跳转到至HelloVue</router-link>
如下的work数组中传递多个参数 id title img等等多个参数时
<router-link tag="aa" :to="{path:'/目标路径',query:{arry:work}}">
export default{
data(){
return{
work:[ ],
}
}
}
在跳转到的页面中用 created()接收
created(){
this.work=this.$route.query.arry;
}
2、点击方法跳转
<template>
<div id='test'>
<button @click='goTo()'>点击跳转4</button>
</div>
</template>
<script>
export default{
name:'test',
methods:{
goTo(){
//直接跳转
this.$router.push('/testDemo');
//带参数跳转
this.$router.push({path:'/testDemo',query:{setid:123456}});
this.$router.push({name:'testDemo',params:{setid:111222}});
}
}
}
</script>
接收页面
created(){
this.id=this.$route.params.orderId;
console.log(this.id)
}
2、什么是闭包?优缺点是什么?
-
闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量, 所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
-
特性: 函数嵌套函数。 函数内部可以引用外部的参数和变量。 参数和变量不会被垃圾回收机制回收。
-
优点: 希望一个变量长期存储在内存中。 避免全局变量的污染。 私有成员的存在。
-
缺点: 常驻内存,增加内存使用量。 使用不当会很容易造成内存泄露。
3、VueX用过吗(Vue状态管理模式)?
-
state 存放状态
-
mutations state成员操作
-
getters 加工state成员给外界
-
actions 异步操作
-
modules 模块化状态管理
4、使用css画三角写?
- 三角形实现原理:宽度width为0;height为0;(1)有一条横竖边(上下左右)的设置为border-方向:长度 solid red,这个画的就是底部的直线。其他边使用border-方向:长度 solid transparent。(2)有两个横竖边(上下左右)的设置,若斜边是在三角形的右边,这时候设置top或bottom的直线,和右边的斜线。若斜边是在三角形的左边,这时候设置top或bottom的直线,和左边的斜线。
.triangle-up {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 100px solid red;
}
5、数组的内置方法
1、join(连接字符);将数组中的元素通过给定的连接字符连接成一个字符串
let s1 = arr.join('-');//数组元素之间用'-'来连接,默认','号连接
2、push(值/变量):从数组的末尾向数组添加元素
arr.push('合规');
3、pop()从数组的末尾删除元素,一次只删除一个,返回被删除的元素。无需传参
let item = arr.pop();
4、shift()从数组的首部开始删除元素;
let t1 = arr.shift();//将删除的元素赋值给t1
5、unshift(值/变量)从数组的首部插入元素
arr.unshift('合规')
6、reverse()将数组元素颠倒顺序
let a2 = arr.reverse();
7、contact()连接两个或多个数组
let temp = [11,14,,15,16];
let newArr = arr.concat(temp);
6、交换两个变量的值,不使用第三个变量
加减实现:
a = 10
b = 20
a = a + b
b = a - b
a = a - b
consolg.log(a, b) //20 10
乘除实现:
a = 10
b = 20
a = a * b
b = a / b
a = a / b
consolg.log(a, b) // 20.0 10.0 小数点是因为python中除法结果为浮点型
异或实现(^)
对异或的简单概述就是相同为假(0),相异为真(1)。
异或操作主要的关键点在于:假设a^b=c,则c^b=a,c^a=b,也就是说一个数连续异或同一个数两次结果不变。
我们都知道计算机中数据都是以二进制形式存储的,现在任意假设两个变量a, b的二进制,a=101101,b=001010,a^b^b=a^(b^b),而根据异或的定义,任意数和自身异或都会等于0,例如上述b^b=001010^001010=000000。同样根据异或的定义,任何数和0异或都会等于这个数本身,就像a^0=101101^000000=101101。
# 异或实现
a = 10
b = 20
a = a ^ b
b = a ^ b
a = a ^ b
consolg.log(a, b) //20 10
7、节流和防抖
节流:n 秒内只运行一次,若在 n 秒内重复触发,只有一次生效。如:获取验证码,只执行第一次
防抖:n 秒后在执行该事件,若在 n 秒内被重复触发,则重新计时。如输入框搜索多次点击,只执行最后一次