一、请描述一下 cookies、sessionStorage和localstorage区别?

相同点:都存储在客户端 不同点:

存储大小

cookie数据大小不能超过4k。 sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。

有效时间

localStorage 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据; sessionStorage 数据在当前浏览器窗口关闭后自动删除。 cookie 设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭

数据与服务器之间的交互方式

cookie的数据会自动的传递到服务器,服务器端也可以写cookie到客户端 sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。

415 - 图1 | | cookie | sessionStorage | localStorage | | —- | —- | —- | —- | | 区别 |
- 无状态的http协议记录;存放数据大小为4k左右,有个数限制(各浏览器不同)
- 每次请求都在请求头携带cookie;语法:Set-Cookie: <cookie名>=<cookie值>
- 会话期 Cookie会在浏览器关闭之后被自动删除;持久性 Cookie 的生命周期取决于过期时间(Expires)或有效期(Max-Age)指定的一段时间
|
- 存储在sessionStorage里面的数据在页面会话结束时会被清除
- 页面会话在浏览器打开期间一直保持,并且重新加载或恢复页面仍会保持原来的页面会话。
- 在新标签或窗口打开一个页面时会复制顶级浏览会话的上下文作为新会话的上下文这点和 session cookies 的运行方式不同。
- 打开多个相同的URL的Tabs页面,会创建各自的sessionStorage。
- 关闭对应浏览器窗口(Window)/ tab,会清除对应的sessionStorage。
- 以键值对的方式设置,使用键名获取
|
- 存储在localStorage 的数据可以长期保留;
- localStorage 中的键值对总是以字符串的形式存储。
|

二、介绍一下 node 常用模块,并且详细介绍下 Stream?

常用模块:path、fs、http…
http:通过http来构建本地服务器,例如:

  1. const http = require("http");
  2. const server = http.createServer((req,res)=>{
  3. res.write("hello world");
  4. res.end();
  5. })
  6. server.listen(8888);

同样也可以通过http实现服务端的网络请求。
fs:fs模块实现服务端的文件操作,实现服务端文件的增删改查操作。
还有path模块提供各种处理路径的api。body-parser模块来处理接收post请求到服务端的数据。等等模块。
stream: 流是一种抽象数据结构,可以用它来读取和写入数据,通过流来读取和写入数据可以防止内存溢出,采取流方式处理数据会把数据分成64k小块数据,异步依次来进行传递,更加节约性能。
问题:node里为什么有些模块需要安装,有些不需要安装?

nodejs在安装好之后会有很多内置模块,如:path、http、util、fs模块等等。还有一些需要第三方模块支持。可以通过包管理器来安装,如:cookie、session、cheerio等第三方模块。可以在npm官网查找相关模块。https://www.npmjs.com/

  • cookie:是服务器发送到用户浏览器保存在本地缓存一小块数据,他会在浏览器下次向统一服务器再发起请求时被携带并发送到服务器上,用于告知服务器是来自同一个浏览器,通常用于以下场景:

    • 回话状态管理(如用户登录状态、购物车、游戏分数或者其他需要记录的信息)
    • 个性化设置(如用户自定义设置、主题)
    • 浏览器行为跟踪(如跟踪分析用户行为等)

      服务器使用Set-cookie 响应头部向客户端发送cookie信息,比如:Set-Cookie: token='' 临时性cookie会在客户端被关闭之后自动销毁(但有部分浏览器提供了恢复功能,这种情况下即使关闭了浏览器,cookie也会被保存下来) 持久性cookie的声明周期取决于过期时间(expires)或有效期(Max-Age)指定的一段时间

  • sessionStorage属性允许访问一个对应当前源的sessionStorate对象

区别: