杂记
大约 3 分钟
<!DOCTYPE>
<!DOCTYPE>声明不是HTML标签,它是指示web浏览器关于页面使用哪个HTML版本进行编写的指令。<!DOCTYPE>没有结束标签。<!DOCTYPE>声明对大小写不敏感。
window location
location.host返回的是web主机域名 + 端口号。location.hostname返回的仅是web主机域名location.pathname返回当前页面的路径和文件名location.port返回web主机的端口,但注意的是,如果端口默认为80或443,则默认返回的为空。location.protocol返回所使用高德web协议,如http:或https:
<< 和 >> 和 >>> 运算符
<<运算符执行左移位运算。>>运算符执行右移位运算- 参考链接
 
lastIndexOf
lastIndexOf从尾部开始检索,从0开始
js创建节点的方式
createElement——创建节点replaceChild——替换节点cloneNode——克隆节点
HTML5新增特性
- 语义化标签
 - 增强型表单包括属性以及元素
 - 新增视频
<video>和音频<audio>标签 canvas图形- 地理定位
 - 拖放API
 - SVG绘图
 - Web Worker
 - Web Storage
 - Web Socket
 
js中比较成熟的模块加载方案
- CommonJS——简称cjs,主要是 Node.js 使用,通过 require 同步加载模块,exports 导出内容。在 CommonJS 规范下,每一个 JS 文件都是独立的模块,每个模块都有独立的作用域,模块里的本地变量都是私有的。
 - AMD——即异步模块定义。AMD 定义了一套 JavaScript 模块依赖异步加载标准,用来解决浏览器端模块加载的问题。AMD 主要是浏览器端使用,通过 define 定义模块和依赖,require 异步加载模块,推崇依赖前置。
 - CMD——即通用模块定义。CMD 定义了一套 JavaScript 模块依赖异步加载标准,用来解决浏览器端模块加载的问题。CMD 主要是浏览器端使用,通过 define 定义模块和依赖,require 异步加载模块,推崇依赖就近。
 - UMD——即通用模块定义。UMD 主要为了解决 CommonJS 和 AMD 规范下的代码不通用的问题,是 AMD 和 CommonJS 的整合,同时还支持将模块挂载到全局,是跨平台的解决方案。
 - SystemJS——可以通过各种插件,实现对 AMD、UMD 的加载,并且借助运行时编译器,可以实现对 ES Modules 和 CJS 模块的直接加载。
 - ESModule——简称es,即 ESModule、ECMAScript Module。官方模块化规范,现代浏览器原生支持,通过 import 加载模块,export 导出内容。
 
redux遵循的规则
- 单一事实来源,整个应用的state被存储在一棵object tree中,并且这个object tree只存在于唯一一个store中;
 - 状态是只读的,唯一改变state的方法就是触发action,action是一个用于描述发生事件的普通对象;
 - 使用纯函数进行修改数据
 
符合数据结构-栈的特性
- 线性存储
 - 后入先出
 
属于宏任务的有
setTimeoutrequestAnimationFrame——请求动画帧setInterval
属于微任务的有
Promise
正则表达式
移动端动画
移动端要想动画性能流畅,可以使用3D硬件加速,因此最好给页面中的元素添加translate3d或者translateZ(0)来触发3D硬件加速。
 解决浏览器渲染问题,首要目标就是要避免重绘和重排
关于HTTP2描述
- 所有http请求都是建立在一个TCP请求上,实现多路复用。
 - 可以给请求添加优先级
 - 服务器主动推送server push
 - HTTP2的头部会减小,从而减少流量传输
 
动态加载js资源
var script = document.createElement("script");
var head = document.getElementsByTagName("head")[0];
script.type = "text/javascript";
script.src = "//i.alicdn.com/resource.js";
//绑定资源加载成功事件
script.onreadystatechange = function(){
    //判断资源加载状态是否位加载成功或加载完成
    if(/^(loaded|complete)$/.test(script.readyState)){
        script.onreadystatechange = null;
        ...
    }
    //绑定资源加载失败事件
    script.onerror = function(){
        ...
    }
    head.insertBefore(script,head.firstChild)
}
``