2020.06.09 yiqijiaoyu
Vue加载过程,有哪些生命周期?
Vue-router怎么实现的?
单页面路由的实现: 即前端控制路由,js 根据 url 地址的变化,切换页面要渲染的组件,页面跳转不需要请求html文件
实现单页面路由跳转主要有两种方式:
- hash 模式:利用URL中的hash(“#”),是基于 location.hash 来实现的,当hash改变时会触发 hashchange 事件
- history 模式:依赖 HTML5 History API 和服务器配置;当路由发生变化是会触发 onpoopstate 事件
Vuex是干什么的,有哪些部分组成?
webpack配置过哪些功能?HMR怎么实现的?如何启动服务?
配置环境变量,sourcemap,proxy,移动端页面自适应,eslint,cdn,treeshaking, 热更新
loader是干什么的,怎么实现? 自己写过吗?要注意哪些方面? 和plugin的区别?
webpack默认只支持js和json文件类型,通过loaders转换可以使webpack支持其他文件类型;loader本身是一个函数,接受源文件作为参数,返回转换的结果
plugin是用来增强webpack的功能,通常用于打包文件的优化,资源管理和环境变量注入
有了token为啥还要sessionID,为啥要拿token换sessionID,为啥不直接用sessionID,cookies的安全问题怎么避免?
HTTP 是无状态的协议(每次客户端和服务端会话完成时,服务端不会保存任何会话信息):每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。而这个状态需要通过 cookie 或者 session 去实现。
session 是基于 cookie 实现的,session 存储在服务器端,sessionId 会被存储到客户端的cookie 中,因此是不可跨域的,Session 是一种记录服务器和客户端会话状态的机制,使服务端有状态化,可以记录会话信息,只提供一种简单的认证,即只要有此 SessionID ,即认为有此 User 的全部权利。是需要严格保密的,这个数据应该只保存在站方,不应该共享给其它网站或者第三方 App。
而Token偏向于做身份认证,简单 token 的组成: uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token 的前几位以哈希算法压缩成的一定长度的十六进制字符串)基于 token 的用户认证是一种服务端无状态的认证方式,服务端不用存放 token 数据。用解析 token 的计算时间换取 session 的存储空间,从而减轻服务器的压力,减少频繁的查询数据库如果你的用户数据可能需要和第三方共享,或者允许第三方调用 API 接口,用 Token
Session 和 Token 并不矛盾,作为身份认证 Token 安全性比 Session 好,因为每一个请求都有签名还能防止监听以及重放攻击,而 Session 就必须依赖链路层来保障通讯安全了。如果你需要实现有状态的会话,仍然可以增加 Session 来在服务器端保存一些状态。