面试题01

目录

watch和computed区别

node.js

vuex的五个属性

js的内置对象

vue路由跳转的四种方式

js基本数据类型

js引用数据类型

行内元素

table标签

项目里前后端交互部分怎么实现的

vue生命周期

link和@import的区别

setTimeout(() => {}, 0)什么时候执行

隐藏元素的几种方式

GET 与 POST 的区别

如何判断http请求超时

https加密

箭头函数的this

promise

js逻辑

vue响应式原理

响应式布局

 css中有哪些属性是可以继承的

vue和jquey对比 


watch和computed区别

watch是监听器,不支持缓存,数据变化,直接会触发相应的操作,支持异步操作

computed属性的结果会被缓存,除非依赖数据发生变化才会重新计算,不支持异步,当computed内有异步操作时无效,无法监听数据的变化

使用场景:computed购物车商品结算的时候,一个属性受多个属性影响的时候

watch 一个数据影响多条数据的时候

node.js

服务器端的js运行环境,可以通过js做后台服务器编程开发

vuex的五个属性

state:vuex的基本数据,用来存储变量

geeter:从基本数据(state)派生的数据,相当于state的计算属性

mutation:提交更新数据的方法,必须是同步的(如果需要异步使用action)。每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。

action:和mutation的功能大致相同,不同之处在于 ==》1. Action 提交的是 mutation,而不是直接变更状态。 2. Action 可以包含任意异步操作。

modules:模块化vuex,可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,方便管理。

js的内置对象

String、Data、Array、Boolean、Number、Math、Object

语言自带的对象

vue路由跳转的四种方式

1. router-link

2. this.$router.push() (函数里面调用)

3. this.$router.replace() (用法同push)

4. this.$router.go(n)

js基本数据类型

Number,string,boolean,undefined,null

symbol,bigint

BigInt可以表示任意大的整数

typeof instanceof constructor object.prototype.tostring.call

① typeof只能检测基本数据类型(除null),对于数组、对象、正则等引用数据类型都返回为Object;

② instanceof不能检测基本数据类型,检测引用类型时会顺着原型链往上找,只要原型链上存在就会返回true,我们也可以随意更改原型链的指向,导致检测结果不准确;

③ constructor可以检测基本数据类型,也能分辨出数组和对象,因为我们可以更改constructor,随意会导致检测结果不准确;

js引用数据类型

数组,对象,函数

JS基本数据类型的变量存放的是基本类型数据的实际值;而引用数据类型的变量保存对它的引用,即指针

行内元素

span,a,em,input,br,b,img,textarea,select

行内元素padding有效,不影响周围元素,margin上下无效,左右有效

行内块状元素特征:
(1)不自动换行
(2)能够识别宽高
(3)默认排列方式为从左到右

table标签

cellpadding规定单元边沿与其内容之间的距离

cellspacing规定空白格之间的距离

项目里前后端交互部分怎么实现的

html通过表单 通过action属性,提交表单

jQuery通过ajax请求

