2023前端面试

类数组与数组主要区别在于类型和原型,转换方法包括Array.from()、扩展运算符和slice.call()。服务器端渲染(SSR)提高首屏加载速度和SEO,涉及请求处理、服务器渲染、数据注入和客户端接管等步骤。HTTPS相比HTTP更安全,需证书且端口不同。Vue的事件修饰符如prevent、stop和once等提供额外控制。SEO解决方案包括预渲染和Nuxt.js服务端渲染,各有适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1类数组和数组的区别,dom 的类数组如何转换成数组

类数组(Array-like)和数组(Array)都是用于存储多个值的数据结构,但它们之间存在一些关键区别:

  1. 类型:数组是JavaScript的内置对象类型,继承自Array.prototype,具有一系列数组方法(如push()pop()map()等)。类数组是普通的对象,其属性名为索引(如012等),具有一个length属性,但不具备数组的方法。
  2. 原型:数组的原型为Array.prototype,因此具有数组的所有方法。类数组的原型通常为Object.prototype,并不包含数组的方法。
  3. 要将DOM的类数组(例如,通过document.getElementsByClassName()document.querySelectorAll()获取的元素集合)转换为数组,可以使用以下方法之一

(1)使用Array.from()方法:

let nodeList = document.querySelectorAll('div');
let array = Array.from(nodeList);

(2)使用扩展运算符(Spread Operator):

let nodeList = document.querySelectorAll('div');
let array = [...nodeList];

(3)使用Array.prototype.slice.call()

let nodeList = document.querySelectorAll('div');
let array = Array.prototype.slice.call(nodeList);
SSR的实现原理

服务器端渲染(Server Side Rendering,简称 SSR)是一种 web 应用的渲染方式,其实现原理是在服务器端将页面内容渲染为 HTML 字符串,然后将这些字符串发送到客户端,客户端接收到 HTML 后直接显示,无需等待 JavaScript 的解析、执行和渲染。

SSR 的核心实现原理可以概括为以下几个步骤:

  1. 请求处理:客户端发起请求时,请求首先到达服务器。
  2. 服务器渲染:服务器接收到请求后,根据路由和数据,将对应的页面内容渲染为 HTML 字符串。这一步通常涉及到模板引擎或服务器端 JavaScript 框架的使用,例如 React 的 ReactDOMServer.renderToString() 和 Vue 的 vue-server-renderer
  3. 数据注入:在渲染过程中,服务器还需要获取所需的数据,将其注入到 HTML 中。这可以通过内联脚本、JSON 格式或其他方式实现。数据注入的目的是在客户端 JavaScript 代码运行时能够获取到服务器端已经准备好的数据,避免重复请求。
  4. 生成完整 HTML:将渲染好的 HTML 字符串插入到 HTML 模板中,形成一个完整的 HTML 页面。这个页面包含了已经渲染好的内容以及必要的 JavaScript、CSS 等资源引用。
  5. 发送响应:服务器将完整的 HTML 页面作为响应发送给客户端。客户端接收到响应后,直接将 HTML 页面展示给用户。
  6. 客户端接管:在客户端,浏览器会解析和执行 JavaScript 代码,接管页面的交互和操作。这一步通常被称为 "hydration" 或 "激活",因为客户端 JavaScript 代码需要 "激活" 服务器端渲染的静态 HTML,使其具有动态功能。

通过 SSR,用户可以更快地看到页面的内容,因为无需等待客户端的 JavaScript 代码下载、解析、执行和渲染。此外,由于搜索引擎爬虫能够更好地解析服务器端渲染的 HTML,因此 SSR 对 SEO 也有一定的优势。然而,SSR 也会增加服务器的负担,因为服务器需要负责渲染页面。在实际应用中,可以根据项目需求和性能要求,选择合适的渲染方式。

HTTP与HTTPS有什么区别?

区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

VUE的6种事件修饰符

1.prevent:阻止默认事件(常用)

2.stop:阻止事件冒泡(常用)

3:once:事件只触发一次(常用)

4.capture:使用事件的捕获模式

5、self:只有event.target是当前操作的元素才触发事件

6、passive:事件的默认行为立即执行,无需等待事件回避执行完毕

vue的SEO

方案一:预渲染 prerender-spa-plugin

存在问题:①动态路由解决不了②无法动态改变title,描述,关键字

适用场景:公司官网,只适合某几个页面需要做SEO

方案二:服务端渲染 : Nuxt.js

1.纯静态文件,访问速度更快

2.对比SSR,不涉及到服务器负载方面的问题

3.静态网页不易遭受黑客攻击,安全性更高

存在问题:

1.如果动态路由参数多的话不适用

2.Nuxt.js 执行generate静态化打包时,动态路由会被忽略

3.打开网站都效率慢,压力全在服务器,和前后端不分离差不多

适用场景:整个网站都做SEO

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值