当前位置: 首页 > news >正文

集团网站推广深圳市在建项目

集团网站推广,深圳市在建项目,淘宝客网站主机,广西桂林天气预报7天一、CSS 1.说一下CSS的盒模型。 在HTML页面中的所有元素都可以看成是一个盒子 盒子的组成#xff1a;内容content、内边距padding、边框border、外边距margin 盒模型的类型#xff1a; 标准盒模型 margin border padding content IE盒模型 margin content(border padd…一、CSS 1.说一下CSS的盒模型。 在HTML页面中的所有元素都可以看成是一个盒子 盒子的组成内容content、内边距padding、边框border、外边距margin 盒模型的类型 标准盒模型 margin border padding content IE盒模型 margin content(border padding) 控制盒模型的模式box-sizing:content-box默认值标准盒模型、border-boxIE盒模型; 2.CSS选择器的优先级 CSS的特性继承性、层叠性、优先级 优先级写CSS样式的时候会给同一个元素添加多个样式此时谁的权重高就显示谁的样式 标签、类/伪类/属性、全局选择器、行内样式、id、!important !important 行内样式 id 类/伪类/属性 标签 全局选择器 3.隐藏元素的方法有哪些 display:none; 元素在页面上消失不占据空间 opacity:0; 设置了元素的透明度为0元素不可见占据空间位置 visibility:hidden; 让元素消失占据空间位置一种不可见的状态 position:absolute; clip-path 4.px和rem的区别是什么 px是像素显示器上给我们呈现画面的像素每个像素的大小是一样绝对单位长度 rem相对单位相对于html根节点的font-size的值直接给html节点的font-size:62.5%; 1rem 10px; 16px*62.5%10px 5.重绘重排有什么区别 重排回流布局引擎会根据所有的样式计算出盒模型在页面上的位置和大小 重绘计算好盒模型的位置、大小和其他一些属性之后浏览器就会根据每个盒模型的特性进行绘制 浏览器的渲染机制 对DOM的大小、位置进行修改后浏览器需要重新计算元素的这些几何属性就叫重排 对DOM的样式进行修改比如color和background-color浏览器不需要重新计算几何属性的时候直接绘制了该元素的新样式那么这里就只触发了重绘 6.让一个元素水平垂直居中的方式有哪些 1.定位margin 2.定位transform 3.flex布局 4.grid布局 5.table布局 7.CSS的哪些属性哪些可以继承哪些不可以继承 CSS的三大特性继承、层叠、优先级 子元素可以继承父类元素的样式 1.字体的一些属性font 2.文本的一些属性line-height 3.元素的可见性visibility:hidden 4.表格布局的属性border-spacing 5.列表的属性list-style 6.页面样式属性page 7.声音的样式属性 8.有没有用过预处理器 预处理语言增加了变量、函数、混入等强大的功能 SASS LESS 二、JavaSscipt 1.JS由哪三部分组成 ECMAScriptJS的核心内容描述了语言的基础语法比如var,for数据类型数组、字符串 文档对象模型DOMDOM把整个HTML页面规划为元素构成的文档 浏览器对象模型BOM对浏览器窗口进行访问和操作 2.JS有哪些内置对象 String Boolean Number Array Object Function Math Date RegExp… Math abs() sqrt() max() min() Data new Data() getYear() Array String concat() length slice() split() 3.操作数组的方法有哪些 push() pop() sort() splice() unshift() shift() reverse() concat() join() map() filter() ervery() some() reduce() isArray() findIndex() 哪些方法会改变原数组 push() pop() unshift() shift() sort() reverse() splice() 4.JS对数据类的检测方式有哪些 typeof() instanceof() constructor Object.prototype.toString.call() 5.说一下闭包闭包有什么特点 什么是闭包函数嵌套函数内部函数被外部函数返回并保存下来时就会产生闭包 特点可以重复利用变量并且这个变量不会污染全局的一种机制这个变量是一直保存再内存中不会被垃圾回收机制回收 缺点闭包较多的时候会消耗内存导致页面的性能下降在IE浏览器中才会导致内存泄漏 使用场景防抖节流函数嵌套函数避免全局污染的时候 6.前端的内存泄漏怎么理解 JS里已经分配内存地址的对象但是由于长时间没有释放或者没办法清除造成长期占用内存的现象会让内存资源大幅浪费最终导致运行速度慢甚至崩溃的情况。 垃圾回收机制 因素一些为生命直接赋值的变量一些未清空的定时器过度的闭包一些引用元素没有被清除。 7.事件委托是什么 又叫事件代理原理就是利用了事件冒泡的机制来实现也就是说把子元素的事件绑定到了父元素的身上 如果子元素组织了事件冒泡那么委托也就不成立 组织事件冒泡event.stopPropagation() addEventListener(‘click’,函数名true/false) 默认是false事件冒泡true事件捕获 好处提高性能减少事件的绑定也就减少了内存的占用。 8.基本数据类型和引用数据类型的区别 基本数据类型String Number Boolean undefined null 基本数据类型保存在栈内存当中保存的就是一个具体的值 引用数据类型复杂数据类型Object Function Array 保存在堆内存当中声明一个引用类型的变量它保存的是引用类型数据的地址 假如声明两个引用类型同时指向了一个地址的时候修改其中一个那么另外一个也会改变 9.说一下原型链。 原型就是一个普通对象它是为构造函数的实例共享属性和方法所有实例中引用的原型都是同一个对象 使用prototype可以把方法挂在原型上内存值保存一份 __proto__可以理解为指针实例对象中的属性指向了构造函数的原型prototype 10.new操作符具体做了什么 1.先创建一个空对象 2.把空对象和构造函数通过原型链进行链接 3.把构造函数的this绑定到新的空对象身上 4.根据构建函数返回的类型判断如果是值类型则返回对象如果是引用类型就要返回这个引用类型 11.JS是如何实现继承的 1.原型链继承 2.借用构造函数继承 3.组合式继承 4.ES6的class类继承 12.JS的设计原理是什么 JS引擎 运行上下文 调用栈 事件循环 回调 13.JS中关于this指向的问题 全局对象中的this指向 指向的是window全局作用域或者普通函数中的this 指向全局windowthis永远指向最后调用它的那个对象 在不是箭头函数的情况下new 关键词改变了this的指向apply,call,bind 可以改变this指向不是箭头函数箭头函数中的this 它的指向在定义的时候就已经确定了 箭头函数它没有this,看外层是否有函数有就是外层函数的this没有就是window匿名函数中的this 永远指向了window,匿名函数的执行环境具有全局性因此this指向window 14.script标签里的async和defer有什么区别 当没有async和defer这两个属性的时候 浏览器会立刻加载并执行指定的脚本 有async 加载和渲染后面元素的过程将和script的加载和执行并行进行异步 有defer 加载和渲染后面元素的过程将和script的加载并行进行异步但是它的执行事件要等 所有元素解析完成之后才会执行 15.setTimeout最小执行时间是多少 HTML5规定的内容 setTimeout最小执行时间是4ms setInterval最小执行时间是10ms 16.ES6和ES5有什么区别 JS的组成ECMAScript BOM DOM ES5:ECMAScript5,2009年ECMAScript的第五次修订ECMAScript2009 ES6:ECMAScript6,2015年ECMAScript的第六次修订ECMAScript2015是JS的下一个版本标准 17.ES6的新特性有哪些 1.新增块级作用域let,const 不存在变量提升 存在暂时性死区的问题 块级作用域的内容 不能在同一个作用域内重复声明 2.新增了定义类的语法糖class 3.新增了一种基本数据类型symbol 4.新增了解构赋值 从数组或者对象中取值然后给变量赋值 5.新增了函数参数的默认值 6.给数组新增了API 7.对象和数组新增了扩展运算符 8.Promise 解决回调地狱的问题。 自身有all,reject,resolve,race方法 原型上有then,catch 把异步操作队列化 三种状态pending初始状态,fulfilled操作成功,rejected操作失败 状态pending - fulfilled;pending - rejected 一旦发生状态就会凝固不会再变 async await 同步代码做异步的操作两者必须搭配使用 async表明函数内有异步操作调用函数会返回promise await是组成async的表达式结果是取决于它等待的内容如果是promise那就是promise的结果如果是普通函数就进行链式调用 await后的promise如果是reject状态那么整个async函数都会中断后面的代码不执行 9.新增了模块化import,export 10.新增了set和map数据结构 set就是不重复 map的key的类型不受限制 11.新增了generator 12.新增了箭头函数 不能作为构造函数使用不能用new 箭头函数就没有原型 箭头函数没有arguments 箭头函数不能用call,apply,bind去改变this的执行 this指向外层第一个函数的this 18.call,aply,bind三者有什么区别 都是改变this指向和函数的调用call和apply的功能类似只是传参的方法不同 call方法传的是一个参数列表 apply传递的是一个数组 bind传参后不会立刻执行会返回一个改变了this指向的函数这个函数还是可以传参的bind()() call方法的性能要比apply好一些所以call用的更多一点 19.用递归的时候有没有遇到什么问题 如果一个函数内可以调用函数本身那么这个就是递归函数 函数内部调用自己 特别注意写递归必须要有退出条件return 20.如何实现一个深拷贝 深拷贝就是完全拷贝一份新的对象会在堆内存中开辟新的空间拷贝的对象被修改后原对象不受影响 主要针对的是引用数据类型 1.扩展运算符 2.JSON.parse(JSON.stringify()) 3.利用递归函数实现 21.说一下事件循环。 JS是一个单线程的脚本语言 主线程 执行栈 任务队列 宏任务 微任务 主线程先执行同步任务然后才去执行任务队列里的任务如果在执行宏任务之前有微任务那么要先执行微任务 全部执行完之后等待主线程的调用调用完之后再去任务队列中查看是否有异步任务这样一个循环往复的过程就是事件循环 22.ajax是什么怎么实现的 创建交互式网页应用的网页开发技术 在不重新加载整个网页的前提下与服务器交换数据并更新部分内容 通过XmlHttpRequest对象向服务器发送异步请求然后从服务器拿到数据最后通过JS操作DOM更新页面 1.创建XmlHttpRequest对象 xmh 2.通过xmh对象里的open()方法和服务器建立连接 3.构建请求所需的数据并通过xmh对象的send()发送给服务器 4.通过xmh对象的onreadystate chansge事件监听服务器和你的通信状态 5.接收并处理服务器响应的数据结果 6.把处理的数据更新到HTML页面上 23.get和post有什么区别 1.get一般是获取数据post一般是提交数据 2.get参数会放在url上所以安全性比较差post是放在body中 3.get请求刷新服务器或退回是没有影响的post请求退回时会重新提交数据 4.get请求时会被缓存,post请求不会被缓存 5.get请求会被保存在浏览器历史记录中,post不会 6.get请求只能进行url编码post请求支持很多种 24.promise的内部原理是什么它的优缺点是什么 Promise对象封装了一个异步操作并且还可以获取成功或失败的结果 Promise主要就是解决回调地狱的问题之前如果异步任务比较多同时他们之间有相互依赖的关系 就只能使用回调函数处理这样就容易形成回调地狱代码的可读性差可维护性也很差 有三种状态pending初始状态 fulfilled成功状态 rejected失败状态 状态改变只会有两种情况 pending - fulfilled; pending - rejected 一旦发生状态就会凝固不会再变 首先就是我们无法取消promise一旦创建它就会立即执行不能中途取消 如果不设置回调promise内部抛出的测u哦呜就无法反馈到外面 若当前处于pending状态时无法得知目前在哪个阶段。 原理 构造一个Promise实例实例需要传递函数的参数这个函数有两个形参分别都是函数类型一个是resolve一个是reject promise上还有then方法这个方法就是来指定状态改变时的确定操作resolve是执行第一个函数reject是执行第二个函数 25.promise和async await的区别是什么 1.都是处理异步请求的方式 2.promise是ES6async await 是ES7的语法 3.async await是基于promise实现的他和promise都是非阻塞性的 优缺点 1.promise是返回对象我们要用thencatch方法去处理和捕获异常并且书写方式是链式容易造成代码重叠不好维护async await 是通过tra catch进行捕获异常 2.async await最大的优点就是能让代码看起来像同步一样只要遇到await就会立刻返回结果然后再执行后面的操作 promise.then()的方式返回会出现请求还没返回就执行了后面的操作 26.浏览器的存储方式有哪些 1.cookies H5标准前的本地存储方式 兼容性好请求头自带cookie 存储量小资源浪费使用麻烦封装 2.localstorage H5加入的以键值对为标准的方式 操作方便永久存储兼容性较好 保存值的类型被限定浏览器在隐私模式下不可读取不能被爬虫 3.sessionstorage 当前页面关闭后就会立刻清理会话级别的存储方式 4.indexedDB H5标准的存储方式他是以键值对进行存储可以快速读取适合WEB场景 27.token存在sessionstorage还是loaclstorage token验证身份的令牌一般就是用户通过账号密码登录后服务端把这些凭证通过加密等一系列操作后得到的字符串 1.存loaclstorage里后期每次请求接口都需要把它当作一个字段传给后台 2.存cookie中会自动发送缺点就是不能跨域 如果存在localstorage中容易被XSS攻击但是如果做好了对应的措施那么是利大于弊 如果存在cookie中会有CSRF攻击 28.token的登录流程。 1.客户端用账号密码请求登录 2.服务端收到请求后需要去验证账号密码 3.验证成功之后服务端会签发一个token把这个token发送给客户端 4.客户端收到token后保存起来可以放在cookie也可以是localstorage 5.客户端每次向服务端发送请求资源的时候都需要携带这个token 6.服务端收到请求接着去验证客户端里的token验证成功才会返回客户端请求的数据 29.页面渲染的过程是怎样的 DNS解析 建立TCP连接 发送HTTP请求 服务器处理请求 渲染页面 浏览器会获取HTML和CSS的资源然后把HTML解析成DOM树 再把CSS解析成CSSOM 把DOM和CSSOM合并为渲染树 布局 把渲染树的每个节点渲染到屏幕上绘制 断开TCP连接 30.DOM树和渲染树有什么区别 DOM树是和HTML标签一一对应的包括head和隐藏元素 渲染树是不包含head和隐藏元素 31.精灵图和base64的区别是什么 精灵图把多张小图整合到一张大图上利用定位的一些属性把小图显示在页面上当访问页面可以减少请求提高加载速度 base64传输8Bit字节代码的编码方式把原本二进制形式转为64个字符的单位最后组成字符串 base64是会和html css一起下载到浏览器中减少请求减少跨域问题但是一些低版本不支持若base64体积比原图片大不利于css的加载。 32.svg格式了解多少 基于XML语法格式的图像格式可缩放矢量图其他图像是基于像素的SVG是属于对图像形状的描述本质是文本文件体积小并且不管放大多少倍都不会失真 1.SVG可直接插入页面中成为DOM一部分然后用JS或CSS进行操作 svg/svg2.SVG可作为文件被引入 img srcpic.svg /3.SVG可以转为base64引入页面 33.了解过JWT吗 JSON Web Token 通过JSON形式作为在web应用中的令牌可以在各方之间安全的把信息作为JSON对象传输 信息传输、授权 JWT的认证流程 1.前端把账号密码发送给后端的接口 2.后端核对账号密码成功后把用户id等其他信息作为JWT 负载把它和头部分别进行base64编码拼接后签名形成一个JWTtoken。 3.前端每日请求时都会把JWT放在HTTP请求头的Authorization字段内 4.后端检查是否存在如果存在就验证JWT的有效性签名是否正确token是否过期 5.验证通过后后端使用JWT中包含的用户信息进行其他的操作并返回对应结果 简洁、包含性、因为Token是JSON加密的形式保存在客户端所以JWT是跨语言的原则上是任何web形式都支持。 34.npm的底层环境是什么 node package manager,node的包管理和分发工具已经成为分发node模块的标准是JS的运行环境 npm的组成网站、注册表、命令行工具 35.HTTP协议规定的协议头和请求头有什么 1.请求头信息 Accept:浏览器告诉服务器所支持的数据类型 Host:浏览器告诉服务器我想访问服务器的哪台主机 Referer:浏览器告诉服务器我是从哪里来的防盗链 User-Agent:浏览器类型、版本信息 Date:浏览器告诉服务器我是什么时候访问的 Connection:连接方式 Cookie X-Request-With:请求方式 2.响应头信息 Location:这个就是告诉浏览器你要去找谁 Server:告诉浏览器服务器的类型 Content-Type:告诉浏览器返回的数据类型 Refresh:控制了的定时刷新 36.说一下浏览器的缓存策略。 强缓存本地缓存、协商缓存弱缓存 强缓不发起请求直接使用缓存里的内容浏览器把JSCSSimage等存到内存中下次用户访问直接从内存中取提高性能 协缓需要像后台发请求通过判断来决定是否使用协商缓存如果请求内容没有变化则返回304浏览器就用缓存里的内容 强缓存的触发 HTTP1.0:时间戳响应标头 HTTP1.1:Cache-Control响应标头 协商缓存触发 HTTP1.0:请求头if-modified-since 响应头last-modified HTTP1.1:请求头if-none-match 响应头Etag 37.说一下什么是“同源策略” http:// www. aaa.com:8080/index/vue.js 协议 子域名 主域名 端口号 资源 同源策略是浏览器的核心如果没有这个策略就会遭受网络攻击 主要指的就是协议域名端口号三者一致若其中一个不一样则不是同源会产生跨域 三个允许跨域加载资源的标签img link script 跨域是可以发送请求后端也会正常返回结果只不过这个结果被浏览器拦截了 JSONP CORS websocket 反向代理 38.防抖和节流是什么 都是应对页面中频繁触发事件的优化方案 防抖:避免事件重复触发 使用场景:1.频繁和服务端交互 2.输入框的自动保存事件 节流:把频繁触发的事件减少,每隔一段时间执行 使用场景:scroll事件 39.解释一下什么是json JSON是一种纯字符串形式的数据它本身不提供任何方法适合在网络中进行传输 JSON数据存储在.json文件中也可以把JSON数据以字符串的形式保存在数据库、Cookise中 JS提供了JSON.parse() JSON.stringify() 什么时候使用json定义接口序列化生成token配置文件package.json 40.当数据没有请求过来的时候该怎么做 可以在渲染数据的地方给一些默认的值 if判断语句 41.有没有做过无感登录 1.在相应其中拦截判断token返回过期后调用刷新token的接口 2.后端返回过期时间前端判断token的过期时间去调用刷新token的接口 3.写定时器定时刷新token接口 流程 1.登录成功后保存token 和 refresh_token 2.在响应拦截器中对401状态码引入刷新token的api方法调用 3.替换保存本地新的token 4.把错误对象里的token替换 5.再次发送未完成的请求 6.如果refresh_token过期了判断是否过期过期了就清楚所有token重新登录 42.大文件上传是怎么做的 分片上传 1.把需要上传的文件按照一定的规则分割成相同大小的数据块 2.初始化一个分片上传任务返回本次分片上传的唯一标识 3.按照一定的规则把各个数据块上传 4.发送完成后服务端会判断数据上传的完整性如果完整那么就会把数据库合并成原始文件 断点续传 服务端返回从哪里开始 浏览器自己处理 三、HTML5CSS3 1.语义化的理解。 在写HTML页面结构时所用的标签有意义 头部用head 主体用main 底部用foot… 怎么判断页面是否语义化了 把CSS去掉如果能够清晰的看出来页面结构显示内容较为正常 为什么要选择语义化 1.让HTML结构更加清晰明了 2.方便团队协作利于开发 3.有利于爬虫和SEO 4.能够让浏览器更好的去解析代码 5.给用户带来良好的体验 2.H5C3有哪些新特性 H5的新特性 1.语义化的标签 2.新增音频视频 3.画布canvas 4.数据存储localstorage sessionstorage 5.增加了表单控件 email url search… 6.拖拽释放API CSS3的新特性 1.新增选择器属性选择器、伪类选择器、伪元素选择器 2.增加了媒体查询 3.文字阴影 4.边框 5.盒子模型box-sizing 6.渐变 7.过度 8.自定义动画 9.背景的属性 10.2D和3D 3.rem是如何做适配的 rem是相对长度相对于根元素html的font-size属性来计算大小通常来做移动端的适配 rem是根据根元素font-size计算值的倍数 比如html上的font-size:16px给div设置宽为1.5rem,1.2rem 16px*1.2 19.2px. 4.解决了哪些移动端的兼容问题 1.当设置样式overflow:scroll/auto时IOS上的华东会卡顿 -webkit-overflow-scrolling:touch; 2.在安卓环境下placeholder文字设置行高时会偏上 input有placeholder属性的时候不要设置行高 3.移动端字体小于12px时异常显示 应该先把在整体放大一倍然后再用transform进行缩小 4.ios下input按钮设置了disabled属性为true显示异常 input[typybutton]{ opcity:1 } 5.安卓手机下取消语音输入按钮 input::-webkit-input-speech-button{ display:none } 6.IOS下取消input输入框在输入引文首字母默认大写 7.禁用IOS和安卓用户选中文字 添加全局CSS样式-webkit-user-select:none 8.禁止IOS弹出各种窗口 -webkit-touch-callout:none 9.禁止IOS识别长串数字为电话 添加meta属性 四、Vue 1.v-if和v-show的区别 都可以控制元素的显示和隐藏 1.v-show时控制元素的display值来让元素显示和隐藏v-if显示隐藏时把DOM元素整个添加和删除 2.v-if有一个局部编译/卸载的过程切换这个过程中会适当的销毁和重建内部的事件监听和子组件v-show只是简单的css切换 3.v-if才是真正的条件渲染v-show从false变成true的时候不会触发组件的声明周期v-if会触发声明周期 4.v-if的切换效率比较低 v-show的效率比较高 2.如何理解MVVM的 是Model-View-ViewModel的缩写。前端开发的架构模式 M模型对应的就是data的数据 V视图用户界面DOM VM视图模型Vue的实例对象连接View和Model的桥梁 核心是提供对View和ViewModel的双向数据绑定当数据改变的时候ViewModel能监听到数据的变化自动更新视图当用户操作视图的时候ViewModel也可以监听到视图的变化然后通知数据进行改动这就实现了双向数据绑定 ViewModel通过双向绑定把View和Model连接起来他们之间的同步是自动的不需要认为干涉所以我们只需要关注业务逻辑即可不需要操作DOM同时也不需要关注数据的状态问题因为她是由MVVM统一管理 3.v-for中的key值的作用是什么 key属性是DOM元素的唯一标识 作用 1.提高虚拟DOM的更新 2.若不设置key可能会触发一些bug 3.为了触发过度效果 4.说一下你对vue生命周期的理解。 组件从创建到销毁的过程就是它的生命周期 创建 beforeCreat 在这个阶段属性和方法都不能使用 created 这里时实例创建完成之后在这里完成了数据监测可以使用数据修改数据不会触发updated也不会更新视图 挂载 beforeMount 完成了模板的编译虚拟DOM也完成创建即将渲染修改数据不会触发updated Mounted 把编译好的模板挂载到页面这里可以发送异步请求也可以访问DOM节点 更新 beforeUpdate 组件数据更新之前使用数据是新的页面上的数据时旧的组件即将更新准备渲染可以改数据 updated render重新做了渲染这时数据和页面都是新的避免在此更新数据 销毁 beforeDestroy 实例销毁前在这里实例还可以用可以清楚定时器等等 destroyed 组件已经被销毁了全部都销毁 使用了keep-alive时多出两个周期 activited 组件激活时 deactivited 组件被销毁时 5.在created和mounted去请求数据有什么区别 created在渲染前调用通常先初始化属性然后做渲染 mounted在模板渲染完成后一般都是初始化页面后在对元素节点进行操作 在这里请求数据可能会出现闪屏的问题created里不会 一般用created比较多 请求的数据对DOM有影响那么使用created 如果请求的数据对DOM无关可以放在mounted 6.vue中的修饰符有哪些 1.事件修饰符 .stop 组织冒泡 .prevent 组织默认行为 .capture 内部元素触发的事件先在次处理 .self 只有在event.target是当前元素时触发 .once 事件只会触发一次 .passive 立即触发默认行为 .native 把当前元素作为原生标签看待 2.按键修饰符 .keyup 键盘抬起 .keydown 键盘按下 3.系统修饰符 .ctrl .alt .meta 4.鼠标修饰符 .left 鼠标左键 .right 鼠标右键 .middle 鼠标中键 5.表单修饰符 .lazy 等输入完之后再显示 .trim 删除内容前后的空格 .number 输入是数字或转为数字 7.elementui是怎么做表单验证的 1.在表单中加rules属性然后再data里写校验规则 2.内部添加规则 3.自定义函数校验 8.vue如何进行组件通信 1.父传子 props 父组件使用自定义属性然后子组件使用props r e f 引用信息会注册在父组件的 ref 引用信息会注册在父组件的 ref引用信息会注册在父组件的refs对象上 2.子传父 $emit 子组件绑定自定义事件触发执行后传给父组件父组件需要用事件监听来接收参数 3.兄弟传 new一个新的vue实例用on和emit来对数据进行传输 4.vuex传值 9.keep-alive是什么怎么使用 Vue的一个内置组件包裹组件的时候会缓存不活跃的组件实例并不是销毁他们 作用把组件切换的状态保存在内存里防止重复渲染DOM节点减少加载时间和性能消耗提高用户体验 10.axios是怎么做封装的 下载 创建实例 接着封装请求响应拦截器 抛出 最后封装接口 11.vue路由时怎么传参的 params传参 this.$router.push({name:index,params:{id:item.id}})this.$route.params.id路由属性传参 this.$router.push({name:/index/${item.id}})路由配置 { path:/index:id }query传参可以解决页面刷新参数丢失的问题 this.$router.push({name:index,query:{id:item.id}})12.vue路由的hash模式和history模式有什么区别 1.hash的路由地址上有#号history模式没有 2.在做回车刷新的时候hash模式会加载对应页面history会报错404 3.hash模式支持低版本浏览器history不支持因为是H5新增的API 4.hash不会重新加载页面单页面应用必备 5.history有历史记录H5新增了pushState和replaceState()去修改历史记录并不会立刻发送请求 6.history需要后台配置 13.路由拦截是怎么实现的 路由拦截 axios拦截 需要在路由配置中添加一个字段它是用于判断路由是否需要拦截 {name:index,path:/index,component:Index,meta:{ requirtAuth:true} } router.beforeEach((to,from,next) {if(to.meta.requirtAuth){ if( store.satte.token ){next() }else{ }} })14.说一下vue的动态路由。 要在路由配置里设置meat属性扩展权限相关的字段在路由导航守卫里通过判断这个权限标识实现路由的动态增加和跳转 根据用户登录的账号返回用户角色 前端再根据角色跟路由表的meta.role进行匹配 把匹配搭配的路由形成可访问的路由 15.如何解决刷新后二次加载路由 1.window.location.reload() 2.matcher const router createRouter()export function resetRouter(){ const newRouter creatRouter() router.matcher newRouter.matcher}16.vuex刷新数据会丢失吗怎么解决 vuex肯定会重新获取数据页面也会丢失数据 1.把数据直接保存在浏览器缓存里cookie localstorage sessionstorage 2.页面刷新的时候再次请求数据达到可以动态更新的方法 监听浏览器的刷新书简在刷新前把数据保存到sessionstorage里刷新后请求数据请求到了用vuex如果没有那就用sessionstorage里的数据 17.computed和watch的区别 1.computed是计算属性watch是监听监听的是data中数据的变化 2.computed是支持缓存依赖的属性值发生变化计算属性才会重新计算否则用缓存watch不支持缓存 3.computed不支持异步watch是可以异步操作 4.computed是第一次加载就监听watch是不监听 5.computed函数中必须有return watch不用 18.vuex在什么场景会去使用属性有哪些 state 存储变量 getters state的计算属性 mutations 提交更新数据的方法 actions 和mutations差不多他是提交mutations来修改数据可以包括异步操作 modules 模块化vuex 使用场景 用户的个人信息、购物车模块、订单模块 19.vue的双向数据绑定原理是什么 通过数据劫持和发布订阅者模式来实现同时利用Object.defineProperty()劫持各个属性的setter和getter 在数据发生改变的时候发布消息给订阅者触发对应的监听回调渲染视图也就是说数据和视图时同步的数据发生改变视图跟着发生改变视图改变数据也会发生改变。 第一步需要observer的数据对象进行递归遍历包括子属性对象的属性都加上setter和getter 第二步compile模板解析指令把模板中的变量替换成数据然后初始化渲染视图同时把每个指令对应的节点绑定上更新函数添加订阅者如果数据变化收到通知更新视图 第三步Watcher订阅者是Observer和Compile之间的通信桥梁作用 1.在自身实例化的时候忘订阅器内添加自己 2.自身要有一个update()方法 3.等待属性变动时调用自身的update方法触发compile这种的回调 第四步MVVM作为数据绑定的入口整合了observer、compile和watcher三者通过observer来监听自己的数据变化通过compile解析模板指令最后利用watcher把observer和compile联系起来最终达到数据更新视图更新视图更新数据更新的效果 20.了解diff算法和虚拟DOM吗 虚拟DOM描述元素和元素之间的关系创建一个JS对象 如果组件内有响应的数据数据发生改变的时候render函数会生成一个新的虚拟DOM这个新的虚拟DOM会和旧的虚拟DOM进行比对找到需要修改的虚拟DOM内容然后去对应的真实DOM中修改 diff算法就是虚拟DOM的比对时用的返回一个patch对象这个对象的作用就是存储两个节点不同的地方最后用patch里记录的信息进行更新真实DOM 步骤 1.JS对象表示真实的DOM结构要生成一个虚拟DOM再用虚拟DOM构建一个真实DOM树渲染到页面 2.状态改变生成新的虚拟DOM跟就得虚拟DOM进行比对这个比对的过程就是DIFF算法利用patch记录差异 3.把记录的差异用在第一个虚拟DOM生成的真实DOM上视图就更新了。 21.vue和jquery的区别是什么 1.原理不同 vue就是数据绑定jq是先获取dom再处理 2.着重点不同 vue是数据驱动jq是着重于页面 3.操作不同 4.未来发展不同 22.vuex的响应式处理。 vuex是vue的状态管理工具 vue中可以直接触发methods中的方法vuex是不可以的。未来处理异步当触发事件的时候会通过dispatch来访问actions中的方法actions中的commit会触发mutations中的方法从而修改state里的值通过getter把数据更新到视图 Vue.use(vuex)调用install方法通过applyMixin(vue)在任意组件内执行this.$store就可以访问到store对象。 vuex的state是响应式的借助的就是vue的data把state存到vue实例组件的data中 23.vue中遍历全局的方法有哪些 1.普通遍历对象.forEach() arr.forEach(function(item,index,arr){ console.log(item,index)})2.对元素统一操作 对象.map() var newarr arr.map(function(item){ return item1})3.查找符合条件的元素 对象.filter() arr.filter(function(item){ if(item 2){return false }else{return true }})4.查询符合条件的元素返回索引 对象.findindex() arr.finindex(function(item){ if(item1){return true }else{return false }})对象.evening() 遇到不符合的对象会停止 对象.some() 找到符合条件的元素就停止 24.如何搭建脚手架 下载node cnpm webpack vue-cli 创建项目 1.找到对应的文件然后利用node指令创建cmd 2.vue init webpack xxxx 3.回车项目描述 4.作者回车 5.选择vue build 6.回车 7.输入n 8.不按照yarn 9.输入npm run dev 25.如何封装一个组件 1.使用Vue.extend()创建一个组件 2.使用Vue.components()方法注册组件 3.如果子组件需要数据可以在props中接收定义 4.子组件修改好数据要把数据传递给父组件可以用emit()方法 原则 把功能拆开 尽量让组件原子化一个组件做一件事情 容器组件管数据展示组件管视图 26.封装一个可复用的组件需要满足什么条件 1.低耦合组件之间的依赖越小越好 2.最好从父级传入信息不要在公共组件中请求数据 3.传入的数据要进行校验 4.处理事件的方法写在父组件中 27.vue的过滤器怎么使用 vue的特性用来对文本进行格式化处理 使用它的两个地方一个是插值表达式一个是v-bind 分类 1.全局过滤器 Vue.filter(add,function(v){return v 10 ? 0 v : v }) div{{33 | add}}/div2.本地过滤器 和methods同级 filter:{add:function(v){ return v 10 ? 0 v : v} }28.vue中如何做强制刷新 1.localtion.reload() 2.this.$router.go(0) 3.provide和inject 29.vue3和vue2有哪些区别 1.双向数据绑定的原理不同 2.是否支持碎片 3.API不同 4.定义数据变量方法不同 5.生命周期的不同 6.传值不同 7.指令和插槽不同 8.main.js不同 30.vue的性能优化怎么做 1.编码优化 不要把所有数据都放在data中 v-for时给每个元素绑定事件用事件代理 keep-alive缓存组件 尽可能拆分组件提高复用性、维护性 key值要保证唯一 合理使用路由懒加载异步组件 数据持久化存储的使用尽量用防抖、节流优化 2.加载优化 按需加载 内容懒加载 图片懒加载 3.用户体验 骨架屏 4.SEO优化 预渲染 服务端渲染ssr 5.打包优化 CDN形式加载第三方模块 多线程打包 抽离公共文件 6.缓存和压缩 客户端缓存、服务端缓存 服务端Gzip压缩 31.首屏优化该如何去做 1.使用路由懒加载 2.非首屏组件使用异步组件 3.首屏不中要的组件延迟加载 4.静态资源放在CDN上 5.减少首屏上JS、CSS等资源文件的大小 6.使用服务端渲染 7.简历减少DOM的数量和层级 8.使用精灵图请求 9.做一些loading 10.开启Gzip压缩 11.图片懒加载 32.vue3的性能为什么比vue2好 1.diff算法的优化 2.静态提升 3.事件侦听缓存 33.vue3为什么使用proxy 1.proxy可以代理整个对象defineproperty只代理对象上的某个属性 2.proxy对代理对象的监听更加丰富 3.proxy代理对象会生成新的对象不会修改被代理对象本身 4.proxy补兼容ie浏览器 34.说一下你对组件的理解。 可以重复使用的vue实例独一无二的组件名称 可以抽离单独的公共模块 提高代码的复用率 35.你是如何规划项目文件的 public 图标、index.html、img src api assets components 按分类再次划分子目录 plugins router static styles utils views App.vue main.js package.json vue.config.js 36.是否使用过nuxt.js 是基于vue的应用框架关注的是渲染可以开发服务端渲染应用的配置 SSR服务端渲染 好处 SSR生成的是有内容的HTML页面有利于搜索引擎的搜索 优化了首屏加载时间 SEO优化搜索引擎 SPA的应用不利于搜索引擎SEO的操作 37.SEO如何优化 1.SSR 2.预渲染 prerender-spa-plugin 五、Echarts 1.echarts有用过吗常用的组件有哪些 title标题组件 show text link toolbox工具栏 导出图片 数据视图 切换 缩放 show orient feature tooltip tigger 触发类型 markPoint标注点 markLine图标的标线 六、Uni-APP 1.uni-app有没有做过分包 优化小程序的下载和启动速度 小程序启动默认下载主包并启动页面当用户进入分包时才会下载对应的分包下载完进行展示 七、Weabpack 1.webpack打包和不打包的区别 1.运行效率 2.对基础的支持不够 2.webpack是怎么打包的babel是做什么的 webpack会把js css image看作一个模块用import/require引入 找到入口文件通过入口文件找到关联的依赖文件把他们打包到一起 把bundle文件拆分成多个小的文件异步按需加载所需要的文件 如果一个被多个文件引用打包时只会生成一个文件 如果引用的文件没有调用不会打包如果引入的变量和方法没有调用也不会打包 对于多个入口文件加入引入了相同的代码可以用插件把他抽离到公共文件中 八、Git 1.git如何合并、拉取代码 拉取代码 git pull ‘仓库地址’ 查看状态 git sattus 提交到本地缓存区 git add . 提交本地仓库 git commit -m ‘修改描述’ 提交到远程仓库 git push ‘仓库地址’ master 创建分支 git branch -b xxx 合并分支 git merge ‘合并分支的名字’ 2.git如何解决冲突问题 1.两个分支中修改了同一个文件 2.两个分支中修改了同一个文件的名字 1.解决当前分支上直接修改代码 add commit 2.解决在本地当前分支上修改冲突代码 add commit push 九、HR 1.你的离职原因是什么 疫情 社保 薪资问题 个人发展 技术提升 家庭因素 2.工作到现在项目中遇到最难的问题是什么怎么解决的 1.不要回答没有问题 2.不要说一些常见的简单的问题比如数据请求不过来、渲染页面时出现了问题、跳转路由不会… 首先应该时自行去查找资料寻求解决办法然后再去请教同时或者组长 3.你的优势在哪里 1.尽量不要暴露自己的缺点 2.不要过度美化自己 4.如何协同工作 1.开发前会开个会议最后形成一个开发文档 2.利用工具保证项目的正常进度规范化
http://www.huolong8.cn/news/16635/

