vue常用知识总结 vue详情解析 vue面试总结

vue-loader是什么?用途有哪些?

是解析vue文件的一个加载器,用途是js可以写es6,style样式可以scss或less,template可以加jade

active-class是那个组件属性?

Vue-router模块的router-link组件,设置激活时样式

css只在当前组件库中起作用:<style scoped>

keep-alive包括动态组件,避免重新渲染,保留组件状态

缓存:  <keep-alive include=”组件名”></keep-alive>

不缓存:<keep-alive exclude=”组件名”></keep-alive>

使用:复杂项目时

路由字典中定义{path:’/detail’,meta:{keepAlive:false/true}} 是否缓存

根目录中:

<keep-alive><router-view v-if=”$route.meta.keepAlive”></router-view></keep-alive>

<keep-alive><router-view v-if=” ! $route.meta.keepAlive”></router-view></keep-alive>

VUE如何自定义属性

全局自定义:

Vue.directive(‘focus’,{

         Inserted:function(el){

                   el.focus()  //聚焦函数

}       

})

二十四:VNode是什么?虚拟DOM是什么?

Vue在页面上渲染的节点,及其子节点称为虚拟节点,简称VNode;虚拟DOM时由组件树建立起来的整个VNode树的称呼

二十五:scss是什么?有哪些特性?怎么使用?

是css的预编译,特新有可以用变量($变量名=值),可以用混合器(),可以嵌套,可以继承,可以运算,安装先装css-loader,node-loader,sass-loader,在webpack.base配置,style标签上加lang=”scss”

二十五:Vue router如何实现跳转

<router-link></router-link>   router.push(‘/’)      router.go(0)

二十六:vue router跳转和location.href有什么区别?

Router是hash改变;location.href是页面跳转,刷新页面

 

1、vue是渐进式轻量级的框架。

2、vue的两个核心是什么?数据驱动和组件化

3、v-if与v-show的区别?

都是判断dom节点的显示或隐藏,v-show是css的display:none,适合做频繁的切换。

v-if是内部组件的重建和销毁的过程

4、vue的常用修饰符

a、按键修饰符(.delete)@keyup.delete="onKey"

b、系统修饰符(enter,ctrl,alt,shift.mate)鼠标按钮修饰符(.left,right ,middle)

.lazy       input输入完成时的修饰符  <input v-model.lazy="msg" >

.number     如果想自动将用户的输入值转为数值类型  <input v-model.number="age" type="number">

.trim     过滤空白字符串     <input v-model.trim="msg">

5、vue中key的作用

dom每个节点的唯一标识符,为了高效的更新虚拟dom,vue中在使用相同标签名元素的过渡切换时

6、在vue中的data为什么必须是函数?

在vm=new Vue()的时候data可以是对象进行操作,但是在component中data必须的函数当data选项是一个函数的时候,每个实例可以维护一份被返回对象的独立的拷贝,这样各个实例中的data不会相互影响,是独立的

7、v-for的优先级比v-if要高。。。

8、vue中子组件调用父组件的方法?

a、this.$parent.fatherMethod()通过this.$parent.event直接调用

b、this.$emit('fatherMethod'); <child @fatherMethod="fatherMethod"></child>子组件通过this.$emit('father')向父组件触发一个事件

c、<child :fatherMethod="fatherMethod"></child> props: {  fatherMethod: { type: Function,default: null}}, methods: {childMethod() { if (this.fatherMethod)this.fatherMethod(); }}}父组件把方法传给子组件,子组件props接受function后调用这个方法

9、vue的生命周期,八个阶段:创建前/后、载入前/后、更新前/后、销毁前/后。

beforeCreate:这个阶段的$el和data都是undefined

created:这个阶段vue有了data,但是还是没有$el

beforeMount:这个阶段$el和data都初始化了,但是为虚拟DOM,data.message还没有被替换

mounted  vue实例挂载完成data.message成功渲染

beforeUpdate和updated,在data变化的时候会触发这两个的方法

在执行destroyed的方法后,对data改变不会再触发周期函数,说明了此时的vue实例已经解除了事件的监听和dom的绑定

