文章博客

技术团队文档示例


面试题总结1

<p>面试题: 1、vue中 data 为什么要通过函数返回一个{}, 而不直接是一个对象呢 2、vue和react 虚拟DOM的好处是什么,为什么要使用虚拟DOM 3、vue中自定义了很多组件,一次引入太多组件麻烦,如何将组件注册到全局中 4、vue中路由的配置 mode为history和不是history的差别 5、v-if和v-show的差别 6、实现一个简单的类继承, Animal类和Dog类,Dog类继承Animal类 7、获取字符串的后三位 let str = &quot;dabfbsdfv&quot;; 8、获取数组的后三个 let ary = ['a','b','c','d']; 9、vue中常用的生命周期 10、算法题</p> <pre><code> let list = [ { name : "Wayne", order : "js123" }, { name : "Wayne", order : "js234" }, { name : "Wayne", order : "js543" }, { name : "Judy", order : "js093" }, { name : "Judy", order : "js789" }, ] // 处理实现结果如下 let result = [ { name : "Wayne", order : ['js123','js234','js543'] }, { name : "Judy", order : ['js093','js789'] } ]</code></pre> <p>1、vue中 data 为什么要通过函数返回一个{}, 而不直接是一个对象呢?</p> <pre><code> 总结:1.函数的作用域 2.对象的引用数据类型 1.data是一个函数时,每个组件实例都有自己的作用域,每个实例相互独立,不会相互影响 2.Object是引用数据类型,如果不用function 返回,每个组件的data 都是内存的同一个地址,一个数据改变了其他也改变了;</code></pre> <p>2.vue和react 虚拟DOM的好处是什么,为什么要使用虚拟DOM</p> <pre><code>1.具备跨平台的优势:由于 Virtual DOM 是以 JavaScript 对象为基础而不依赖真实平台环境,所以使它具有了跨平台的能力,比如说浏览器平台、Weex、Node 等。 2.操作dom慢,js运行效率高,将dom对比放在js层,提高效率。 3.提升渲染性能:Virtual DOM的优势不在于单次的操作,而是在大量、频繁的数据更新下,能够对视图进行合理、高效的更新。 </code></pre> <p>3、vue中自定义了很多组件,一次引入太多组件麻烦,如何将组件注册到全局中 参考链接:<a href="https://blog.csdn.net/weixin_42937737/article/details/91354170">https://blog.csdn.net/weixin_42937737/article/details/91354170</a></p> <pre><code>1.统一目录下封装好组件 2.统一到index.js文件中导出 3.统一在入口js,中注册完成。 Vue.use(plugin) 如果是一个对象,则必须包含install方法</code></pre> <p>4、vue中路由的配置 mode为history和不是history的差别</p> <pre><code>大牛解答:1.hash模式url里面永远带着#号,我们在开发当中默认使用这个模式。 那么什么时候要用history模式呢? 2.如果用户考虑url的规范那么就需要使用history模式,因为history模式没有#号,是个正常的url适合推广宣传。 3.当然其功能也有区别,比如我们在开发app的时候有分享页面,那么这个分享出去的页面就是用vue或是react做的,咱们把这个页面分享到第三方的app里,有的app里面url是不允许带有#号的,所以要将#号去除那么就要使用history模式, /4.但是使用history模式还有一个问题就是,在访问二级页面的时候,做刷新操作,会出现404错误,那么就需要和后端人配合让他配置一下apache或是nginx的url重定向,重定向到你的首页路由上就ok啦。</code></pre> <p>5、v-if和v-show的差别</p> <pre><code>//总结:v-show和v-if都是用来显示隐藏元素,v-if还有一个v-else配合使用,两者达到的效果都一样,性能方面去有很大的区别。 1.v-show不管条件是真还是假,第一次渲染的时候都会编译出来,也就是标签都会添加到DOM中。 之后切换的时候,通过display: none;样式来显示隐藏元素。可以说只是改变css的样式,几乎不会影响什么性能。 2.v-if在首次渲染的时候,如果条件为假,什么也不操作,页面当作没有这些元素。 当条件为真的时候,开始局部编译,动态的向DOM元素里面添加元素。 当条件从真变为假的时候,开始局部编译,卸载这些元素,也就是删除。 //总结2:v-if绝对是更消耗性能的,因为v-if在显示隐藏过程中有DOM的添加和删除,v-show就简单多了,只是操作css。</code></pre> <p>6.实现一个简单的类继承, Animal类和Dog类,Dog类继承Animal类</p> <pre><code class="language-javascript">function Animal(name,color){ this.name = name; this.color = color; } Animal.prototype.sayName = function(){ return this.name+''+this.color } function Dog(name,color,age){ Animal.call(this,color,name); //将父类的属性继承过来 this.age = age; } Dog.prototype = new Animal(); //将父类的方法继承过来 Dog.prototype.sayAge = function(){ console.log("I am a "+this.age+"!") } var Dog = new Dog('Dog','white',3) console.log(Dog) //Animal { name: 'white', color: 'Dog', age: 3 }</code></pre> <p>7、获取字符串的后三位 let str = &quot;dabfbsdfv&quot;;</p> <pre><code>let str = "dabfbsdfv"; console.log(str.slice(-3)) //=&gt;dfc</code></pre> <p>8、获取数组的后三个 let ary = ['a','b','c','d'];</p> <pre><code>let ary = ['a','b','c','d']; console.log(ary.splice(-3)) //=&gt;[ 'b', 'c', 'd' ]</code></pre> <p>9、vue中常用的生命周期</p> <pre><code>beforeCreate(){ console.log('刚刚创建实例'); }, created(){ console.log('实例创建完成'); }, beforeMount(){ console.log('模板编译之前 '); }, mounted(){ /* 请求数据,操作Dom时常用 */ console.log('实力挂载完成'); }, beforeUpdate(){ console.log('更新前') }, updated(){ console.log('更新后') }, beforeDestroy(){ /* 页面销毁时要保存数据,可以监听这个销毁的生命周期 */ console.log('实例销毁前') alert('准备销毁') }, destroyed(){ console.log('实力销毁后') } -------------------------------------------------------- //业务中常用的Vue生命周期函数 mounted(){ /* 请求数据,操作Dom时常用 */ console.log('实力挂载完成'); }, beforeDestroy(){ /* 页面销毁时要保存数据,可以监听这个销毁的生命周期 */ console.log('实例销毁前') alert('准备销毁') },</code></pre> <p>10、算法题 链接 :<a href="https://blog.csdn.net/weixin_39100915/article/details/103120116">https://blog.csdn.net/weixin_39100915/article/details/103120116</a></p> <p>总结:题目是都接触过,但没有系统的想过,所以以后遇见要在心中问十万个为什么?就是我们所说的知其然,而更要知其所以然!!!</p>

页面列表

ITEM_HTML