1、css加载
css加载不会阻塞Dom树的解析但是会阻塞Dom树的渲染,也会阻塞js语句的执行。
浏览器渲染流程:
- html解析文档,生成Dom Tree;css解析文件,生成Css Tree
- 结合DomTree与Css Tree,生成Render Tree
- 根据Render Tree渲染机制,渲染。
2、vue项目依赖包
npm outdated // 可查看package.json的包的版本
npm -s i xxx // 安装某依赖包(在package.json可更新)
3、webpack
模块打包器。1、分析成浏览器理解的东西;2、压缩文件。
基本配置
1、entry: string|Array<string> / {[entryChunkName: string]: string|Array<string>}
配置模块的入口
PS:__dirname指的是当前文件所在文件夹的绝对路径。
2、output
告诉webpack在哪输出它创建的bundles以及如何命名
PS:filename 用于输出文件的文件名;目标输出目录 path 的绝对路径。
PS:文件名带hash值为了应对浏览器的缓存机制,同名不会立刻更新。hash的三种模式如下:
hash 与整个项目有关,项目里有文件修改,所有文件的哈希值都会变化。
chunkhash 与入口有关,同一入口的文件被视为一个整体,当其中一个文件修改时,同入口的所有文件哈希值发生改变。
contenthash 只与文件内容有关,文件内容发生改变,才会更改该文件的哈希值。
4、对象数组中有子级,算最深层级的级数
export function maxLevel(data, value = 'children', i = 1) {
const num = data.map(item => {
if (item[value] && item[value] instanceof Array) {
i++
i = maxLevel(item[value], value = 'children', i)
}
return i
})
return Math.max(...num)
}