[Vue] vue的一些面试题
1.v-model 的原理
v-model 是一个语法糖,它即可以支持原生表单元素,也可以支持自定义组件.v-model 在内部为不同的输入元素使用不同的属性并抛出不同的事件.
- text 和 textarea 元素使用 value 属性和 input 事件
- checkbox 和 radio 使用 checked 属性和 change 事件
- select 字段将 value 作为 prop 并将 change 作为事件
- 自定义组件的时候的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件
在自定义组件中,因为 value 可能作为其他的用处,所有官方推荐的解决方式就是自定 model
// 子组件创建
<template>
<div id="app">
<input
type="checkbox"
v-bind:checked="lovingVue"
v-on:change="$emit('change', $event.target.checked)"
/>
</div>
</template>
<script>
export default {
name: "app",
props: ["lovingVue"],
model: {
prop: "lovingVue",
event: "change"
}
};
</script>
// 父组件使用
<Children v-model="lovingVue"/>
2.vue 事件中传入$event,使用 e.target 和 e.currentTarget 有什么区别?
在 vue 中绑定事件
<div class="outer" @click="handleClickEvent($event)">
<div class="inner"></div>
</div>
......
handleClickEvent(e) {
console.log("arguments :", arguments[0]); //MouseEvent
console.log("event :", e); //MouseEvent
console.log("e.target :", e.target); // <div class="inner"></div>
console.log("e.currentTarget :", e.currentTarget); //<div class="outer"><div class="inner"></div></div>
}
这样点击内部的 inner 也能触发事件,但是 e.target 和 e.currentTarget 指向不同的对象,currentTarge 是事件绑定的元素而 target 是鼠标触发的元素
3.组件进来请求接口时你是放在哪个生命周期?为什么?
- created => 因为在这个生命周期我们常用到的都已经初始化好了
- 涉及到需要页面加载完成之后的话就用 mounted,可以操作 dom
- beforeCreate => beforeCreate 到 created 是同步,可以更早执行
4.使用计算属性的时,函数名和 data 数据源中的数据可以同名吗?
不能同名 因为不管是计算属性还是 data 还是 props 都会被挂载在 vm 实例上,因此 这三个都不能同名
5.vue 中 data 的属性可以和 methods 中的方法同名吗?为什么?
- eslint 不允许你这么做
- 源码地址
Method "${key}" has already been defined as a data property.
,
6.使用 vue 后怎么针对搜索引擎做 SEO 优化?
- ssr,即单页面后台渲染
- vue-meta-info 与 prerender-spa-plugin 预渲染
- nuxt
- phantomjs
7.怎么给 vue 定义全局的方法?
- Vue.prototype[key] = tools[key]
- Vue.mixin(mixin)全局混入 mixin
- Vue.use(plugin)
- // 创建全局方法 this.$root.$on('test', callback) , this.$root.$off 关闭,this.$root.$emit 触发
8.跟 keep-alive 有关的生命周期是哪些?描述下这些生命周期
- activated: 页面第一次进入的时候,钩子触发的顺序是 created->mounted->activated
- deactivated: 页面退出的时候会触发 deactivated,当再次前进或者后退的时候只触发 activated
9.你知道 vue 中 key 的原理吗?说说你对它的理解
作用的话,便于 diff 算法的更新,key 的唯一性,能让算法更快的找到需要更新的 dom,需要注意的是,key 要唯一,不然会出现很隐蔽性的更新问题。
10.vue 中怎么重置 data?
vm.$data 可以获取当前状态下的 data
vm.$options.data 可以获取到组件初始化状态下的 data
Object.assign(this.$data, this.$options.data())
题目和答案来源于 每日面试题
[Vue] vue的一些面试题的更多相关文章
- Javascript - Vue - vue对象
vue提供了一整套前端解决方案,可以提升企业开发效率 vue的处理过程 app.js 项目入口,所有请求最先进入此模块进行处理 route.js 由app.js调用,处理路由的分发 controlle ...
- Vue - vue.js 常用指令
Vue - vue.js 常用指令 目录: 一. vuejs模板语法之常用指令 1. 常用指令: v-html 2. 常用指令: v-text 3. 常用指令: v-for 4. 常用指令: v-if ...
- 前端开发 Vue Vue.js和Nodejs的关系
首先vue.js 是库,不是框架,不是框架,不是框架. Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据. Vue.js 的核心是一个允许你 ...
- [Vue] : Vue概述
什么是Vue.js Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架. Vue.js 是前端的主流框架之一,和Angular.js.React.js 一起,并成为前端三大主流框 ...
- Property 'validate' does not exist on type 'Element | Element[] | Vue | Vue[]'. Property 'valid...
使用vue-cli 3.0+Element-ui时候,调用form表单校验时候出现的问题是: Property 'validate' does not exist on type 'Element | ...
- Vue Vue.use() / Vue.component / router-view
Vue.use Vue.use 的作用是安装插件 Vue.use 接收一个参数 如果这个参数是函数的话,Vue.use 直接调用这个函数注册组件 如果这个参数是对象的话,Vue.use 将调用 ins ...
- vue & vue router & dynamic router
vue & vue router & dynamic router https://router.vuejs.org/guide/essentials/dynamic-matching ...
- vue & vue router & match bug
vue & vue router & match bug match bugs solution name must be router https://stackoverflow.c ...
- 使用angular/react/vue实现相同的面试题组件
面试题要求如下所示 1.angular: <!DOCTYPE html><html lang="en"><head> <meta char ...
随机推荐
- Python3学习笔记(十一):函数参数详解
一.位置参数 根据参数的位置来传递参数,调用函数时,传递的参数顺序和个数必须和定义时完全一致 # 定义函数 def man(name, age): print("My name is %s, ...
- 转载:tcp详解
TCP详解 转自:http://www.cnblogs.com/kzloser/articles/2582957.html 首部格式 图释: 各个段位说明: 源端口和目的端口: 各占 2 字节.端口是 ...
- sublime text 3插件---File Header配置
今天趁着有点闲工夫,准备好好配置一下sublime环境,毕竟天天见面. 首当其冲的就是FileHeader插件了,安装它之后就懒得配置过.(方便起见,以下简称FH) FH是一个为文件自动添加前缀字段的 ...
- codefroces Round #201.a--Difference Row
Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Description You wa ...
- 实现shape图层添加label
void CmapwingisTest2View::OnToolsAdd32780() { TCHAR szFilters[]= _T("SHP Files (*.shp)|*.shp||& ...
- 第七周课程总结 & 实验报告(五)
第七周课程总结 一.抽象类与接口的应用 1.实例化 2.实际应用 ---模板设计(抽象类) ---制定标准(接口) 3.设计模式 ---工厂设计 ---代理设计 ---适配器设计 二.抽象类与接口之间 ...
- layer实现关闭弹出层刷新父界面功能详解
本文实例讲述了layer实现关闭弹出层刷新父界面功能.分享给大家供大家参考,具体如下: layer是一款近年来备受青睐的web弹层组件,她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会 ...
- Python之异常处理-Exception
在写python程序时, 不要害怕报错, 也不要怕自己的英语不够好, 不要看到一有红色的字就心里发怂. 其实报的错也是有套路可寻滴~识别了异常的种类, 才能对症下药. 常见异常: Exception ...
- Python基本语法_控制流语句_if/while/for
目录 目录 前言 软件环境 If 语句 While循环 break continue for 循环 遍历String 遍历Tuple 遍历List 遍历Dictionary 最后 前言 控制流语句用于 ...
- 使用Nginx做WebSockets代理教程
WebSocket 协议提供了一种创建支持客户端和服务端实时双向通信Web应用程序的方法.作为HTML5规范的一部分,WebSockets简化了开发Web实时通信程 序的难度.目前主流的浏览器都支持W ...