框架类:
vue 原理
webpack
plugin
webpack整体是一个插件架构,所有的功能都以插件的方式集成在构建流程中,通过发布订阅事件来触发各个插件执行。webpack核心使用Tapable 来实现插件(plugins)的binding(绑定)和applying(应用)。
Compiler 模块是 webpack 的支柱引擎,它通过 CLI 或 Node API 传递的所有选项,创建出一个 compilation 实例。它扩展(extend)自 Tapable 类,以便注册和调用插件。大多数面向用户的插件首先会在 Compiler 上注册。
配置项: entry、output、module( loader )、plugins、devServer、resolve、devtool、optimization
css:
盒模型、js 获取对应宽高
// 通过DOM节点的 style 样式获取 // 只能获取行内样式,不能获取内嵌的样式和外链的样式 element.style.width/height; // window.getComputedStyle(element).width/height; // element.getBoundingClientRect().width/height;
包裹性
BFC
垂直水平居中
安卓、ios 行高问题
布局 - 圣杯布局
es6:
promise
class super
js:
原始类型 => 装箱拆箱 => 对象构造 => new 操作符 => 箭头函数、普通函数区别 => 闭包
js线程 => 事件循环 => 异步执行顺序
浏览器绘制页面 => 重绘重排
闭包 => 垃圾回收
面向对象
深拷贝
require 、import 区别
- require是‘运行时加载‘,只有在代码真正运行的时候才会去加载对应需要的东西,所以不能做到编译时就把想加载的模块加载进来,即不能做到编译时静态化
- import是编译时调用,所以必须放在文件开头
JS编译解析的流程
1. 语法分析,生成抽象语法树(AST)和执行上下文:
生成 AST 需要经过两个阶段:
第一阶段是分词(tokenize),又称为词法分析
第二阶段是解析(parse),又称为语法分析2. 预编译,解释器 lgnition 生成字节码
3. 解释执行,第一次执行,解释器 lgnition 通常会一行行执行代码,解释过程中,若发现一段代码被重复执行多次,即为热点代码,则 编译器 TurboFan 会把该段热点的字节码编译为机器码,再次执行这段被优化的代码时,只需要执行编译后的机器码就可以了,这样就大大提升了代码的执行效率。这就是 即时编译(JIT)
设计模式
Class => prototype
node.js:
koa、中间件
http:
安全:xss、跨域