“金三银四”的时候到了,一大批准备跳槽的程序员蠢蠢欲动,小编最近也在投简历,找工作。现在很多公司都要求vue、react、ng三大主流框架中的一两个。小编在此总结一下vue常见的面试题,希望对面试的小伙伴有帮助。

一、Vue的生命周期的理解

beforeCreate(创建前) 在数据观测和初始化事件还未开始。

created(创建后) 完成数据观测,属性和方法的运算,初始化事件,$el属性还没有显示出来。

beforeMount(载入前) 在挂载开始之前被调用,相关的render函数首次被调用。实例已完成以下的配置:编译模板,把data里面的数据和模板生成html。注意此时还没有挂载html到页面上。

mounted(载入后) 在el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用。实例已完成以下的配置:用上面编译好的html内容替换el属性指向的DOM对象。完成模板中的html渲染到html页面中。此过程中进行ajax交互。

beforeUpdate(更新前) 在数据更新之前调用,发生在虚拟DOM重新渲染和打补丁之前。可以在该钩子中进一步地更改状态,不会触发附加的重渲染过程。

updated(更新后) 在由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用。调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作。然而在大多数情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环。该钩子在服务器端渲染期间不被调用。

beforeDestroy(销毁前) 在实例销毁之前调用。实例仍然完全可用。

destroyed(销毁后) 在实例销毁之后调用。调用后,所有的事件监听器会被移除,所有的子实例也会被销毁。该钩子在服务器端渲染期间不被调用。

a、第一次页面加载会触发哪几个钩子?

会先后触发beforeCreate, created, beforeMount, mounted。

b、DOM 渲染在哪个周期中就已经完成

DOM 渲染在 mounted 中就已经完成了。

二、Vue实现数据双向绑定的原理

vue实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应监听回调。

当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化。

vue的数据双向绑定 将MVVM作为数据绑定的入口,整合Observer,Compile和Watcher三者,通过Observer来监听自己的model的数据变化,通过Compile来解析编译模板指令(vue中是用来解析 {{}}),最终利用watcher搭起observer和Compile之间的通信桥梁,达到数据变化 —>视图更新;视图交互变化(input)—>数据model变更双向绑定效果。

 

三、Vue组件间的参数传递

常见传参方式

父组件向子组件传值:

1)子组件在props中创建一个属性,用来接收父组件传过来的值;

2)在父组件中注册子组件;

3)在子组件标签中添加子组件props中创建的属性;

4)把需要传给子组件的值赋给该属性;

子组件传给父组件:

$emit方法传递参数。

四、vue中的作用。

是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。

五、vue的指令有哪些?

v-text,v-html, v-once, v-show,v-if, v-for,v-bind,v-model,自定义指令。

六、v-for中为什么使用key?

使用v-for更新已渲染的元素列表时,默认用就地复用策略;列表数据修改的时候,他会根据key值去判断某个值是否修改,如果修改,则重新渲染这一项,否则复用之前的元素;(因为Virtual DOM 使用Diff算法实现的原因)。

七、v-show和v-if指令的共同点和不同点。

v-show指令是通过修改元素的display的CSS属性让其显示或者隐藏。

v-if令是直接销毁和重建DOM达到让元素显示和隐藏的效果。

八、如何让CSS只在当前组件中起作用

将当前组件的

九、封装组件步骤

1. 建立组件的模板,先把架子搭起来,写写样式,考虑好组件的基本逻辑。

2. 准备好组件的数据输入。即分析好逻辑,定好 props 里面的数据、类型。

3. 准备好组件的数据输出。即根据组件逻辑,做好要暴露出来的方法。

4. 封装完毕了,直接调用即可。

十、引入组件的步骤

1.采用ES6的import ... from ...语法或CommonJS的require()方法引入组件

2.对组件进行注册,代码如下

Vue.component('my-component', { template: '
A custom component!

'})

3.使用组件

十一、vuex有哪几种属性?

State、 Getter、Mutation 、Action、 Module

state => 基本数据(数据源存放地)。

getters => 从基本数据派生出来的数据 。

mutations => 提交更改数据的方法,同步。

actions => 像一个装饰器,包裹mutations,使之可以异步。

modules => 模块化Vuex。

Mutations的更改是同步更改,用于用户执行直接数据更改,this.$store.commit(‘名’)触发

Actions的更改是异步操作,用于需要与后端交互的数据更改,this.$store.dispath(“名”)触发

注意:

1):定义actions方法创建一个更改函数时,这个函数必须携带一个context参数,用于触发mutations方法,context.commit(‘修改函数名’ , ’异步请求值’);

2):mutations第一个参数必须传入state,第二个参数是新值。

十二、axios 简介

axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端。

get请求

// 向具有指定ID的用户发出请求

axios.get('/user?ID=12345').then(function (response) {console.log(response);}).catch(function (error) {console.log(error);});

// 也可以通过 params 对象传递参数

axios.get('/user', {params: {ID: 12345}}).then(function (response) {console.log(response);}).catch(function (error) {console.log(error);});

