vue review

子组件为何不可以修改父组件传递的Prop?
vue提供单向数据流,易于监测数据的流动,如果出现了错误,可以更迅速的定位到错误的地方。子组件如果更改了Prop则会改变父组件的状态。如果子组件需要更改prop时,可以在compute属性中进行更改。

vue中@click.stop称为修饰符事件,阻止了点击事件的冒泡。
或者绑定方法,e.stopPropagation()

相同名称的插槽是合并还是替换?
匿名插槽和作用域插槽一起时,即使顺序相同也会出错。匿名插槽也会插入。
插槽之间名称相同会被合并。
匿名作用域插槽的覆盖行为:会以后面的插槽的模板为准进行渲染

HTML语义化
就是用正确,合理的标签来展示内容。

定义文档的页眉。

canvas 相关
var ctx=canvas.getContext(“2d”)
ctx.strokeRect(x,y,width,height) // 矩形边框
ctx.fillRect(x,y,width,height) //实心矩形
ctx.fillStyle=“rgba()”, //矩形颜色
ctx.clearRect(x,y,width,height) //清除制定的矩形区域,然后这块区域会变的完全透明。

svg和canvas的区别?
canvas更适合游戏应用,依赖分辨率。弱的文本渲染额能力,不支持事件处理器。
svg支持事件处理器

html5有哪些新特性?
1.语义化标签 2.增强型表单
3.视频和音频:

您的浏览器不支持 audio 元素。 4.canvas图形,5.svg图形 6.地理定位 7.拖放API 8.webWorker 可以在后台运行,即页面出现状态无响应的时候,也可以正常操作 9.webstorage 页面存储数据 10.webSocket是一种单个TCP连接上进行全双工通讯的协议。

如何处理HTML5新标签的浏览器兼容问题?

说说 title 和 alt 属性
title当鼠标移至标签时的提示信息。 alt是图片失效的时候的提示信息。

HTML全局属性(global attribute)有哪些
class:为元素设置类表示。 data:为元素增加自定义属性。 draggable:设置元素是否可拖拽。 id 文档内唯一, lang 元素内容的语言, style 行内css样式 title元素相关的建议信息。translate:元素和子孙结点内容是否需要本地化。

让一个元素水平垂直居中,到底有多少种方案?
1.对于确定宽度的块级元素,margin:0 auto;
2.对于行内元素 text-align:center;
对于宽度未知的块级元素
3.对于行内块元素 text-align:center;
4.绝对定位和transfrom:translateX(50%) 移动本身元素的50%
5.display:flex 弹性布局使用justify-content:center;

垂直:
line-height实现居中,适用于纯文字
父盒子设置相对定位,子盒子设置绝对定位,标签通过margin实现自适应居中
也可以通过位移transfrom实现
vertical-align:middle 使用的前提条件是内联元素以及dispaly值为table-cell的元素

浮动布局的优点?有什么缺点?清除浮动有哪些方式?
浮动布局可以脱离正常的文档流,在图文混排的时候,文字会围绕图片周围,另外浮动之后可以为标签设置宽高,类似行内块元素,也有不同,就是浮动可以设置方向,并且不会有空白间隙问题。
方法1.在浮动后面添加额外标签 clear:both ;也可以添加br标签
方法2 将父元素的overflow设置为hidden,父元素会将浮动元素包起来,或者设置高度
方法3 (推荐)在css 中添加伪类元素 :after
content:‘’;display:block;height:0;visibility:hidden;设置添加子元素看不见
clear:both;在这里插入代码片

使用display:inline-block会产生什么问题?解决方法?
常常会出现多个元素并列的问题,同时使用内行块元素中间会出现空行
1.可以在父元素设置font-size:0将空字符调为0,在子元素再次设置
2.盒子中的内容是以右边的底部内容对齐。

布局题:div垂直居中,左右10px,高度始终为宽度一半

盒模型

CSS如何进行品字布局?

CSS如何进行圣杯布局
就是固比固

CSS如何实现双飞翼布局?

什么是BFC?
BFC(block fromatting context)块级格式化上下文,划定相邻界限。包住子元素浮动,使浮动元素回归正常文档流。

什么是 Css Hack?ie6,7,8 的 hack 分别是什么?
css hack是通过在css样式中加入一些特殊的符号,让不同的浏览器识别不同的符号。
’*‘ ie6,7 支持 、’\0‘ ie8 ,9支持

描述一个”reset”的 CSS 文件并如何使用它。知道 normalize.css 吗?你 了解他们的不同之处?
reset的目的就是清除某些浏览器自带的css样式
normalize.css 的作用是将所有浏览器的默认样式统一。

CSS 中 link 和@import 的区别是?
一个使链接样式,一个使导入样式,
1.link属于HTML样式,而@import是由css提供的,
2.在页面被加载时,link同时会被加载,而import只有等到页面被加载完再加载。可能会出下闪烁的情况。
3.link的权重大于import的权重。