第一次加载会触发哪几个钩子?

会触发beforeCreate , created ,beforeMount ,mounted

路由钩子

全局路由钩子:

Router.beforeEach((to,from,next)=>{... next()})

注意:一定要调用next(),否则页面卡在那,一般用于对路由跳转前进行拦截,参数:

To:即将要进入的目标路由对象    From:当前导航正要离开的路由

Next():跳转下一个页面      next(‘/path’):跳转指定路由

Next(false):返回原来页面  next((vm)=>{}):且在beforeRouterEnter用

比如根据登录状态跳转页面判断(to.name->name是路由名)

Router.beforeEach(function(to,from,next){if(to.name==’login’){..}next();})

Router.afterEach((to,from)=>{}) 跳转后调用没有next方法

组件路有钩子:

beforeRouteEnter(to,from,next){next(vm=>{...})} 路由跳转时

注意:此钩子在beforeCreate之前执行,但是next在组件mounted周期之后,无法直接调用this访问组件实例,可用next访问vm实例,修改数据;

beforeRouteLeave(to,from,next){...next()} 离开路由时

注意:可以直接访问this,next不可回调

beforeRouteUpdate 路由切换时

10、vue的4中指令以及用法,v-if条件渲染v-for遍历数据v-bind绑定属性v-model实现双向数据绑定

11、vue的双向数据绑定原理是什么?

<input v-model="sth">

==相当于通过oninput(用户输入时触发)把表单值给到变量

<input v-bind:value="sth" v-on:input="sth=$event.target.value">

 

因为vue是通过Object.defineProperty()来实现数据劫持的。

通过get和set实现双向数据绑定的。。

 

MVVM,ViewModel通过双向绑定把View和Model进行同步交互,不需要手动操作DOM的一种设计思想。

MVVM和MVC区别?MVVM和MVC都是一种设计思想,主要就是MVC中的Controller演变成ViewModel,,MVVM主要通过数据来显示视图层而不是操作节点,解决了MVC中大量的DOM操作使页面渲染性能降低,加载速度慢,影响用户体验问题。

组件之间传值

父向子传值:属性传值,父组件通过给子组件标签上定义属性,子组件通过props方法接收数据;

子向父传值:事件传值,子组件通过$emit(‘自定义事件名’,值),父组件通过子组件上的@自定义事件名=“函数”接收

非父子组件传值:全局定义bus,var bus=new Vue() ; 发送者, bus.$emit(‘自定义名’,值) ;接受者,bus.$on(‘自定义名’,(值)=>{})

路由之间传参

路由字典中:routes={path:’/detail/:id’,component:Detail}

标签中:<router-link :to=”‘/detail/’+item.id ”>

Js中:this.$route.params.id

五:axios的特点和使用

特点:基于promise的Http库,支持promise的所有API,用来请求和响应数据的,而且对响应回来的数据自动转化为json类型,安全性较高,客户端支持防御XRSF(跨站请求伪造),默认不携带cookie;

使用:下载包后引入 import axios from ‘axios’ , 让其携带cookie ,axios.defaults.withCredentials=true, 然后添加到prototype中,Vue.prototype.$axios=axios ,组建中不用引入直接使用this.$axios.get(url,{params:{id:1}})。

六:Vuex是什么?怎么使用?用于哪些场景?

Vuex是框架中状态管理;新建目录store...export,然后main.js引入store再注入到vue实例中;用于购物车,登录状态,单页应用等。

七:Vuex有哪几种属性?

五种:state,action,mutation,getter,module

State:数据源存放地,数据是响应式的

Action: 逻辑处理,提交的是mutation,包含任意异步操作

Mutation: 修改state里的公共数据

Getter: 相当于计算属性,可以复用,可缓存

Module: 模块化

八:Vuex取值

This.$store.state.city

This.$store.commit(‘getData’)

this.$store.dispath(‘getData’)

This.$store.getters.getData

 

posted @ 2019-08-19 22:11  wen521  阅读(481)  评论(0编辑  收藏  举报