一、对vue是一套渐进式框架的理解
vue.js+VueRouter+Vuex+组件库(element-ui/mint-ui)
生态很全:完全能够胜任中大型项目的开发
渐进式:把vue当做一个很简单的库去使用,
也可以配合他的生态,用到全面的功能,很容易和其他框架和库整合
bootstrap+vue+axios
二、vue.js的核心是什么
数据驱动(响应式):data中的数据变了,视图才会变
组件化:拆组装,目的在于重用,方便,脏活累活一次干完,之后就轻松了
三、v-if v-show有什么区别
相同点:给人的视觉效果是一样的,都是看得见或者看不见(显示和隐藏)
不同点:v-if是通过插入或者移除DOM节点实现条件渲染,
条件成立元素就被插入到文档中,不成立元素就被移除了
v-show是通过css的display属性控制,看得见或者看不见,
条件成立元素display为其本身的值
(例如span:inline,div:block,input:inline-block),条件不成立display为none
四、vue的常用修饰符
三大类
事件修饰符:
.stop stopPropagation 阻止冒泡
.prevent preventDefault 阻止默认行为
.self 事件作用在自己身上才触发
.once 事件只触发一次
键盘修饰符
.enter 回车键
.esc 退出键
v-model 指令修饰符
.lazy 由监听oninput事件转为onchange事件
.number 尽量将文本框中的值转为数字,能转就转,不能转就不转
.trim 去掉字符串的首尾空格
五、v-on可以监听多个方法吗?
可以
v-on='{click:doClick,mouseenter:doMouseEnter}'
六、vue中key值的作用
v-for遍历的时候,需要给每一个元素/组件添加一个唯一的标识
数据劫持
diff算法(虚拟dom映射到真实dom的计算速度)
提高虚拟dom的计算速度
为啥要用虚拟dom?
加快dom绘制速度
七、vue组件中data为啥是个函数
让当前组件独立成为一个作用域,别的组件无法访问
export default({
name:'',
data(){
return {
}
}
})
函数:封装性,重用。隔离作用域
八、v-if和v-for的优先级
v-for的优先级大于v-if的优先级,但是要避免v-for和v-if作用在同一个元素上
解决方法:用计算属性代替
九、vue的生命周期钩子函数有哪些
beforeCreate(可以加一个loading图)
created 创建前后
beforeMount (vue还没工作,数据没有替换)
mounted (vue开始工作,数据替换)挂载前后
beforeUpdate
updated 更新前后 (在初次渲染页面时,不会执行,他们的执行是伴随着视图的更新触发的,
而视图的更新是因为数据的更新,所以这两个钩子函数是伴随着数据的更新而执行的)
beforeDestroy destroyed销毁前后
十、vue的指令和他的用法
v-model 双向数据绑定
v-if 条件渲染
v-for 循环遍历
v-bind 绑定属性的
v-on 绑定事件的
十一、怎么定义vue-router的动态路由
user/:id/:name
路径带有这种格式的就叫动态路由,表示不确定的东西
怎么获取传递过来的参数呢?
$route.params.id
$route.params.name
十二、v-model是什么,怎么使用,绑定的是啥属性
双向数据绑定的指令,绑定的是元素的value属性
常配合的标签有(input textarea radio checkbox)
十三、axios 是什么,怎么使用?
axios是一个基于promise风格,对原生XMLHttpRequest对象的封装,
提供了很多便捷的api,就可以在浏览器端使用,也可以在服务器端使用
在前端用ajax请求
在后端用http请求
安装指令:cnpm i axios -S
引入 import axios from ‘axios’
挂载到vue原型上
vue.prototype.$http=axios
this.$http({
url:'',
method:'',
data:{}
}).then(data=>{
}).catch(err=>{
})
十四、vue组件化的理解
根据合适的粒度拆组件之后去组装
十五、route的区别是什么?
$route:获取路由信息对象
$router:路由实例对象 操作路由的对象
十六、active-class是哪个组件的属性?路由嵌套怎么定义
router-link组件
children:[]
十七、第一次加载页面会触发哪几个钩子?
beforeCreate created beforeMount mounted
十八、methods watch computed 的区别
computed:本质是属性,会缓存,不能做异步操作,可读可写
watch:监视开销大的工作或者异步操作
methods:普通方法,调用一次触发一次
十九、组件的通信
父传子:自定义属性 props接
子传父 :自定义事件$emit派发
兄弟组件:$emit $on
二十、子组件调用父组件的方法
(1)this.$parent.event可以调用父组件身上的方法,无需绑定在子组件身上。
补充:有时候会失效,暂未发现触发点,不建议使用(2)$emit可以调用父组件在子组件身上自定义的事件,需要用@前缀。建议使用此种方式
(3)props可以调用父组件绑定在子组件身上的事件. 需要:前缀。在router-view身上使用失效
二十一、父组件调用子组件的方法
1.$ref
2.$children
二十二、ref的作用
获取元素,获取组件
二十三、过滤器怎么定义,有啥作用?
全局vue.filter(name,(input)=>{
})
局部 filters:{
name(){
}
}
作用:对插值数据或v-bind绑定的属性做进一步处理,并且过滤器可以串联
{{msg|filter1|filter2}}
二十四、如何自定义指令
全局 vue.directive(name,(el,binding)=>{
})
局部 directives:{
}
二十五、vue如何实现动画
单个元素
transition
多个元素
transition-group必须加key
给transition添加name属性
写上class
.xx-enter .xx-leave-to
.xx-enter-active .xxx-leave-active
.xx-enter-to .xxx-leave
或者引入 animate.css 添加class
二十六、 vue中父组件和子组件的执行顺序是怎么样的?
先执行父组件的beforeCreated,created,beforeMounted,再执行子组件的beforeCreated,created,beforeMounted,mounted,然后在执行父组件的mounted