为什么要初始化样式?
因为每个浏览器的样式不相同,如果不初始化直接写样式会发生,在不同浏览器中页面的渲染效果不同。布局会出现混乱和差异。所以要统一布局。

0.1+0.2为什么不等于0.3?
计算机内部存储数据的编码的时候,0.1在计算机内部根本不是精确的0.1,而是由舍入误差的0.1

什么是BigInt?
bigint的值的范围时int的两倍,如果需要大于int的范围就用bigInt
bigint表范围 2的53次方-1 int为2的31次方-1

为什么需要BigInt?
长整数表示,高精度计算。

什么是闭包?
父函数中包着子函数。子函数对父函数读取变量
涉及到了js语言特有的”链式作用域“结构,子对象会一级一级的向上寻找所有父元素的所有变量。
闭包简单的理解成闭包就是能够读取其他函数内部的变量的函数
在js因为只有函数内的子函数才可以读取父函数的变量,所以又可以理解成,定义在函数内部的函数。

闭包产生的原因?
1.就是可以读取函数内的变量。
2.就是可以让这些变量的值始终保持在内存中。

闭包有哪些表现形式?
1.有返回值 return函数
2.函数赋值,将内部函数赋值给外部变量,通过外部变量来调用内部函数。
3.函数参数(高阶函数)通过传参的方式调用。
4.(Immediately Invoked Function Expressions) 叫做立即执行表达式,IIFE 跟函数传参类似。
5.循环赋值
6.getter和setter 7.迭代器 8.区分是否首次的场景 9.缓存 10img对象图片上报;低版本ie浏览器会丢失上传的数据,原因是代码执行了完了,变量也随之删除,使用闭包将变量保存在内存中

原型对象和构造函数有何关系?
Object的原型对象指向的是空对象,空对象的的construct属性会指向对象。常常对对象的原型对象的改变的时候,都要改变construct的指向

能不能描述一下原型链?
原型链类似层层寻找,每个对象都有原型链。原型链的尽头指向null。

JS如何实现继承?
js的继承可以通过原型对象来实现。在原型中新建属性。通过原型链的查找来实现方法或者变量的继承。

null是对象吗?为什么?
null算是一个空对象指针,常常用来保存将定义但还没定义对象的变量
因为null的类型标签为0开头的,和对象的类型标签一样

call 和 apply 的区别
call和apply都是指向对象,只是函数内的参数不同。
call里的参数为(this,参数列表)
apply的参数为(this,数组)
例如: var a1 = add.apply(sub,[4,2]);  //sub调用add的方法

描述一下 V8 执行一段JS代码的过程?
1.词法分析和语法分析成语法抽象树
2.根据语法抽象树转换成字节码(字节码不是同时全部转换成机器码的,而是一行一行的转换)
3.执行字节码,编译器将子节码逐行转换成机器码。

关于JS中一些重要的api实现
1.es5的map方法
map()方法返回一个新数组,数组中的元素为原始数组调用函数处理后的值。
map()方法按照原始数组元素顺序一次处理元素。
map()方法中的每一个元素都会执行这个函数。

2.实现数组的reduce方法
reduce方法可以统计数组中的元素个数,例子【a,b,c,a】a:2,b:1,c:1
reduce就是一个累加器功能,前一个元素执行的值会返回与下一个元素返回的值累加。直到数组末,可以设置初始值

3.实现Object.create方法
创建对象,然后定义一个对象,Object.create(对象)
新建的对象会继承目标对象的变量和方法

4.实现bind的方法
bind并不是立即执行,而是返回一个新函数,且新函数的this无法再次被修改
1.可以修改函数this指向。
2.bind返回一个绑定了this的新函数boundFuction

== 和 ===有什么区别?
==’用于一般比较 。’===用于严格比较,==在比较的时候可以转化数据类型。===严格比较,只要类型不匹配就返回flase

Vue
Vue 双向绑定原理
就是将model里数据在view视图中展示。当然反之亦然。vue主要采用发布订阅模式,数据劫持来实现双向绑定。
双向绑定有一个中间人,就是Object.defineProperty。以监听数据变化,并触发set函数,执行更新视图方法。
所以在观察数据变化的时候需要一个Observe观察者来监听数据属性的变化,在更新视图的时候也需要一个watch订阅者来更改视图。
有点在表单交互较多的场景下,会简化大量业务无关的代码。缺点就是(暗箱操作)我们无法追踪局部状态的变化

描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?
当Vue进入初始化阶段时,一方面Vue的observer会遍历data中的属性。并用Object.defineProperty将它转化成
getter/setter的形式。实现数据劫持。另一方面Vue的指令编译器的Compiler对元素结点的各个指令进行解析。
初始化视图,并订阅Watcher来更新视图。此时watcheer会将自已添加到消溪订阅器Dep中,此时初始化完毕。

当数据发生变化时,触发Observer中的setter方法,立即调用Dep.notify(),Dep这个数组开始遍历所有的订阅者
并调用其update方法,Vue内部再通过diff算法,patch相应的更新完成对订阅者视图的改变。

