script标签里的async和defer有什么区别?
没有async和defer时:
- 浏览器立即加载并执行指定的脚本
有async:
- 加载和渲染后面元素的过程将和script的加载和执行并行进行(异)
有defer:
- 加载和渲染后面元素的过程将和script的加载并行进行,要等所有元素解析完成之后才会执行(异)
创造的时间节点,defer比async早,defer保证脚本顺序,async不会,谁先下载好就加载谁
setTimeout最小执行时间
setTimeout
:4ms
setInterval
:10ms,小于10ms就会被调整到10ms
为什么是这两个数字? ——> htlm5就是这么规定的
DOM树和渲染树区别
DOM树和HTML标签一一对应,包括head和隐藏元素
渲染树是不包含head和隐藏元素
git解决冲突
比如:
- 两个分支修改同一个文件
- 两个分支修改同一个文件的名字
解决:
- 当前分支上直接修改代码 add commit
- 本地当前分支上修改冲突 add commit push
redux核心原理
核心组成三部分:
- Store
- Action
- Reducer:一个函数,接收两个参数,action和当前state
整个工作流程,数据流严格单向,只能通过dispatch action的方式触发数据状态的修改
Action进入对于Reducer进行处理最终得到新的状态State,再进一步触发Vaiew的数据更新
HashRouter和BrowserRouter区别
HashRouter:
- 基于hash模式,跳转原理是使用了location.hash、location.replace在域名后,先拼接 /#,再拼接路径,也就是利用锚点,实现路由的跳转。如:http://www.dzm.com/#/xx
BrowserRouter:
- 基于history模式,原理是了 HTML5 为浏览器全局的 history 对象新增了两个 API,包括 history.pushState、history.replaceState