俄语购物网站建设,品牌vi公司,排版设计模板网站,网页制作工具按其制作方式分可以分为哪几种1, Js数据类型有哪些#xff1f;数值、字符串、布尔、undefined、null、数组、对象、函数2, 引用类型和值类型的区别- 值类型存在于栈中, 存取速度快 引用类型存在于堆,存取速度慢- 值类型复制的是值本身 引用类型复制的是指向对象的指针- 值类型结构简单只包含基本数据, 引用…1, Js数据类型有哪些数值、字符串、布尔、undefined、null、数组、对象、函数2, 引用类型和值类型的区别- 值类型存在于栈中, 存取速度快 引用类型存在于堆,存取速度慢- 值类型复制的是值本身 引用类型复制的是指向对象的指针- 值类型结构简单只包含基本数据, 引用类型结构复杂,可以实现多层嵌套 3, 你的项目需要在页面上播放视频用什么播放怎么防止用户下载视频可以使用video标签播放视频, 通过DOM事件禁止下载, 可以在页面的鼠标右击事件和F12键盘事件的回调中return false 以屏蔽用户操作 4, 如何防止你的页面数据被抓取(复制或保存) ?(1, 阻止鼠标右击事件的默认行为(弹出菜单)(2, 阻止F12按键的点按事件默认行为(检查元素)(3, 组件ctrlC组合按键的默认行为 (复制) 5, 怎样实现在动画结束之后执行一段代码过度动画监听transitionend事件。关键帧动画监听animationend事件。Js动画自定义js动画时直接在停止动画的代码之后添加要执行的代码如果使用js动画工具库(velocity)则把要执行的代码写在动画结束时的回调函数中。 6, Promise有哪些使用场景?(1, 在页面打开时,要同时执行多个ajax请求,可以使用promise处理多异步任务并发执行(2, 有些ajax请求之间存在依赖关系,需要顺序执行,造成结构嵌套,可以使用promise解决异步任务多层嵌套的问题, 实现链式调用(3, 在项目中封装网络请求时,使用peomise封装ajax请求并返回peomise对象 7, 浏览器中事件传播的 流程是什么怎样阻止事件的传播怎样阻止事件的默认行为。事件触发后先从根元素到叶子元素逐层捕获然后再从叶子元素到根元素逐层冒泡。 e.stopPropergation , e.preventDefault 8, Js函数中的this有哪些指向怎样改变函数中this的指向。一般情况下通过谁调用就指向谁。在js全局作用域, this指向window在对象中,this指向这个对象本身构造函数中this是正在创建的对象。在事件函数中,this指向事件目标(注意: 在计时器中this会被还原成window或置空,但箭头函数可以保留this指向) 可用通过call(), apply(), bind()改变this的指向apply和call一样,修改指向的同时调用函数唯一的区别是传参方式不同aplly需要提供一个数组。bind修改this指向时不会调用函数而是生成一个新的函数新的函数和原函数代码一样但是里面的this是绑定过的。 9, 如何阻止form表单提交监听form表单submit事件在事件处理函数内部return false 或者阻止浏览器默认行为 10, 数组有哪些常用处理方法字符串、数字有哪些常用处理方法。数组join,splice,push,slice,indexof,sort,concat,reverse,map,reduce,some,every,filter,foreach。字符串:split,indexof,substr,substring,replace,trim,toUppercase,startsWith,数字:tofixed。Math: floor,ceil,round,random,abs,sqrt,pow,max,sin, 11, 什么是原型和原型链Js中的对象都有一个属性叫做__ptoto__(也是一个对象)表示对象的原型。当访问对象中的属性或方法时首先在对象本身中寻找如果找不到则会在原型中寻找原型中也找不到时会在原型的原型中寻找直到最顶层为止。 js中的类(构造函数)都有一个prototype的属性表示本类的原型类型通过这个类实例化的对象(这个构造函数创建的对象) __proto__都指向本类的prototype从而实现了类方法的共享。一个类的prototype也是一个对象它也有__proto__把它的__proto__指向另一个类的prototype时那么这个类的对象就能访问另一个类中的方法从而实现了方法的继承。A类的prototype.__proto__指向另一个类BB的prototype.__proto__又可以指向C这种结构叫做原型链。 12, 什么是JS严格模式怎么进入严格模式严格模式下有哪些限制严格模式是JS的一种特殊执行模式设立”严格模式”的目的主要有以下几个1消除Javascript语法的一些不合理、不严谨之处减少一些怪异行为;2 消除代码运行的一些不安全之处保证代码运行的安全3提高编译器效率增加运行速度4 为未来新版本的Javascript做好铺垫。在函数中或全局域的开头添加字符串”user strict”进入严格模式。 严格模式主要有以下限制变量必须声明后再使用函数的参数不能有同名属性否则报错不能使用with语句不能对只读属性赋值否则报错不能使用前缀0表示八进制数否则报错不能删除不可删除的属性否则报错不能删除变量delete prop会报错只能删除属性delete global[prop]eval不会在它的外层作用域引入变量eval和arguments不能被重新赋值arguments不会自动反映函数参数的变化不能使用arguments.callee不能使用arguments.caller禁止this指向全局对象不能使用fn.caller和fn.arguments获取函数调用的堆栈增加了保留字比如protected、static和interface 13, Js原生Ajax实现流程(1)创建XMLHttpRequest请求对象(2)open方法指定请求方式、请求路径、同步异步(3)设置响应HTTP请求状态变化的函数(4)send方法发送请求(5)响应成功使用JavaScript和DOM实现局部刷新 14, 闭包是什么有什么作用当一个函数A的作用域被内部的B函数引用时A函数的作用域就会被B函数闭包当A函数执行完毕时A函数的作用域也不会释放。 闭包可以实现对象的私有属性和私有方法。 闭包可以封装变量从简减少对全局作用域的污染。15, 什么是函数防抖和函数节流函数防抖对于频繁触发的事件如果只希望其最后一次或第一次执行绑定函数的执行则需要使用函数防抖。函数节流对于频繁触发的事件希望其按照一定的频率进行绑定函数调用则使用函数节流。函数防抖和节流都可以通过settimeout实现。 16, 栈和队列的区别是什么?js中怎样实现栈结构栈和队列都是线型数据结构栈只有一个入口同时也是出口所以数据遵循先进后出后进先出的规则。队列一侧是入口另一侧是出口所以数据先进先出后进后出。 Js中的数组可以实现栈和队列。Push和pop方法是一对栈操作push和shift是一对队列操作。 17, 什么是深拷贝和浅拷贝浅拷贝就是只复制数组对象本身而不复制其内容引用类型的数据内容最终两个数组中指向同一套数据。深拷贝则是既赋值本身也赋值内容。Js中对于引用类型的数据默认进行的都是浅拷贝。 18, ES6中新增加了哪些特性箭头函数字符串模板let块级作用域声明方式const常量class声明类结构赋值PromiseES6模块化。 19, 箭头函数和普通函数的区别- 箭头函数内部this跟函数所在上下文this保持一致- 没有arguments参数集合可以用rest替代- 不能使用call、bind、apply来改变this的指向 20, 使用axios发起ajax请求无法携带cookie,什么原因? 如何解决?axios默认跨域请求不使用凭证,当服务器在响应头中设置了cookie后, axios会默认隐藏这部分信息, 设置axios.defaults.withCredentials true即可 21, 什么是跨域请求怎样实现跨域请求。一个页面发送到非本身来源的请求叫做跨域请求浏览器只禁止ajax跨域请求。三种跨域请求的方式1cors服务器在响应头中添加access control allow origin字段浏览器在收到请求之后就会认为本次请求时允许跨域的。2JSONP,浏览器使用创建script标签的形式发送请求将一个函数名作为请求参数发给服务器服务器将需要返回的数据封装在一段js代码中把前端发来的函数名进行调用把要发送的数据作为参数然后把这段代码返回给前端前端立刻执行这个函数。3代理服务器将请求先发送给代理服务器代理服务器装发给目标服务器。 22, 怎么列出一个文件夹下的所有文件可以使用nodeJS中的内置fs模块,调用fs.readDir读取文件夹中的所有文件和子文件夹, 传入递归函数,可读取子文件夹中的文件 23, Express中常用的中间件都有哪些static , bodyparser , session , multer , 24, HTTP和HTTPS的区别是什么HTTP协议通常承载于TCP协议之上在HTTP和TCP之间添加一个安全协议层SSL或TSL这个时候就成了我们常说的HTTPS。默认HTTP的端口号为80HTTPS的端口号为443。为什么HTTPS安全因为网络请求需要中间有很多的服务器路由器的转发。中间的节点都可能篡改信息而如果使用HTTPS密钥在你和终点站才有。https之所以比http安全是因为他利用ssl/tls协议传输。它包含证书卸载流量转发负载均衡页面适配浏览器适配refer传递等。保障了传输过程的安全性 25, Ajax中get和post两种请求方式的区别1运行速度get请求简单运行速度也更快存在缓存2缓存get存在缓存优提升速度缺不能及时获取最新数据post没有缓存3数据储量get有数据量的限制post则没有限制4数据安全发送包含未知字符的用户输入时post比get 更稳定也更可靠 5传参方式get参数拼接在url后post放在send里面并且需要设置请求头xmr.setRequestHeader(content-type,application/x-www-form-urlencoded)26, 什么是同源策略同源策略是浏览器执行ajax请求时的一种安全策略, 它规定了浏览器只能请求端口、域名、协议全部相同的数据源, 而非同源的请求会被浏览器拦截 27, cookie和localstorage有什么区别都可以实现在用户的浏览器中存储一些数据。不同cookie是由服务端主导的主要用于存储用户身份验证信息。localstorage是由前端js控制的主要用于缓存业务逻辑数据。Cookie会随着请求头和响应头往返于服务器和浏览器之间。 28, localStorage、sessionStorage和cookie的区别- 本地存储容量更大有5MB左右cookie只有4KB- 本地存储没有过期时间localStorage持久保存除非手动清除sessionStorage窗口关闭自动清除- cookie会在客户端与服务器端之间往返服务器端可以操作cookie本地存储只存储于本地 29, cookie 和session 的区别? 1、cookie数据存放在客户的浏览器上session数据放在服务器上。Session基于cookie。 2、cookie不是很安全别人可以分析存放在本地的COOKIE并进行COOKIE欺骗3、session会在一定时间内保存在服务器上。当访问增多会比较占用你服务器的性能 4、单个cookie保存的数据不能超过4K很多浏览器都限制一个站点最多保存20个cookie。 30, LocalStorage能存储多少数据量如果数量过大会出现什么问题怎么办一个域名下可存储5M的数据量, 存储的数据过大会导致部分数据丢失, 破坏数据结构可优化数据结构,减小数据量也可以使用window.postMessage实现跨源存储和读取,把数据存入其它域名下 31, 谈一下对token验证机制的理解发起权限(登录)请求后端验证通过生成token响应给客户端客户端发送其他敏感请求携带token后端验证获取token识别用户身份 32, localstorage能否实现跨域访问正常情况下localstorage不能跨域访问但是可以通过iframe实现间接的跨域访问域名A的网站在页面中通过iframe打开域名B的页面然后通过postMessage给B网页发送消息域名B页面读取localstorage数据之后再通过postMessage将数据传递给A页面从而实现跨域访问localStorage。也就是说B页面必须配合A页面才能跨域访问。 33, webSocket是什么适用于哪些网站webSocket是一种双工通信技术可以实现服务器主动向客户端发送数据。一般适用于需要实时通信的网站, 比如人工客服服务和在线页游等 34, webpack工具的功能是什么Webpack是为前端开发设计的自动化打包工具能够对项目中的js、css、图片等资源进行打包其中js可以直接打包其他类型资源需要各自对应的loader支持相比于传统的grunt、gulp等构建工具webpack在打包js代码时能够识别多种模块化语法进行模块化打包。Webpack还可以配合脚手架工具构建项目的框架 35, 什么是WebWorker在哪些场景下需要使用WebWorkerWebWorker是h5中新增的WebAPI用于启动一个独立的线程主线程和分线程只能通过相互发送消息进行通信。当前端页面中有耗时很长的代码需要执行时可以放在worker中执行否则会卡塞主线程影响用户体验。 36, 你是否会使用混合(hybrid)APP开发技术进行手机APP开发开发手机app我一般使用uniapp去实现, 它不仅可以开发常规安卓和ios手机app还可以同时兼容发布各种小程序版本,开发效率比较高 37, ES6的async函数怎么使用 Async函数没有返回值或者只能返回Promise对象。在async函数的函数体中可以使用awaitawait 后面只能调用返回Promise的函数且通过await调用之后返回值不再是promise而是promise.then时所传递的数据如果失败则会抛异常。从而实现以同步代码的格式调用异步函数。 38, 在浏览器地址栏输入一个网址从敲下回车键到页面完全加载完毕中间都发生了什么 1如果地址栏中输入的是一个域名浏览器会先使用自己的DNS缓存进行域名解析转为IP地址如果缓存中不存在则会请求使用上层DNS操作系统的DNS操作系统会先查询本地HOST文件如果HOST文件中不存在则会使用网络设置的DNS进行域名解析。最终得到域名对应的IP地址。2获得IP地址后浏览器按照IP地址进行连接(tcp连接)连接成功之后按照http协议的格式请求行请求头请求头发送http请求服务器会返回响应报文响应行响应头响应体浏览器收到响应报文后会根据响应头中的Content-Type字段来决定如何进行下一步处理对于普通的网页Content-Type值是text/html浏览器就会在页面中打开本次请求响应体中的数据。3在打开页面时浏览器首先对html文本进行解析创建DOM树然后将每个节点渲染到页面上其中如果出现了附带资源的标签例如img,script等浏览器会再次按照这些资源的src发送请求当请求完成之后将请求内容插入到页面中其中script标签资源是同步加载的其他资源是异步加载的。 39, 如何优化网页打开的速度 1尽量减少页面资源的请求次数可以通过base64图片、合并图片、合并jscss文件实现。2对页面代码进行压缩主要是js代码压缩3合理地使用懒加载。4对于不需要支持多国语言的中文网页可以使用放弃使用UTF-8使用GBK编码。(以上是从前端角度进行优化下面几条是从服务端角度优化)5网页中的静态资源使用CDN服务。6使用缓存服务端使用redis进行接口缓存同时在响应头中通过lastmodified,Etag等字段控制浏览器缓存。7使用gzip进行数据压缩。8使用多域名部分浏览器对于同一个域名的并发请求量设置有上限所以可以把页面资源分布在不同域名中例如静态资源独自使用一个域名。 40, 什么是MVC和MVVMMVC:model-view-controllerMVVM:model-view-view-model MVC模式通过controller控制器协调model和view的交互View 传送指令到 ControllerController 完成业务逻辑后要求 Model 改变状态Model 将新的数据发送到 View用户得到反馈所有通信都是单向的。 MVVM模式使用数据双向绑定model和view直接进行交互。 41, 什么是XSS攻击怎么防范Xss(cross-site scripting 跨站脚本攻击) 指的是攻击者往Web页面里插入恶意 html标签或者javascript代码。比如攻击者在论坛中放一个看似安全的链接骗取用户点击后窃取cookie中的用户私密信息或者攻击者在论坛中加一个恶意表单当用户提交表单的时候却把信息传送到攻击者的服务器中而不是用户原本以为的信任站点。防范首先代码里对用户输入的地方和变量都需要仔细检查长度和对”,””,”;”,”’”等字符做过滤其次任何内容写到页面之前都必须加以encode避免不小心把html tag 弄出来。这一个层面做好至少可以堵住超过一半的XSS 攻击。避免直接在cookie 中泄露用户隐私例如email、密码等等。其次通过使cookie 和系统ip 绑定来降低cookie 泄露后的危险。这样攻击者得到的cookie 没有实际价值不可能拿来重放。如果网站不需要再浏览器端对cookie 进行操作可以在Set-Cookie 末尾加上HttpOnly 来防止javascript 代码直接获取cookie 。 42, 什么是CSRF攻击怎么防范 Cross—Site Request Forgery跨域请求伪造。CSRF攻击攻击原理及过程如下1. 用户C打开浏览器访问受信任网站A输入用户名和密码请求登录网站A2.在用户信息通过验证后网站A产生Cookie信息并返回给浏览器此时用户登录网站A成功可以正常发送请求到网站A3. 用户未退出网站A之前在同一浏览器中打开一个TAB页访问网站B4. 网站B接收到用户请求后返回一些攻击性代码并发出一个请求要求访问第三方站点A5. 浏览器在接收到这些攻击性代码后根据网站B的请求在用户不知情的情况下携带Cookie信息向网站A发出请求。网站A并不知道该请求其实是由B发起的所以会根据用户C的Cookie信息以C的权限处理该请求导致来自网站B的恶意代码被执行。防范在服务端敏感接口中添加referer判断。