你是如何理解 Vue 的响应式系统的?
当一个Vue实例创建时,vue会遍历data选项的属性。用Object.defineProperty将他们转为getter/setter
并且在内部追踪相关依赖,在属性被访问和修改时通知变化,每个组件实例都有相应的watcher程序实例
他会在组件渲染的过程中把属性记录为依赖,之后当依赖项的setter被调用时,会通知watcher重新计算,,从而
致使它关联的组件得以更新。

组件中写 name 选项有什么作用?
1.项目使用keep-alive时可以搭配组件的name进行过滤
2.dom做递归组件时需要调用自身的name
3.vue-devtools调试工具里显示的组件名称是由vue中的组件name决定的

vue 中怎么重置 data???
使用Object.assign(),vm.d a t a 可 以 获 取 当 前 状 态 下 的 d a t a , v m . data可以获取当前状态下的data,vm.data可以获取当前状态下的data,vm.options.data可以获取到组件初始化状态下的data。
Object.assign(this.d a t a , t h i s . data, this.data,this.options.data())复制代码

vue 首屏加载优化

vuex是什么?怎么使用?哪种功能场景使用它?
Vuex时一个专为Vue.js应用程序开发的状态管理模式。它采用集中式储存管理应用的所有组件的转台,
并以相应的规则 保证状态以一种可预测的方式发生变化。
优点 再state中定义了一个数据之后,可以再所在项目中的任何一个组件里进行获取,进行修改,
并且你的修改可以得到全局的响应变更。

vuex有哪几种属性?
Vuex的运行机制:Vuex提供数据(state)来驱动视图(vue components),通过dispath派发actions,在其中可以做一些异步的操作,然后通过commit来提交mutations,最后mutations来更改state。
核心:
①state:定义初始数据。
②mutations:更改Vuex的store中的状态的唯一方法是提交mutation
③getters:可以对 state 进行计算操作,它就是 store 的计算属性虽然在组件内也可以做计算属性,但是 getters 可以在多给件之间复用如果一个状态只在一个组件内使用,是可以不用 getters。
④actions:异步操作初始数据,其实就是调用mutations里面的方法。
⑤module:面对复杂的应用程序,当管理的状态比较多时;我们需要将vuex的store对象分割成模块

虚拟 DOM 实现原理
virtual DOM其实就是一个以js对象作为基础来模拟dom结构的属性结构,这个属性结构包含了整个DOM结构的信息。。
简单来说。可以把virtual DOM理解为一个简单的js对象。

Vue 中 key 值的作用?
key的作用只要就是为了高效的更新虚拟DOM。另外在使用相同签名标签的时候,需要唯一的key来区别。否则vue只会替换其
内部属性而不会触发过渡效果。

什么是MVVM?
mvvm 就是模型 视图 视图模型 ,就是模型里的数据在视图中展示出来。视图模型就是视图和模型之间的桥梁,
一旦模型数据发生改变,视图也会发生改变。其中用到了数据绑定。
一旦视图的数据发生了变化,模型的数据也会发生改变。实现方式用到了dom监听。我们称之为双向绑定。

mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合?
mvvm和mvc都是一种设计思想,都是一种框架架构。主要就是mvc中的controller演变成view-model。
mvvm主要解决了mvc中大量的DOM操作使页面渲染性能呢降低。加载速度变慢,影响用户体验。
jquery只是原生js封装出来的库,库中有很多封装给的函数,框架类似于吧多种库结合在一起。并且使用框架必须按照它的规范
来进行模块化开发。

浏览器
能不能说一说浏览器缓存?
缓存能够减少浏览器请求资源的次数,当第一个请求资源完成后,根据相应的缓存机制,将
一些静态资源存储在本地磁盘当中,这样下次请求资源的时候,浏览器直接从本地缓存中读取文件,不需要再次发送
请求。这样可以减少网络延迟,加快了页面的响应速度。增强了用户体验,减少了网络带宽的消耗,减轻了服务器的压力。
浏览器中由三种缓存方式,强缓存,协商缓存,缓存位置
强缓存依据某个事件或者某个时间段,所以并不会响应服务资源文件的变化。
所以我们需要协商缓存,协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求。由服务器根据
缓存标识决定是否使用缓存的过程

能不能说一说浏览器的本地存储?各自优劣如何?
cookie并不适合存储,而且存在非常多的缺陷。
web Storage包括localStorage和sessionStorage,默认不会参与服务器的通信。
可以利用localStorage的较大容量和持久特性,可以利用localStorage存储一些内容稳定的资源。
sessionStorage在关闭页面后不需要这些记录,微博就是采取了这样的存储方式。
indexedDB为运行在浏览器上的非关系型数据库,为大型数据的存储提供了接口。

能不能实现事件的防抖和节流?

谈谈你对重绘和回流的理解

能不能实现图片懒加载?

说一说从输入URL到页面呈现发生了什么?

能不能说一说XSS攻击?

BOM对象模型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值