Q1、Vue.js核心是什么?
数据驱动,组件化。
Q2、Vue生命周期钩子函数有哪些?
created/beforeCreate;创建前/后
mounted/beforeMounted;载入前/后
update/beforeUpdate;更新前/后
destroy/beforeDestroy;销毁前/后
Q3、Vue中created与mounted的区别?
created:当组件实例创建后被立即调用,可以进行获取数据,初始化一些属性值;
mounted:当Dom渲染后调用,可以进行dom节点操作;
Q4、Vue中v-if和v-show的共同点和区别?
共同点:都能显示隐藏元素;
不同点:
v-if根据条件真假直接从dom上删除或 重建组件节点,切换时会销毁或重建内部的事件监听和子组件,切换有更高的性能消耗,不适合频繁切换。v-if是惰性的,条件为false时什么也不做。
v-show根据条件真假从而更改元素css样式的display属性。适合频繁切换。
Q5、Vue中常用的修饰符?
按键修饰符:.delete、enter、tab、esc、up、down、left、right、space;
事件修饰符:stop(阻止事件传播)、prevent(阻止表单提交)、capture(使用事件捕获)、self(跳过冒泡和捕获阶段,仅在元素自身的事件才可执行)、once(让事件只执行一次)
表单修饰符:.number(用户输入转为数值类型)、.trim(自动过滤用户输入的首尾空白符)
Q6、v-on可以监听多个方法吗?
可以
Q7、元素节点上的key属性的作用?
元素的唯一表示,为了更高效的更新虚拟dom。
Q8、vue-cli项目,如何升级vue版本?
项目目录里运行 npm upgrade vue vue-template-compiler,不出意外的话,可以正常运行和 build。如果有任何问题,删除 node_modules 文件夹然后重新运行 npm i 即可。
Q9、Vue中的data为什么必须是一个函数?
写成函数是为了组件(实例)的每次被复用,返回一份新的data,让每个实例都有一个独立的数据空间;
如果是一个对象的形式,就会产生所有的组件实例都用一份data,从而导致一个组件变了所有组件都变了。这是js特性,与vue设计无关;
Q10、v-for 与 v-if 的优先级?
v-for 优先级高于 v-if;过滤列表时建议将数据列表使用计算属性(computed)替换,返回过滤后的列表。
Q11、vue子组件如何调用父组件的方法?
方法一:$parent;子组件直接使用 $parent 调用父级方法;
方法二:props;父组件添加自定义属性传入方法名,子组件定义props然后直接调用属性名;
方法三:$emit;父组件对子组件添加事件监听,传入方法名,子组件使用$emit('事件名')调用。
第一种不推荐,一般使用第三种;
Q12、keep-alive组件的作用?
保留组件状态避免重新渲染。接受两个属性,include:字符串或正则,只有匹配的组件会被缓存。exclude:匹配的组件不缓存;
Q13、vue-loader的作用?
vue文件的加载器,将template、style、script转换成js模块。
Q14、vue slot的作用?
slot插槽;父组件需要在子组件内放入一些DOM时,这些dom如何显示,是否显示,在哪里显示,由slot负责分发。
Q15、location.href和vue-router有什么区别?
location.href用来进行url跳转,可跳转至其他站点网址,简单方便,但是刷新了页面。
vue-router跳转无刷新页面,静态调转,使用了diff算法,实现了按需加载,减少了dom消耗,原理和history.pushState()类似;
Q16、如何解决vue初始化dom时,页面闪动,出现{{ message }}变量名的现象?
使用v-cloak这个指令可以防止页面加载时出现vuejs变量名而设计的,
[v-cloak]{
display:none!important;
}
Q17、vue和jquery的区别?
jquery使用选择器对DOM进行选择,然后进行一系列操作,数据(M)和界面(V)是在一起的;
vue则是MVVM框架,通过vue将数据和视图完全分离开来了。、
Q18、params和query的区别?
使用方法类似,都是用于页面间传递数据。
query类似于get请求,参数会在地址栏中显示,使用query刷新页面不会丢失query参数。
params参数不会在地址栏中显示,使用params刷新页面会丢失params参数,params参数名需要在路由中定义。
Q19、vue常见的UI组件库?
element-ui、vux、vant、ant-design、iview、mint-ui。。
Q20、什么是MVVM?
模型(Model)-视图(View)-视图模型(ViewModel)
让view的变化能实时让model发生变化,model变化也能更新到view。
Q21、vue-router是什么?有哪些组件?
用于编写路由的插件。组件有router-link、router-view。
Q22、$router和$route的区别?
$router是Vue-Router的实例,常见有push、replace、to等方法。
$route是当前路由跳转的对象,可以通过$route获取当前路由的name\path\query\params等。
Q23、vue-router的两种模式?
history和hash;
Q24、VUEX是什么?一般用于哪些场景?
vue中状态管理的框架。用于单页应用中,共享组件之间的状态和数据,常用场景有登录、购物车等。
Q25、VUE请求数据的代码?应该写在vuex的actions中还是组件的methods中?
如果请求的数据要被其他地方复用,建议放入actions中。如果仅仅是组件内部使用就不要放入vuex。
Q26、VUEX如何实现刷新页面数据不丢失(数据持久化)?
vuex中存储的state会在刷新后被浏览器释放掉,因为state保存在内存中,可以使用vuex-persistedstate插件来实现将数据存储至本地。
Q27、什么是promise?
promise是异步编程问题的一种解决方案,避免多级异步操作的回调嵌套,支持多个并发请求,用来对异步执行结果的描述。promise有3种状态:pending等待、fulfilled成功、rejected失败;
Q28、vue中如何获取/操作dom?
给元素加ref属性,ref="domName",用法:this.$refs.domName
Q29、Vue全家桶有哪些?
vue、vue-router、vuex、vue-cli、vue-resource;
Q30、Vue单页如何优化首屏加载?
1、按需加载
2、异步组件
3、优化组件加载时机
网友评论