vue 20到精选面试题

1、说下Vue数据双向绑定的原理

可以参考https://www.cnblogs.com/wangjiachen666/p/9883916.html

也就是说:输入框内容发生变化时,data中的数据同步发生变化。即view = > model的变化

     data中的数据变化时,文本节点的内容同步发生变化。即model = > view的变化

2、说说Vuex的作用以及应用场景

项目数据状态的集中管理,复杂组件(如兄弟组件、远房亲戚组件)的数据通信问题。

3、说说Vue组件的数据通信方式

父传子----》props  子传父----》$emit

父组件向子组件传值:props

// section父组件
<template>
    <div class="section">
        <funqin-components :articleList="articleList"></funqin-components>
    </div>
</template>

<script>
import funqinComponents from ‘./test/article.vue‘
export default {
    name: ‘HelloWorld‘,
    components: { funqinComponents },
    data() {
        return {
            articleList: [‘红楼梦‘, ‘西游记‘, ‘三国演义‘]
        }
    }
}
</script>

// 子组件 article.vue
<template>
    <div>
        <span v-for="(item, index) in articleList" :key="index">{{item}}</span>
    </div>
</template>
<script>
export default {
    props: [‘articleList‘]
}
</script>

总结: props 只可以从上一级组件传递到下一级组件(父子组件),即所谓的单向数据流。而且 props 只读,不可被修改,所有修改都会失效并警告。

子组件向父组件传值:$emit

// section父组件
<template>
    <div class="section">
        <funqin-components :articleList="articleList" @e-world="getData"></funqin-components>
    </div>
</template>

<script>
import funqinComponents from ‘./test/article.vue‘
export default {
    name: ‘HelloWorld‘,
    components: { funqinComponents },
    data() {
        return {
            attr2:‘‘,
            articleList: [‘红楼梦‘, ‘西游记‘, ‘三国演义‘]
        }
    },
    methods:{
        getData(attr2) {
            this.attr2=attr2;
        }
    }
}
</script>

// 子组件 article.vue
<template>
    <div>
        <span v-for="(item, index) in articleList" :key="index">{{item}}</span>
        {{attr2}}
        <button @click="send">将子组件的数据传递给父组件</button>
    </div>
</template>
<script>
export default {
    data() {
        return {
            attr2: "我是子组件的数据"
        }
    },
    props: [‘articleList‘],
    methods:{
        send() {
            //调用emit方法,触发了一个自定义的事件e-world,发送数据
            this.$emit("e-world", this.attr2);
        }
    }
}
</script>

总结:$emit绑定一个自定义的事件,当这个语句被执行时,就会将参数传给父组件,父组件通过v-on也就是@监听并接收,

同时父组件的data对象里,也要定义这个变量来接收这个值。

既然写到这里,再说一下:兄弟组件的传递(创建一个空的vue对象来接收)

<div id="app">
        <component1></component1>
        <component2></component2>
    </div>
    <template id="t1">
        <div>
            我是component1,{{attr2}}

        </div>
    </template>

    <template id="t2">
        <div>
            我是component2
            <button @click="send">将component2的数据传递给component1</button>
        </div>
    </template>
    <script>
        var event = new Vue({});
        var vm = new Vue({
            el: "#app",
            components: {
                "component1": {
                    template: "#t1",
                    data() {
                        return {
                            attr1: "我是component1的数据",
                            attr2: ""
                        }
                    },
                    mounted() {
                        //接收
                        event.$on("e-world", attr2 => {
                            this.attr2 = attr2;
                        });
                    },
                },
                "component2": {
                    template: "#t2",
                    data() {
                        return {
                            attr2: "我是component2的数据"
                        }
                    },
                    methods: {
                        send() {
                            //发送数据
                            event.$emit("e-world", this.attr2);
                        }
                    },
                }
            }
        });
    </script>

4、Vue的源码有看过吗?说说vuex工作原理

详细请参考:https://www.cnblogs.com/changk/p/8657465.html(转载)

5、什么是虚拟dom,为什么说虚拟 dom会提高性能,解释一下它的工作原理

虚拟dom就是一个JavaScript对象,通过这个JavaScript对象来描述真是的dom。真是的dom操作,都会对某块元素整体从新渲染。采用虚拟dom,当数据变化时,只要局部刷新对应变化的位置就可以了。

6、请你详细介绍一些 package.json 里面的配置

详细请参考:https://blog.csdn.net/weixin_42420703/article/details/81870815(转载)

7、为什么说Vue是一套渐进式框架

每个框架都不可避免会有自己的一些特点,从而会对使用者有一定的要求,这些要求就是主张,主张有强有弱,它的强势程度会影响在业务开发中的使用方式。 使用vue,你 可以在原有