post请求

axios.post('/user', {firstName: 'Fred',lastName: 'Flintstone'}).then(function (response) {console.log(response);}).catch(function (error) {console.log(error);});

并发请求

function getUserAccount() {return axios.get('/user/12345');} function getUserPermissions() {return axios.get('/user/12345/permissions');}axios.all([getUserAccount(), getUserPermissions()]).then(axios.spread(function (acct, perms) {//两个请求现已完成}));

你面试的时候碰到哪些关于vue的面试问题呢,交流一下,互相学习。前端大佬有补充的,不胜赐教。加油加油。

每日一句

愿你在今后的每个日子里即使单枪匹马,也能勇敢无畏。

vue component created没有触发_面试!面试!面试!vue常见面试题。相关推荐

  1. vue component created没有触发_详解在Vue中使用TypeScript的一些思考(实践)

    Vue.extend or vue-class-component 使用 TypeScript 写 Vue 组件时,有两种推荐形式: Vue.extend():使用基础 Vue 构造器,创建一个&qu ...

  2. 【面试系列】计算机网络常见面试题(一)

    [面试]计算机网络常见面试题

  3. 【JAVA秒会技术之秒杀面试官】JavaSE常见面试题(四)

    [前言]别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 --   [下载]本人刚学习Jav ...

  4. laravel mysql sum查询并排行_必看!PHP常见面试题——MySQL篇(二)

    接上期:<必看!PHP常见面试题--MySQL篇(一)> 11.MySQL的默认事务隔离级别是? 读未提交(RU): 一个事务还没提交时, 它做的变更就能被别的事务看到. 读提交(RC): ...

  5. java中级程序员面试题_中级Java程序员常见面试题汇总

    下面是一些中级Java程序员常见面试题汇总,你可以用它来好好准备面试. 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器 ...

  6. vue component created没有触发_Vue的难点解析

    watch 和 computed 和 methods 区别是什么? computed 计算属性,在模板中双向绑定一些数据或表达式时,如果表达式过长,或逻辑更为复杂,就会变得臃肿,难以维护和阅读 < ...

  7. “约见”面试官系列之常见面试题第四十一篇之VUE生命周期(建议收藏)

    详解Vue Lifecycle 先来看看VUE官网对VUE生命周期的介绍 Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.销毁等一系列过程,我们称 ...

  8. “约见”面试官系列之常见面试题之第八十八篇之什么是vue生命周期(建议收藏)

    我们知道vue是一个构建数据驱动的 web 界面的渐进式框架,那么vue生命周期是什么呢?本篇文章就给大家来介绍一下vue生命周期的内容,希望可以帮助到有需要的朋友. vue生命周期是什么? Vue生 ...

  9. “约见”面试官系列之常见面试题第九篇vue实现双向绑定原理(建议收藏)

    目录 1.原理 2.实现 在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出原理.本篇文章中我将会仿照vue写一个双向数据绑定的实例,名字就叫m ...

最新文章

  1. MyBatis常见面试题汇总
  2. C++ explicit关键字详解(转载)
  3. 鸿蒙大陆武器合成,鸿蒙大陆9.1攻略(附隐藏英雄密码)
  4. cpu负载过高问题处理
  5. c#12星座速配代码_原来12星座的软件工程师是这样的
  6. centos yum install 默认目录_Centos7如何更换yum仓库
  7. 每日一课(12/75)操作数的寻址方式
  8. .Net Core应用框架Util介绍(一)转
  9. 怎样在计算机硬盘里新建文件,高手教你轻松新建文件夹
  10. 《自己动手写操作系统》—— 工作环境搭建
  11. Oracle 定时任务详解(dbms_scheduler)
  12. 学计算机软件编程就业前景,2021计算机编程就业前景好吗 有哪些就业方向
  13. 进制转换—任意进制乘法表
  14. 批量制作通知书会议邀请函等模板式文本并快速批量发送邮件
  15. 台式计算机键盘快捷键怎么设置,电脑快捷键设置修改 电脑键盘快捷键怎么更改...
  16. 都2022年了,PPT这些酷炫操作我不允许你不知道
  17. 微光集市-JWT和Token在本项目中的应用(版本5.0)
  18. python便携版本_python便携版安装tk
  19. jdk8stream+mybatis动态sql代替mybatis foreach in 查询
  20. 租车战场没有新故事,一嗨租车能否破局?

热门文章

  1. springboot logback自定义配置文件路径
  2. docker 安装 mysql 并映射数据库存放路径及配置文件
  3. 为什么程序员跟其他人比起来应该喝更多的水
  4. 编写高质量代码的50条黄金守则-Day 02(首选readonly而不是const)
  5. scapy能干点啥?
  6. python时间格式转换time模块
  7. corba的兴衰_代码广播的兴衰
  8. 计算机编程课程顺序_620多个免费的在线编程和计算机科学课程,您可以在三月开始
  9. snapchat_机器中的幽灵:Snapchat不是移动优先的-完全是另一回事
  10. css3 下边框缓缓划过_CSS3 框大小