vue通过axios[æk'si:əʊ]

前后端分离,后端提供接口,前端调用接口

callee指向拥有arguments对象的函数

vue生命周期

创建 (数据初始化 挂载) 更新 销毁

beforeCreate created beforeMount mounted beforeUpdate Updated beforeDestroy destroyed

  • 「beforeCreate(创建前):」

  • 在组件实例被创建之前立即调用。此时组件的数据和事件还未初始化。

  • 「created(创建后):」

  • 在组件实例被创建后立即调用。组件的数据已经初始化,但此时还未挂载到 DOM。

  • 「beforeMount(挂载前):」

  • 在组件挂载到 DOM 之前立即调用。此时模板编译完成,但尚未将组件渲染到页面上。

  • 「mounted(挂载后):」

  • 在组件挂载到 DOM 后立即调用。此时组件已经渲染到页面上,可以进行 DOM 操作。

  • 「beforeUpdate(更新前):」

  • 在组件数据更新之前立即调用。在此钩子函数内,你可以访问之前的状态,但此时尚未应用最新的数据。

  • 「updated(更新后):」

  • 在组件数据更新后立即调用。此时组件已经重新渲染,可以进行 DOM 操作。

  • 「beforeDestroy(销毁前):」

  • 在组件销毁之前立即调用。此时组件仍然可用,你可以执行一些清理工作。

  • 「destroyed(销毁后):」

  • 在组件销毁后立即调用。此时组件已经被完全销毁,不再可用。

  1. 创建前/后(beforeCreate/created)。在这个阶段,Vue实例的挂载元素和数据对象都为undefined,还未初始化。在created阶段,Vue实例的数据对象已经有了,但el还未初始化。1234567
  2. 载入前/后(beforeMount/mounted)。在beforeMount阶段,Vue实例的$el和data都初始化了,但还是挂载之前为虚拟的dom节点。在mounted阶段,Vue实例挂载完成,data的数据成功渲染。
  3. 更新前/后(beforeUpdate/updated)。当data变化时,会触发beforeUpdate和updated方法。
  4. 销毁前/后(beforeDestroy/destroyed)。在执行destroy方法后,对data的改变不会再触发周期函数,说明此时Vue实例已经解除了事件监听以及和dom的绑定,但是dom结构依然存在。

link和@import的区别

1.link是XHTML标签,@import是css提供的一种方式,link除了引用css外,还可以做很多事情,定义rel连接属性

2.加载顺序的差别,页面被加载的时候,link引用的css会同时被加载,而@import引用的css要等页面都加载完才会被加载

3.兼容性,@import只有IE5以上才能被识别,而link都可以识别

4.dom 只有link可以被dom操作

setTimeout(() => {}, 0)什么时候执行

在同步任务执行完毕之后,任务对列中的异步任务才能进入主线程开始执行

隐藏元素的几种方式

display:none 不占空间,会引起回流和重绘

visibility:hidden,会引起重绘

opacity[əʊˈpæsəti]:0,会引起重绘

overflow:hidden防止溢出

position:定位到可视区域外

GET 与 POST 的区别

get请求:请求的数据会附加在url之后,以?分割URL和传输数据,多个参数用&连接

post请求:post请求把请求的数据放置在http请求包的包体中

post比get更安全

GET请求只能进行url编码,而POST支持多种编码方式。

GET请求在URL中传送的参数是有长度限制的,URL 的最大长度是 2048 个字符,而POST么有

对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

GET在浏览器回退时是无害的,而POST会再次提交请求。

如何判断http请求超时

设置timeout 或try catch

https加密

HTTPS就是使用SSL/TLS协议进行加密传输

箭头函数的this

一般用于回调函数中,不可以当做构造函数,没有原型,不可以改变this指向,this永远指向外层,使用异步代码,异步的结果要马上回来,就要使用回调函数了

箭头函数没有自己的this,箭头函数的this不是调用的时候决定的,而是在定义的时候处在的对象就是它的this

箭头函数的this看外层是否有函数,如果有,外层函数的this就是内部箭头函数的this,如果没有,则this是window,

箭头函数通过call和apply调用,不会改变this指向,只会传入参数

普通函数中的this:

1. this总是代表它的直接调用者, 例如 obj.function ,那么function中的this就是obj;

2.在默认情况(非严格模式下,未使用 'use strict'),没找到直接调用者,则this指的是 window;

3.在严格模式下,没有直接调用者的函数中的this是 undefined;

4.使用call,apply,bind(ES5新增)绑定的,this指的是 绑定的对象。

箭头函数中的this:

1.箭头函数会捕获其所在上下文的 this 值,作为自己的 this 值,自己本身并没有this值;
2.箭头函数的this永远指向其上下文的this,任何方法都改变不了其指向,如call(), bind(), apply()。

promise

axios封装的时候用到

js逻辑

对后端的数据进行处理,对数据进行分页

vue响应式原理

数据发生变化时,会重新对页面进行渲染

响应式布局

在实际项目中,目前使用较多的是使用媒体查询作为布局的基础,使用rem做字体的适配,用srcset来做图片的响应式,宽度可以用rem,flex等来实现响应式,使用视口单位vw/vh做响应式布局也挺多。

 css中有哪些属性是可以继承的

font、color、text-align、line-height、direction

vue和jquey对比 

jQuery是使用选择器($)选取DOM对象,对其进行赋值、取值、事件绑定等操作,其实和原生的HTML的区别只在于可以更方便的选取和操作DOM对象,而数据和界面是在一起的。比如需要获取label标签的内容:$("lable").val();,它还是依赖DOM元素的值。 

Vue则是通过Vue对象将数据和View完全分离开来了。对数据进行操作不再需要引用相应的DOM对象,可以说数据和View是分离的,他们通过Vue对象这个vm实现相互的绑定。这就是传说中的MVVM。

jQuery是通过DOM来控制数据,不仅笨重而且渲染数据特别麻烦,而 Vue是通过数据来控制状态,通过控制数据来控制渲染

左边固定右边自适应

左边:float:left

右边:overflow:hidden

单标签(空元素)

img、br、hr、link、input

== 和 ===的区别

==先转换类型再比较,===先判断类型再比较

vue的事件修饰符

stop:阻止冒泡

prevent:阻止默认事件

z-index

元素使用绝对定位后,使用z-index控制元素的层级关系,兄弟元素才可以

只有position为relative/absolute/fixed的元素,z-index属性才起作用。注意,是该元素本身。

typeof返回哪些数据类型

object number function boolean undefined string

检测数组类型

Array.isArray(),arr.constructor,toString.call([]),instanceof

vue通信组件

父传子:props

子传父:emit

兄弟之间可以通过vuex

vue封装一个组件

在compoents文件夹中新建一个vue文件

在main.js中全局引入,先import再注册到VUE中

接着就可以在任何页面直接使用自己定义的组件

左边定宽,右边自适应

方法一:

.left{

float:left,

width:200px

}

.right{

overflow:hidden

}

方法二:

.parent{

            display: flex;

        }

        .parent>.box1{

            width: 100px;

            background-color: aqua;

           

        }

        .parent>.box2{

            flex: 1;

            background-color: aquamarine;

        }

flex:1

就是代表均匀分配元素

flex: 1; === flex: 1 1 auto;

  • 第一个参数表示: flex-grow 定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大
  • 第二个参数表示: flex-shrink 定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小
  • 第三个参数表示: flex-basis给上面两个属性分配多余空间之前, 计算项目是否有多余空间, 默认值为 auto, 即项目本身的大小

 两边宽度固定,中间自适应

父元素:display:flex

两边元素:定宽

中间元素:width: calc(100vw - 400px);

#dad{/*父元素不设置定位,子元素浮动*/
	width: 100vw;
	height: 30vh;
	background-color: orange;
	text-align: center;
}
#Left{
	float: left;
	width: 200px;
	height: 30vh;
	background-color: lightgreen;
}
#Center{
	float: left;
	width: calc(100vw - 400px);
	height: 30vh;
	background-color: grey;
}
#Right{
	float: left;
	height: 30vh;
	width: 200px;
	background-color: red;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值