相关文章:

  • icp网站快速备案网站报价内容
  • 网站备案需要的资料高性能网站建设指南 京东
  • 罗湖住房和建设局网站官网免费建立网站的软件
  • 做网站的手机软件wordpress 文章表
  • 学校门户网站建设需要多少费用保定关键词优化软件
  • 怎么让客户做网站seo指的是
  • 电子商务网站建设习题答案建筑企业名单和电话
  • 学生做的网站能攻击延吉有学建设网站的地方吗
  • 温州市网站建设公司wordpress的seo作用
  • 网站开发做账四川网站建设外包服务
  • 南宁网站建公司电话温州营销网站制作费用
  • 点创网站建设html网站登陆页面模板
  • 企业定制网站建设公司哪家好自己可以做网站放在百度上面嘛
  • 网站商业授权工厂外发订单哪里去找
  • app类似wordpress百度的seo关键词优化怎么弄
  • 论坛网站备案猪八戒网仿照哪个网站做的
  • 排名前十的网站广州企业网站哪家好
  • 用网站做自我介绍ppt短链接生成器手机版
  • 公司建设网站费用吗模板网站建设价位
  • 关于建设 医院网站的请示php建站模板
  • 大学生网站设计论文3000字威远移动网站建设
  • 网站备案幕布照片ps做网站的公司有哪些岗位
  • 东莞建外贸网站潍坊建设网站
  • 网站建设期末试卷网站前端设计是什么意思
  • 广州网站建设互广郑州企业网站优化哪家便宜
  • 狼雨seo教程专业全网优化
  • 网站SEM优化如何做公司网站建设宣传公司
  • 有没有免费的网站企业官网招聘
  • 用凡科可以做视频网站吗重庆市建设工程节能中心网站
  • 天骏手表网站彩票网站建设一条龙