Giter Site home page Giter Site logo

22.散装知识点 about fe-interview HOT 7 OPEN

JayFate avatar JayFate commented on September 25, 2024
22.散装知识点

from fe-interview.

Comments (7)

JayFate avatar JayFate commented on September 25, 2024

3. 问:数组能够调用的函数有那些?

  • push
  • pop
  • splice
  • slice
  • shift
  • unshift
  • sort
  • find
  • findIndex
  • indexOf
  • includes
  • map/filter/reduce 等函数式编程方法
  • 还有一些原型链上的方法:toString/valudOf

from fe-interview.

JayFate avatar JayFate commented on September 25, 2024

4. 问:说下对 JS 的了解吧

是基于原型的动态语言,主要独特特性有 this、原型和原型链。

JS 严格意义上来说分为:语言标准部分(ECMAScript)+ 宿主环境部分

语言标准部分

2015 年发布 ES6,引入诸多新特性使得能够编写大型项目变成可能,标准自 2015 之后以年号代号,每年一更

宿主环境部分

  • 在浏览器宿主环境包括 DOM + BOM 等
  • 在 Node,宿主环境包括一些文件、数据库、网络、与操作系统的交互等

from fe-interview.

JayFate avatar JayFate commented on September 25, 2024

5.抽象语法树(AST)

简单来说 ast 抽象语法树就是一个 JavaScript 对象,用来描述 js 源码。将 js 源码解析为 ast 抽象语法树包含两步:词法分析 和 语法分析。词法分析阶段把字符串形式的代码转换为 令牌(tokens)流。语法分析就是将词法分析生成的令牌转换成AST树。

AST的用途大致分为3类

  1. IDE使用,如代码风格检测(eslint等)、代码的格式化,代码高亮,代码错误等等
  2. 代码的混淆压缩
  3. 转换代码的工具。如webpack,rollup,各种代码规范之间的转换,ts,jsx等转换为原生js

from fe-interview.

JayFate avatar JayFate commented on September 25, 2024

6. rem 与 移动端适配

https://juejin.cn/post/6844903631993454600

from fe-interview.

JayFate avatar JayFate commented on September 25, 2024

前端鉴权

目前我们常用的鉴权有四种:

  1. HTTP Basic Authentication (HTTP基本认证,已经基本不用了)
  2. session-cookie
  3. Token 验证(包括JWT,SSO)
  4. OAuth(开放授权)

Token 概念

token是用户身份的验证方式,我们通常叫它:令牌。当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。

最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库。

我们可以把Token想象成一个安全的护照。你在一个安全的前台验证你的身份(通过你的用户名和密码),如果你成功验证了自己,你就可以取得这个。当你走进大楼的时候(试图从调用API获取资源),你会被要求验证你的护照,而不是在前台重新验证。

验证流程

大概的流程是这样的:

  1. 客户端使用用户名跟密码请求登录
  2. 服务端收到请求,去验证用户名与密码
  3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
  4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
  5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
  6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

总的来说就是客户端在首次登陆以后,服务端再次接收http请求的时候,就只认token了,请求只要每次把token带上就行了,服务器端会拦截所有的请求,然后校验token的合法性,合法就放行,不合法就返回401(鉴权失败)。

Token优点与缺点

优点:

  • Token 完全由应用管理,所以它可以避开同源策略. (Cookie是不允许垮域访问的,token不存在)
  • Token 可以避免 CSRF 攻击(也是因为不需要cookie了)
  • Token 可以是无状态的,可以在多个服务间共享
  • Token 支持手机端访问(Cookie不支持手机端访问)

服务器只需要对浏览器传来的token值进行解密,解密完成后进行用户数据的查询,如果查询成功,则通过认证.所以,即使有了多台服务器,服务器也只是做了token的解密和用户数据的查询,它不需要在服务端去保留用户的认证信息或者会话信息,这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利,解决了session扩展性的弊端。

缺点:

  • 占带宽: 正常情况下token要比 session_id更大,需要消耗更多流量,挤占更多带宽.(不过几乎可以忽略)
  • 性能问题: 相比于session-cookie来说,token需要服务端花费更多的时间和性能来对token进行解密验证.其实Token相比于session-cookie来说就是一个"时间换空间"的方案.

from fe-interview.

JayFate avatar JayFate commented on September 25, 2024
<div id="ul"></div>
<script>
  var newFrag = document.createDocumentFragment();
  var oUl = document.getElementById('ul');
  for (var i = 0; i < 100; i++) {
    var oLi = document.createElement('li');
    newFrag.appendChild(oLi);
  }
  oUl.appendChild(newFrag);
</script>

使用createDocumentFragment()暂存,然后一次性添加字节点。

from fe-interview.

JayFate avatar JayFate commented on September 25, 2024

NodeJs反向代理-前端解决跨域问题的优雅方式

https://juejin.cn/post/7065973142891528205

from fe-interview.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.