面试题笔记

面试题总结

1、vue的特点是什么?

1.国人开发的一个轻量级框架。

2.双向数据绑定,在数据操作方面更为简单。

3.视图,数据,结构分离,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作。

4.组件化,方便封装和复用。

5.虚拟DOM: dom操作是非常耗费性能的,不再使用原生的dom操作节点,极大解放dom操作。
2、父子组件是如何传值的?
父组件引入子组件:

路由配置:使用children属性实现路由嵌套,嵌套的组件关系就是父子组件关系

代码示例:

{
    path: '/father',
    name : 'father ',
    component: father,
    children: [
	{
		path: 'son 'name : ' son',
		component: son
		}
	]
}

组件传值-父组件向子组件传值
第一步:父组件在引用子组件时,通过属性绑定(v-bind: )的形式,把需要传递给子组件的数据,传递到子组件内部,供子组件使用

父组件: father.vue

第二步:把父组件传递过来的数据,在props数组中定义一下

1.组件中的所有props 中的数据,都是通过父组件传递给子组件的

2.props 中的数据都是只读的,无法重新赋值

第三步:在该子组件中使用props数组中定义好的数据

子组件: son.vue

组件传值-父组件把方法传递给子组件

第一步:父组件向子组件传递方法,使用事件绑定机制v-on,自定义一个事件属性,传递给子组件

父组件: father.vue

第二步:在子组件中定义一个方法,在方法中,利用$emit触发.父组件传递过来的,挂载在当前实例上的事件,还可以传递参数

第三步:在子组件中调用定义的那个方法,就可以触发父组件传递过来的方法了
子组件: son.vue
组件传值-子组件通过事件调用向父组件传值

在子组件中,利用$emit触发父组件传递过来的方法的时候,可以将子组件的数据当做参数传递给父组件

父组件: father.vue
3、v-show和v-if指令的共同点和不同点?

共同点:都能控制元素的显示和隐藏。

不同点:实现本质方法不同。

v-show本质就是通过控制css中的display设置为none,控制隐藏,只会编译一次;v-if是动态的向DOM树内添加或者删除DOM元素,若初始值为false,就不会编译了。而且v-if不停的销毁和创建比较消耗性能。

总结:如果要频繁切换某节点,使用v-show(切换开销比较小,初始开销较大)。如果不需要频繁切换某节点使用v-if (初始渲染开销较小,切换开销比较大)
4、说出几种vue当中的指令和它的用法?

v-model双向数据绑定;
v-for循环;
v-if v-show显示与隐藏;
v-on事件;
v-once:只绑定一次

5、vue-loader是什么?使用它的用途有哪些?
vue文件的一个加载器,将template/js/style转换成js模块。用途: js可以写es6、style样式可以scss或less、template可以加jade
6、axios是什么?怎么使用?
请求后台资源的模块。
npm install axios --save装好,js中使用import进来,然后.get或.post。返回在.then函数中如果成功,失败则是在.catch函数中。
7、单页面应用和多页面应用区别及优缺点
单页面应用(SPA),通俗一点说就是指只有一个主页面的应用,浏览器一开始要加载所有必须的 html,js,css。所有的页面内容都包含在这个所谓的主页面中。但在写的时候,还是会分开写(页面片段),然后在交互的时候由路由程序动态载入。

多页面(MPA),就是指一个应用中有多个页面,页面跳转时是整页刷新。

单页面的优点:用户体验好,快,内容的改变不需要重新加载整个页面,基于这一点spa对服务器压力较小;前后端分离;页面效果会比较炫酷(比如切换页面内容时的专场动画)。

单页面缺点:不利于seo;导航不可用,如果一定要导航需要自行实现前进、后退。

8、谈谈你对MVVM开发模式的理解

MVVM分为Model、View、ViewModel三者。

Model:代表数据模型,数据和业务逻辑都在Model层中定义;

View:代表UI视图,负责数据的展示;

ViewModel:负责监听Model中数据的改变并且控制视图的更新,处理用户交互操作;

Mode1和view并无直接关联,而是通过viewModel来进行联系的,Mode1和viewode1之间有着双向数据绑定的联系。因此当Mode1中的数据改变时会触发view层的刷新,view中由于用户交互操作而改变的数据也会在Model中同步。

