box-sizing 通过box-sizing这个属性来设置元素的盒模型 box-sizing:content-box 为标准盒模型(默认) box-sizing:b
CSRF CSRF即Cross-site request forgery(跨站请求伪造)。CSRF攻击主要是利用自动发送的Cookie,借助Cookie来模拟用户的
总结 特性 cookie localStorage sessionStorage indexDB 数据生命周期 一般由服务器生成,可以设置过期时间 除非被清理,否则一直存在 页面关闭就清理 除非被清理,否则一直存在 数据存储大小 4K 5M
Bhwa233 published on included in 面试 2022年前端工程师面试题.pdf https://github.com/wxlvip/Interviewer TypeScript TS「面试题及答案」不断更新 2019年17道高频React面试题及详解 (建议收藏)原生JS灵魂之问, 请
web worker JS是单线程没有多线程,当JS在页面中运行长耗时同步任务的时候就会导致页面假死。为了解决这个问题,HTML5提供了新的APIweb wor
详解看面试官:前端跨页面通信,你知道哪些方法?,这里只做总结。 在浏览器中,每个Tab页可以粗略理解为一个“独立”的运行环境,即使是全局对象也
HTTP 协议存在一个问题是只能单向通信,即通信只能由客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。但是
安装两个模块 npm i -D typescript ts-loader 添加ts的配置文件tsconfig.json,配置参考。 webpack设置文件后缀补全。 在ts文件中引入其他ts文件会
类型变量,用于传递类型。 写法 function identity<Type>(arg: Type): Type { return arg; } // 箭头函数的泛型必须有extends,否则语法无法识别。 const identity =<T extends {}>(arg: T): T => { return arg; }; 泛型约束 interface Length{ length:number }
Bhwa233 published on included in 笔记 dependencies 运行时依赖,生产环境需要的依赖,会被打包的依赖。 devDependencies 开发时依赖,开发环境需要安装的依赖,不会被打包。 peerDependencies 宿主依赖,指定了当前模块在使用前需要安
Bhwa233 published on included in 笔记 基本概念 monorepo是一种项目管理方式, 就是将多个项目放在一个仓库里。相反的是MultiRepo模式,即每个项目对应一个单独的仓库。 MultiRepo 缺
Bhwa233 published on included in 笔记 安装全局依赖 pnpm i lodash -w #安装lodash到根目录 # -w(--workspace-root) 要安装到根目录 # -D 安装公共开发环境依赖 安装局部依赖 pnpm add axios --filter @monorepo/http # 安装axios依赖到@mon
概念 函数中的函数,闭包是指引用了外部函数作用域变量的函数, 可以粗暴的理解为:相当于将外部变量保留下来,就是一个独立的作用域,外部不可见,作为
同源策略 所谓同源,指协议、域名、端口号相同。 浏览器处于安全考虑,只允许本域名下的接口交互,不同域名下的请求,就会出现跨域。 为什么限制跨域访问
Bhwa233 published on included in 笔记 总结 一个解析器分为四步: 词法分析,将 SQL 字符串拆分成包含关键词识别的字符段(Tokens)。 语法分析,利用自顶向下或自底向上的算法,将 Tokens 解析为
主流程 输入 URL DNS 解析 URL 建立 TCP 连接(连接复用) 发送 HTTP 请求 服务器收到请求,发送 HTTP 响应 浏览器解析渲染页面 关闭 TCP 连接 详细流程 从输入url到开启网络请求
一个浏览器是多进程,1 个浏览器(Browser)主进程、1 个 GPU 进程、1 个网络(NetWork Service)进程、多个渲染进程和多个插件进程
概念 采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目
loader webpack自身只支持js和json这两种格式的文件,对于其他文件需要通过loader将其转换为commonJS规范的文件后,webpa
概念 判断当前传入函数的参数个数 (args.length) 是否大于等于原函数所需参数个数 (fn.length) ,如果是,则执行当前函数;如果是小于,则返回一个函数。 例如:实现add(1)