1.有没有写过 Koa 中间件,说下中 间件原理,介绍下自己写过的中间件?
没有写过
2.如何判断当前脚本运行在浏览器还是node环境中?
判断global是否为window对象,如果是则是浏览器环境,反之则是node环境
3.请描述一下 cookies sessionStorage和localstorage区别?
cookie: 是指网站为了辨别用户身份而存储在用户本地上的数据;
sessionStorage/localstorage: html5提出的一种 web 存储方式。
区别:
cookie:
cookie 会被附加在每个http请求中,所以无形中增加了流量;
由于 http 请求中的 cookie 是明文传递的,所以安全性成问题;
cookie 的大小限制在 4KB 左右,对于复杂的存储需求来说不够用的;
cookie 可设置时效性,一般有服务器生成。如果在浏览器生成,默认是关闭浏览器后失效。cookie 可指定域,但不可跨域调用;
webStorage:
webStorage 不会再请求中携带,仅在本地存储;
存储大小可以达到5M甚至更大;
数据有效时间,sessionStorage 是会话级别的存储,浏览器关闭后就不能保持了。 localStorage 会一直存在,即使关闭浏览器或窗口也会一直有效,除非用户手动删除;
sessionStorage 可以在不同的浏览器窗口中共享;localStorage 和 cookie 在所有同源窗口是共享的;