每个框架都不可避免会有自己的一些特点,从而会对使用者 有一定的要求,这些要求就是主张,主张有强有弱,它的强势程度会影响在业务开发中的使用方式。
使用vue,你可以在原有大系统的上面,把一两个组件改用它实现,当jQuery用;也可以整个用它全家桶开发,当Angular用;
还可以用它的视图,搭配你自己设计的整个下层用。你可以在底层数据逻辑的地方用OO和设计模式的那套理念。
也可以函数式,都可以。
它只是个轻量视图而已,只做了自己该做的事,没有做不该做的事,仅此而已
你不必一开始就用Vue所有的全家桶,根据场景,官方提供了方便的框架供你使用。

8、vue-cli提供的几种脚手架模板有哪些,区别是什么

webpack和webpack-simple,最大的区别是webpack-simple没有路由vue-router配置

9、计算属性的缓存和方法调用的区别

(1)我们可以将同一函数定义为一个方法或是一个计算属性。两种方式的最终结果确实是完全相同的。不同的是计算属性是基于它们的依赖进行缓存的。只在相关依赖发生改变时它们才会重新求值。相比之下,每当触发重新渲染时,调用方法将总会再次执行函数。

(2)使用计算属性还是methods取决于是否需要缓存,当遍历大数组和做大量计算时,应当使用计算属性,除非你不希望得到缓存。
我们为什么需要缓存?假设我们有一个性能开销比较大的计算属性 A,它需要遍历一个巨大的数组并做大量的计算。然后我们可能有其他的计算属性依赖于 A 。如果没有缓存,我们将不可避免的多次执行 A 的 getter!如果你不希望有缓存,请用方法来替代。
(3)计算属性是根据依赖自动执行的,methods需要事件调用。

10、axios、fetch与ajax有什么区别

详细请参考:https://www.cnblogs.com/zhang134you/p/10636061.html(转载)

11、vue中央事件总线的使用

详细请参考:https://blog.csdn.net/wy01272454/article/details/77756079(转载)

12、你做过的Vue项目有哪些,用到了哪些核心知识点

13、实现MVVM的思路分析

详细请参考:https://www.cnblogs.com/aaronjs/p/3614049.html(转载)

14、批量异步更新策略及 nextTick 原理

详细请参考:https://blog.csdn.net/sinat_17775997/article/details/83280345(转载)

15、说说Vue开发命令 npm run dev 输入后的执行过程

详细请参考:https://www.cnblogs.com/zeroes/p/vue-run-dev.html(转载)

16、vue-cli中常用到的加载器有哪些

详细请参考:https://www.jianshu.com/p/ac8e685577cd(转载)

17、Vue中如何利用 keep-alive 标签实现某个组件缓存功能

详细请参考:https://www.php.cn/js-tutorial-398645.html(转载)

18、vue-router如何响应 路由参数 的变化

详细请参考:https://www.cnblogs.com/mengfangui/p/9154253.html(转载)

19、Vue 组件中 data 为什么必须是函数

Object是引用数据类型,如果不用function 返回,每个组件的data 都是内存的同一个地址,一个数据改变了其他也改变了,

javascipt只有函数构成作用域(注意理解作用域,只有函数的{}构成作用域,对象的{}以及 if(){}都不构成作用域),data是一个函数时,每个组件实例都有自己的作用域,每个实例相互独立,不会相互影响。

下面以例子来说明一下:

<div id="app">
    <simple-counter></simple-counter>
    <simple-counter></simple-counter>
    <simple-counter></simple-counter>
</div>
var data = { counter: 0 };
    Vue.component(‘simple-counter‘,{
        template:‘<button v-on:click="counter += 1">{{ counter}}</button>‘,
    // 技术上 data 的确是一个函数了,因此 Vue 不会警告,
    // 但是我们返回给每个组件的实例却引用了同一个 data 对象
    data: function () {
        return {
            data
        }
    }
})
new Vue({
    el:‘#app‘
});

因为这三组重新共享了data,所以值都是相同的,我们可以通过给每个组件返回全新的data对象来解决这个问题

data: function () {
    return {
      counter: 0
    }
}

现在每个 counter 都有它自己内部的状态了。

原文地址:https://www.cnblogs.com/shixy1617/p/11410892.html

时间: 2024-10-14 17:14:42

vue 20到精选面试题的相关文章

来自投资银行的20个Java面试题

问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你在一个线程里初始化了一个HashMap然后在多个其他线程里对其进行读取,这肯定没有任何问题.有个例子就是使用HashMap来存储系统配置项.当有多于一个线程对HashMap进行修改操作的时候才会真正产生问题,比如增加.删除.更新键值对的时候.因为put()操作可以造成重新分配存储大小(re-sizeing)的动作,因此有可

经典的20道AJAX面试题-韩烨

1.什么是AJAX,为什么要使用Ajax(请谈一下你对Ajax的认识)什么是ajax:AJAX是"Asynchronous JavaScript and XML"的缩写.他是指一种创建交互式网页应用的网页开发技术.Ajax包含下列技术:基于web标准(standards-basedpresentation)XHTML+CSS的表示:使用 DOM(Document ObjectModel)进行动态显示及交互:使用 XML 和 XSLT 进行数据交换及相关操作:使用 XMLHttpRequ

Java精选面试题之Spring Boot 三十三问

Spring Boot Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家. 问题一: Spring Boot.Spring MVC 和 Spring 有什么区别? SpringFrame SpringFramework 最重要的特征是依赖注入.所有 SpringModules 不是依赖注入就是 IOC 控制反转. 当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用.松耦合应用的单元测试可以很容易的进行. Spr

web前端精选面试题

一.选择题 约束移动端设备视口要使用哪个标签?(A)head (B)meta (C)title (D)消息机制 关于移动端touch事件的说法中,错误的是:(A)touch事件可以通过dom0级方式添加(B)touch事件在手指触摸屏幕的时候触发(C)touch事件常用的事件有三个(D)touch事件中的touchmove事件触发频率很高 3.移动端的onclick事件有多少毫秒的延迟?(A)50 (B)100 (C)200 (D):300 4.Zepto框架支持说法中,下列哪个错误(A)支持I

Java程序员面试BAT大厂,逃脱不了JVM,最新20道JVM面试题

很多人说JVM是不是真的要学?面试官都会问JVM的问题吗?很重要吗? 的确很重要. 随着互联网的发展,高并发高可用.快速响应成为软件的必须,而JVM与这些有着密切关联. 我们在尽情享受Java虚拟机带来好处的同时,还应该去了解和思考“这些技术特性是如何实现的”,去了解最底层的原理.只有熟悉JVM,你才能在遇到OutOfMemory等异常时,不会束手无策,不会一脸懵逼的上网找解决办法,最后就算改了几个启动参数解决了问题,也还是云里雾里. 其实,“为什么学Java虚拟机”这个问题,就和“为什么要学习

jQuery精选面试题及答案

1.jQuery的美元符号$有什么作用?回答:其实美元符号$只是"jQuery"的别名,它是jQuery的选择器,如下代码: Html代码 $(document).ready(function(){  }); 当然你也可以用jQuery来代替$,如下代码: Html代码 jQuery(document).ready(function(){  });  jQuery中就是通过这个美元符号来实现各种灵活的DOM元素选择的,例如$("#main")即选中id为main的元

Java精选笔试题

合抱之木,生于毫末:九层之台,起于垒土:千里之行:始于足下.赶快测测你的Java基础知识掌握的如何? 1,下列说法正确的是() A.一个文件里可以同时存在两个public修饰的类 B.构造函数可以被重写(override) C.子类不能访问父类非public和protected修饰的属性 D.final修饰的类可以被继承 答案:C 一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必须与之一致,否则无法编译,如果源文件中没有一个public类,则文件名与类中没有

金三银四,磨砺锋芒;剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)下

金三银四,磨砺锋芒:剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)下 引言 元旦匆匆而过,2020年的春节又接踵而来,大家除了忙的提着裤子加班.年底冲冲冲外,还有着对于明年的迷茫和期待!2019年有多少苦涩心酸,2020年就有更多幸福美好,加油,奥利给!怀着一颗积极向上的心,来面对未来每一天的挑战! 所谓"兵马未动,粮草先行",我们打响明天的战役也需要精神食粮来做后勤保障才是.在此我整理了多位从业者和我在2019年底至2020年初的一厂面试精选题,希望对磨砺锋芒.奋发向上

5年经验Java程序员面试20天

写在前面 今天分享的是一位5年工作经验的Java工程师在帝都的面试经验总结,看看这些互联网公司都爱问些什么题,希望对大家的面试有指导意义. 从事Java开发也有5年经验了,4月初自己的开启面试经历之旅,前后20天左右,主面互联网公司,一二线大公司或者是融资中的创业公司都面试过,拿了一些offer,其中包括奇虎360等 首先不同面试官面试风格一定不同,这里是我总结这些天面试Java开发过程中的大多数问题,综合分类有Java基础,框架,多线程,网络通信,数据库以及设计模式,算法等几个模块. 一名3年