这种模式实现了Model和View的数据自动同步,因此开发者只需要专注对数据的维护操作即可,而不需要自己操作dom。
9、前端如何优化网站性能?
1、减少HTTP请求数呈

在浏览器与服务器进行通信时,主要是通过HTTP进行通信。浏览器与服务器需要经过三次握手,每次握手需要花费大量时间。而且不同浏览器对资源文件并发请求数量有限〈不同浏览器允许并发数),一旦HTTP请求数量达到一定数量,资源请求就存在等待状态,这是很致命的,因此减少HTP的请求数量可以很大程度上对网站性能进行优化。

可以通过精灵图、合并css和js文件、懒加载等方式来减少http请求。
cSs Sprites

国内俗称css精灵,这是将多张图片台并成─张图片达到减少HTTP请求的一种解决方案,可以通过css的backgr oundN性来访问图片内容。这种方案同时还可以减少图片总字节数。

合并CSS和JS文件

现在前端有很多工程化打包工具,如: grunt、gulp、webpack等。为了减少HTTP请求数量,可以通过这些工具再发布前将多个CSS或者多个35合并成一个文件。

采用lazyLoad

俗称懒加载,可以控制网页上的内容在一开始无需加载,不需要发请求,等到用户操作真正需要的时候立即加载出内客。这样就控制了网页资源—次性请求数量。

2、控制资源文件加载优先级

浏览嚣在加载HTML内容时,是将HTML内容从上至下依次解析,解析到1ink或者script标签就会加载href或者sr c对应链接内容,为了第一时间展示页面给用户,就需要将CSs提前加载,不要受JS加载影响。

一般情况下都是CSS在头部,JS在底部。
3、利用浏览器缓存

浏览器缓存是将网络资源存储在本地,等待下次请求该资源时,如果资源已经存在就不需要到服务器重新请求该资源,直接在本地读取该资源。

4、减少DOM操作(vue这种减少操作DOM)

5、图标使用lconFont替换image标签

**

10.vue中样式绑定语法

**

1.对象方法v-bind:class="{‘orange’ :isRipe,‘green’:isNotRipe}"

2.数组方法v-bind:class="[class1,class2]"

3.行内v-bind:style="{color:color ,fontSize:fontSize ‘p×’]”

**

2021.4.5面试题

**
JS中的call()和apply()方法和区别
一、方法定义:

  • apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。
  • call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法

上面的定义看一遍是很懵的,不过自己遍写例子遍反复读的时候,会有种拨开云雾的感觉。

call 与 apply 的相同点:

  • 方法的含义是一样的,即方法功能是一样的;
  • 第一个参数的作用是一样的;

call 与 apply 的不同点:两者传入的列表形式不一样

  • call可以传入多个参数;

  • apply只能传入两个参数,所以其第二个参数往往是作为数组形式传入

存在的意义:实现(多重)继承

JS闭包

我们首先知道闭包有3个特性:

  • ①函数嵌套函数
  • ②函数内部可以引用函数外部的参数和变量
  • ③参数和变量不会被垃圾回收机制回收

最后总结一下闭包的好处与坏处

好处

①保护函数内的变量安全 ,实现封装,防止变量流入其他环境发生命名冲突
②在内存中维持一个变量,可以做缓存(但使用多了同时也是一项缺点,消耗内存)
③匿名自执行函数可以减少内存消耗

坏处

①其中一点上面已经有体现了,就是被引用的私有变量不能被销毁,增大了内存消耗,造成内存泄漏,解决方法是可以在使用完变量后手动为它赋值为null;
②其次由于闭包涉及跨域访问,所以会导致性能损失,我们可以通过把跨作用域变量存储在局部变量中,然后直接访问局部变量,来减轻对执行速度的影响

**

正则表达式

**

i  是一个修饰符 (搜索不区分大小写)search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。

replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
exec() 方法用于检索字符串中的正则表达式的匹配。

该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
使用 RegExp 对象
在 JavaScript 中,RegExp 对象是一个预定义了属性和方法的正则表达式对象。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值