>[danger] 问题一:请说出vue-cli工程中每个文件夹和文件的用处
>
注意:此问题千万不要只解释一下 <span style="color:#4183c4;">src</span> 文件夹下每个文件夹的作用。
**vue-cli目录结构:**

**vue-cli目录解析:**
1. build 文件夹:用于存放 webpack 相关配置和脚本。开发中仅 偶尔使用 到此文件夹下 <span style="color:#4183c4;">webpack.base.conf.js</span> 用于配置 less、sass等css预编译库,或者配置一下 UI 库。
2. config 文件夹:主要存放配置文件,用于区分开发环境、线上环境的不同。 常用到此文件夹下 <span style="color:#4183c4;">config.js</span> 配置开发环境的 端口号、是否开启热加载 或者 设置生产环境的静态资源相对路径、是否开启gzip压缩、npm run build 命令打包生成静态资源的名称和路径等。
3. dist 文件夹:默认 npm run build 命令打包生成的静态资源文件,用于生产部署。
4. node_modules:存放npm命令下载的开发环境和生产环境的依赖包。
5. src: 存放项目源码及需要引用的资源文件。
6. src下assets:存放项目中需要用到的资源文件,css、js、images等。
7. src下componets:存放vue开发中一些公共组件:header.vue、footer.vue等。
8. src下emit:自己配置的vue集中式事件管理机制。
9. src下router:vue-router vue路由的配置文件。
10. src下service:自己配置的vue请求后台接口方法。
11. src下page:存在vue页面组件的文件夹。
12. src下util:存放vue开发过程中一些公共的.js方法。
13. src下vuex:存放 vuex 为vue专门开发的状态管理器。
14. src下app.vue:使用标签```<route-view></router-view>```渲染整个工程的.vue组件。
15. src下main.js:vue-cli工程的入口文件。
16. index.html:设置项目的一些meta头信息和提供```<div id="app"></div>```用于挂载 vue 节点。
17. package.json:用于 node_modules资源部 和 启动、打包项目的 npm 命令管理。
>[danger] 问题二:config文件夹 下 index.js 的对于工程 开发环境 和 生产环境 的配置
>

<span style="color:#4183c4;">build</span> 对象下 对于 生产环境 的配置:
* index:配置打包后入口.html文件的名称以及文件夹名称
* assetsRoot:配置打包后生成的文件名称和路径
* assetsPublicPath:配置 打包后 .html 引用静态资源的路径,一般要设置成 "./"
* productionGzip:是否开发 gzip 压缩,以提升加载速度

<span style="color:#4183c4;">dev</span> 对象下 对于 开发环境 的配置:
* port:设置端口号
* autoOpenBrowser:启动工程时,自动打开浏览器
* proxyTable:vue设置的代理,用以解决 跨域 问题
>[danger] 问题三:请你详细介绍一些 package.json 里面的配置
>


<span style="color:#4183c4;">常用对象解析:</span>
* scripts:npm run xxx 命令调用node执行的 .js 文件
* dependencies:生产环境依赖包的名称和版本号,即这些 依赖包 都会打包进 生产环境的JS文件里面
* devDependencies:开发环境依赖包的名称和版本号,即这些 依赖包 只用于 代码开发 的时候,不会打包进 生产环境js文件 里面。
                    
        - 阅读说明
 - vue试题(已完成)
 - 一、vue-cli依赖的 Node.js 环境安装
 - 二、vue-cli 工程技术集合介绍
 - 三、vue-cli 工程目录结构介绍
 - 四、vue.js 核心知识点高频试题一
 - 4.1 对于Vue是一套渐进式框架的理解
 - 4.2 请说出vue几种常用的指令
 - 4.3 请问 v-if 和 v-show 有什么区别?
 - 4.4 vue常用的修饰符
 - 4.5 v-on可以监听多个方法吗?
 - 4.6 vue中 key 值的作用
 - 4.7 vue-cli工程升级vue版本
 - 4.8 vue事件中如何使用event对象?
 - 4.9 $nextTick的使用
 - 4.10 Vue 组件中 data 为什么必须是函数
 - 4.11 v-for 与 v-if 的优先级
 - 五、vue.js 核心知识点高频试题二
 - 5.1 vue中子组件调用父组件的方法
 - 5.2 vue中 keep-alive 组件的作用
 - 5.3 vue中编写可复用的组件
 - 5.4 vue生命周期有关的试题
 - 5.5 vue如何监听键盘事件中的按键?
 - 5.6 vue更新数组时触发视图更新的方法
 - 5.7 vue中对于对象的更改检测
 - 5.8 解决非工程化项目初始化页面闪动问题
 - 5.9 v-for产生的列表,实现active的切换
 - 5.10 v-model语法糖的使用
 - 六、vue.js 核心知识点高频试题三
 - 6.1 十个常用的自定义过滤器
 - 6.2 vue等单页面应用及其优缺点
 - 6.3 vue的计算属性
 - 6.4 vue提供的几种脚手架模板
 - 6.5 vue父组件向子组件通过props传递数据
 - 6.6 vue-cli开发环境使用全局常量
 - 6.7 vue-cli生产环境使用全局常量
 - 6.8 vue弹窗后如何禁止滚动条滚动?
 - 6.9 计算属性的缓存和方法调用的区别
 - 6.10 vue-cli中自定义指令的使用
 - 6.11 父组件异步获取动态数据传递给子组件
 - 七、vue-router 路由高频考题
 - 7.1 vue-router响应 路由参数 的变化
 - 7.2 完整的 vue-router 导航解析流程
 - 7.3 vue-router有哪几种导航钩子( 导航守卫 )?
 - 7.4 vue-router的几种实例方法以及参数传递
 - 7.5 vue-router的动态路由匹配以及使用
 - 7.6 vue-router如何定义嵌套路由?
 - 7.7 router-link组件及其属性
 - 7.8 vue-router实现路由懒加载( 动态加载路由 )
 - 7.9 vue-router路由的两种模式
 - 八、vuex 状态管理高频试题
 - 8.1 什么是vuex?
 - 8.2 使用vuex的核心概念
 - 8.3 vuex在vue-cli中的应用
 - 8.4 如何在组件中去使用vuex的值和方法?
 - 8.5 在vuex中使用异步修改
 - 九、axios、fetch、ajax等请求高频试题
 - 9.1 Promise对象是什么?
 - 9.2 axios、fetch与ajax有什么区别?
 - 9.3 JS的同源策略和跨域问题
 - 9.4 如何解决跨域问题?
 - 9.5 vue-cli中使用JSON数据模拟
 - 9.6 axios有哪些特点?
 - 十、前端 UI 样式高频试题
 - 10.1 组件样式属性 scoped 问题及解决方法
 - 10.2 vue常用的UI组件库
 - 10.3 vue组件适配移动端【经典】
 - 10.4 移动端适配常用媒体查询源码
 - 10.5 垂直居中对齐
 - 10.6 vue-cli中如何使用背景图片?
 - 10.7 使用表单禁用时移动端样式问题
 - 10.8 多种类型文本超出隐藏问题
 - 10.11 vue-cli工程引入全局less变量
 - 十一、vue中常用功能实现与详解
 - 11.1 vue中如何实现tab切换功能?
 - 11.2 利用<keep-alive></keep-alive>标签实现某个组件缓存功能
 - 11. 3 vue中实现切换页面时为左滑出效果
 - 11.4 vue无痕刷新
 - 11.5 多种情景的数组去重
 - 11.6 vue保留滚动条位置
 - 11.7 vue组件中使用定时器
 - 11.8 组件slot使用示例
 - 11.9 使用递归组件实现级联选择器
 - 11.10 使用递归组件实现树形控件
 - 11.11 几种常见的自定义指令详解
 - 11.11.1 实现一个表单自动聚焦的自定义指令
 - 11.11.2 实现一个可从外部关闭的下拉菜单
 - 11.11.3 实现一个实时时间转换指令v-time
 - 11.12 两种类型的循环单选选择、取消功能
 - 十二、vue各种情况的组件间通信
 - 12.1 关于vue组件间通信问题的回答
 - 12.2 万金油:vue中央事件总线的使用
 - 12.3 props:最基础的父子组件间传递数据
 - 12.4 v-model语法糖:子组件向父组件传递数据
 - 12.5 .sync 修饰符:进行父子组件间相互传递数据
 - 12.6 $attrs属性:父孙组件间传递数据
 - 12.7 $on属性:子组件调用父组件方法
 - 12.8 $listeners属性:孙组件调用父组件的方法
 - 12.9 $refs属性:
 - 12.10 $parent属性:
 - 12.11 $children属性:
 - 十三、混合开发:vue工程与app交互
 - 十四、vue开发命令的执行过程【拓展】
 - 十五、vue-cli工程打包后.js文件详解
 - 15.1 vue打包命令是什么?
 - 15.2 vue打包后会生成哪些文件?
 - 15.3 配置 vue 打包生成文件的路径
 - 15.4 vue如何优化首屏加载速度?
 - 十六、MVVM设计模式高频试题
 - 16.1 MVC、MVP与MVVM模式
 - 16.2 MVC、MVP与MVVM的区别
 - 16.3 常见的实现MVVM几种方式
 - 16.4 Object.defineProperty()方法
 - 十七、实现一个自己的MVVM
 - 17.1 准备知识
 - 17.1.1 ES6中类和定义
 - 17.1.2 JS中的文档碎片
 - 17.1.3 解构赋值
 - 17.1.4 Array.from与Array.reduce
 - 17.1.5 递归的使用
 - 17.1.6 Obj.keys()与Obj.defineProperty
 - 17.1.7 发布-订阅模式
 - 17.2 效果示例
 - 17.3 思路分析
 - 17.4 项目地址
 - 十八、vue-cli中的配置详解
 - 18.1 webpack的特点
 - 十九、源码剖析
 - 19.1 剖析 Vue 内部运行机制
 - 19.1.1 Vue.js 全局运行机制
 - 19.1.2 响应式系统的基本原理
 - 19.1.3 响应式系统的依赖收集追踪原理
 - 19.1.4 实现 Virtual DOM 下的一个 VNode 节点
 - 19.1.5 template 模板是怎样通过 Compile 编译的
 - 19.1.6 数据状态更新时的差异 diff 及 patch 机制
 - 19.1.7 批量异步更新策略及 nextTick 原理
 - 19.1.8 proxy代理过程
 - 19.2 剖析 vue-router 内部运行机制
 - 19.2.1 重要函数思维图解
 - 19.3 剖析 vuex 内部运行机制
 - 19.3.1 准备知识
 - 1. Vue.mixin
 - 2. Vue.use
 - 19.3.2 插件安装
 - 19.3.3 Store
 - 19.3.4 使用源码
 - 19.4 剖析 axios 内部运行机制
 - 二十、发布一个 npm 资源包
 - 二十一、vue的服务器端渲染
 - 二十二:资料分享
 - html试题(整理中)
 - 1. 请写出 HTML5 的doctype
 - 2. 请你谈谈你对web标准以及w3c的理解与认识。
 - 3. HTML5有哪些新特性?
 - 4. 移动端meta标签
 - 5. HTML5标签的语义化
 - Css试题(整理中)
 - 1. css盒子模型
 - 一、选择器
 - 2. css常用的选择器有哪些?
 - 3. CSS3新增伪类有那些?
 - 二、结构和层叠
 - 4. css优先级计算规则
 - 三、值和单位
 - 5. em、ex、px与rem
 - 四、字体
 - 6. 使用自定义字体
 - 五、文本属性
 - 7. 多行省略
 - 8. CSS有哪些继承属性
 - 六、基本视觉格式化
 - 9. 去掉inline-block元素间隙
 - 6.2 垂直居中布局
 - 6.3 box-sizing属性
 - 6.4 CSS中visibility属性的collapse属性值
 - 6.5 display:none与visibility:hidden的区别?
 - 七、内外边距和边框
 - 八、颜色和背景
 - 8.1 rgba和opacity的透明有何不同?
 - 九、浮动和定位
 - 9.1 居中对齐
 - 9.2 position的值
 - 9.3 如何清除浮动
 - 十、过渡与动画
 - 十一、less与sass
 - 11.1 less和sass的特点和区别
 - 十二、弹性盒布局
 - 12.1 请解释一下CSS3的flexbox(弹性盒布局模型),以及适用场景?
 - 13. 用纯CSS创建一个三角形
 - 14. 对BFC规范(块级格式化上下文:block formatting context)的理解
 - 十五、 移动端布局
 - 15.1 媒体查询
 - 15.2 圣杯布局
 - 15.3 双飞翼布局
 - 15.4 实现中间自适应宽度,左右两栏固定宽度布局
 - 16. CSS优化与性能提高
 - 17. 浏览器解析CSS选择器
 - 18. css实现全屏滚动
 - 十九、响应式设计
 - 20. 怎么让浏览器支持小于12px 的文字?
 - 21. 图片格式的选择
 - 22. link和@import的区别
 - 23. 重排和重绘
 - 24. css3有哪些新特效?
 - 25. 用css创建一个三角形
 - JavaScript语言核心试题(已完成)
 - 1. 原始类型有哪几种?null 是对象嘛?
 - 2. 对象(Object)类型
 - 3. typeof vs instanceof
 - 4. 类型转换
 - 5. this
 - 6. == vs ===
 - 7. 闭包
 - 8. 深浅拷贝
 - 9. 原型
 - 10. JS 异步编程及常考面试题
 - 10.1 并发(concurrency)和并行(parallelism)区别
 - 10.2 回调函数(Callback)
 - 10.3 Generator
 - 10.4 Promise
 - 10.5 async 及 await
 - 10.6 常用定时器函数
 - 11. Event Loop(事件循环)
 - 11.1 进程与线程
 - 11.2 执行栈
 - 11.3 浏览器中的 Event Loop
 - 11.4 Node 中的 Event Loop
 - 12. new
 - 13. instanceof 的原理
 - 14. 0.1 + 0.2 != 0.3
 - 一、词法结构
 - 1.1 ajax请求webservice接口及Unicode转义
 - 1.2 javascript中的保留字
 - 二、类型、值和变量
 - 2.1 javascript中的数据类型有哪些?
 - 2.2 Javascript中所支持的数字函数
 - 2.3 二进制浮点数和四舍五入错误
 - 2.4 日期计算函数
 - 2.5 字符串常用的方法
 - 2.6 布尔值的转化
 - 2.7 null和undefined
 - 2.8 比较两个数组
 - 2.9 JavaScript类型转换
 - 2.10 变量声明
 - 2.11 变量作用域
 - 2.11.1 变量作用域优先级
 - 2.11.2 函数作用域和声明提前
 - 2.11.3 作用域链
 - 三、表达式和运算符
 - 3.1 JavaScript运算符
 - 3.2 运算符优先级
 - 3.3 == 和 ===
 - 3.4 in运算符
 - 3.5 instanceof运算符
 - 3.6 eval()
 - 3.7 三元运算符
 - 3.8 typeof运算符
 - 3.9 delete运算符
 - 四、语句
 - 4.1 枚举对象的属性和属性值
 - 4.2 跳转语句
 - 4.2.1 break与contiinue
 - 4.2.2 return语句
 - 4.2.3 throw语句
 - 4.2.4 try/catch/finally语句
 - 4.3 with、debugger和use strict
 - 4.4 for循环
 - 五、对象
 - 5.1 对象基础
 - 5.2 对象直接量与new创建对象
 - 5.3 原型与原型链
 - 5.4 Object.create()
 - 5.5 属性的查询和设置
 - 5.6 删除属性
 - 5.7 检测属性
 - 5.8 枚举属性
 - 5.9 属性getter和setter
 - 5.9.1 存取器属性实例一
 - 5.9.2 存取器属性实例二
 - 5.9.3 存取器属性实例三
 - 5.10 属性的特性
 - 5.10.1 如何实现属性特性的查询和设置操作
 - 5.10.2 修改不允许创建后修改的属性
 - 5.10.3 复制属性的特性
 - 5.11 对象的三个属性
 - 5.11.1 原型属性
 - 5.11.2 类属性
 - 5.11.3 可扩展性
 - 5.12 序列化对象
 - 5.13 对象方法
 - 六、数组
 - 6.1 JS数组基础
 - 6.2 创建数组
 - 6.3 数组元素的读和写
 - 6.4 稀疏数组
 - 6.5 数组长度
 - 6.6 数组元素的添加和删除
 - 6.7 数组遍历
 - 6.8 多维数组
 - 6.9 数组方法
 - 6.10 数组类型
 - 6.11 类数组对象
 - 6.12 作为数组的字符串
 - 七、函数
 - 7.1 函数定义
 - 7.2 函数调用
 - 7.2.1 函数调用
 - 7.2.2 方法调用
 - 7.2.3 构造函数调用
 - 7.2.4 间接调用
 - 7.3 函数的实参和形参
 - 7.3.1 可选形参
 - 7.3.2 可变长的实参列表:实参对象
 - 7.3.3 将对象的属性用做实参
 - 7.3.4 实参类型
 - 7.4 作为值的函数
 - 7.5 作为命名空间的函数
 - 7.6 闭包
 - 7.7 函数的属性、方法和构造函数
 - 7.7.1 length属性
 - 7.7.2 prototype 属性
 - 7.7.3 call()方法和apply()方法
 - 7.7.4 bind()方法
 - 7.7.5 toString()方法
 - 7.7.6 Function()构造函数
 - 7.7.7 可调用的对象
 - 7.8 函数式编程
 - 7.8.1 使用函数处理数组
 - 7.8.2 高阶函数
 - 7.8.3 不完全函数
 - 7.8.4 记忆
 - 八、类和模板
 - 8.1 类和原型
 - 8.2 类和构造函数
 - 8.2.1 构造函数和类的标识
 - 8.2.2 constructor 属性
 - 8.3 JS中Java式的类继承
 - 8.4 类的扩充
 - 8.5 类和类型
 - 8.5.1 instanceof 运算符
 - 8.5.2 constructor属性
 - 8.5.3 构造函数的名称
 - 8.5.4 鸭式辩型
 - 8.6 JS中的面向对象
 - 8.6.1 集合类
 - 8.6.2 枚举类型
 - 8.6.3 标准转换方法
 - 8.6.4 比较方法
 - 8.6.5 方法借用
 - 8.6.6 私有状态
 - 8.6.7 构造函数的重载和工厂方法
 - 8.7 子类
 - 8.7.1 定义子类
 - 8.7.2 构造函数和方法链
 - 8.7.3 组合 VS 子类
 - 8.7.4 类的层次结构和抽象类
 - 8.8 ES5中的类
 - 8.8.1 让属性不可枚举
 - 8.8.2 定义不可变的类
 - 8.8.3 封装对象状态
 - 8.8.4 防止类的扩展
 - 8.8.5 子类和ES5
 - 8.8.6 属性描述符
 - 8.9 模块
 - 8.9.1 用做命名空间的对象
 - 8.9.2 作为私有命名空间的函数
 - 九、正则表达式
 - 9.1 正则表达式的定义
 - 9.1.1 直接量字符
 - 9.1.2 字符类
 - 9.1.3 重复
 - 9.1.4 选择、分组和引用
 - 9.1.5 指定匹配位置
 - 9.1.6 修饰符
 - 9.2 用于模式匹配的String方法
 - 9.3 RegExp对象
 - 9.3.1 RegExp的属性
 - 9.3.2 RegExp的方法
 - 十、JavaScript的子集和扩展
 - 10.1 JS的子集
 - 10.1.1 精华
 - 10.1.2 子集的安全性
 - 10.2 常量和局部变量
 - 10.3 解构赋值
 - 10.4 迭代
 - 10.4.1 for/each循环
 - 10.4.2 迭代器
 - 10.4.3 生成器
 - 10.4.4 数组推导
 - 10.4.5 生成器表达式
 - 10.5 函数简写
 - 10.6 多catch从句
 - 客户端JavaScript试题(整理中)
 - 一、web浏览器中的JavaScript
 - 1.1 URL中的JavaScript
 - 1.2 同步、异步和延迟的脚本
 - 1.3 JS程序执行的时间线
 - 1.4 同源策略
 - 二、window对象
 - 2.1 计时器
 - 2.2 解析URL
 - 2.3 Nabigator对象
 - 2.4 window对象方法
 - 三、脚本化文档 DOM
 - 3.1 文档对象模型
 - 3.2 选择文档元素的方法
 - 3.3 文档遍历函数
 - 3.4 数据集采集
 - 3.5 元素的内容
 - 3.6 创建、插入和删除节点
 - 3.7 文档和元素的几何形状和滚动
 - 3.7.1 文档坐标和视口坐标
 - 3.7.2 查询元素的几何尺寸
 - 3.7.3 滚动
 - 3.8 其他文档特性
 - 四、事件处理
 - 五、脚本化HTTP
 - 5.1 ajax
 - 5.2 XMLHttpRequest对象
 - 5.2.1 指定请求
 - 5.2.2 取得响应
 - 5.2.3 编码请求主体
 - 5.2.4 HTTP进度事件
 - 5.2.5 中止请求和超时
 - 5.2.6 跨域HTTP请求
 - 5.3 借助<script>发送HTTP请求:JSONP
 - 5.4 基于服务器端推送事件端Comet技术
 - 六、客户端存储
 - 6.1 客户端存储的几种形式
 - 6.2 localStorage和sessionStorage
 - 6.3 cookie
 - 6.4 应用程序存储和离线web应用
 - 七、多媒体和图形编程
 - 7.1 脚本化图片
 - 7.2 脚本化音频和视频
 - 7.3 SVG:可伸缩的矢量图行
 - 7.4 Canvas
 - 八、HTML5 API
 - 8.1 地理位置
 - 8.2 历史记录管理
 - 8.3 跨域消息传递
 - 8.4 Web Worker
 - 8.5 类型化数组和ArrayBuffer
 - 8.6 Blob
 - 8.7 文件系统API
 - 8.8 客户端数据库
 - 8.9 webSocket协议
 - JavaScript重点概念试题(整理中)
 - 一、类型和语法
 - 二、作用域和闭包
 - 三、this和对象原型
 - 四、异步和性能
 - JavaScript真题(整理中)
 - Jquery试题(整理中)
 - ECMAScript试题(整理中)
 - 1. var、let 及 const 区别
 - 2. 原型继承和 Class 继承
 - 3. 模块化
 - 4. Proxy
 - 5. map, filter, reduce
 - 一、块级作用域绑定
 - 1.1 var声明和变量提升(Hosting)机制
 - 1.2 块级声明:let声明
 - 1.3 块级声明:禁止重声明
 - 1.4 块级声明:const声明
 - 1.5 块级声明:临时死区
 - 1.6 循环中的块级作用域及立即调用函数表达式解决方案
 - 1.7 循环中的let
 - 1.8 循环中的const
 - 1.9 全局块作用域绑定
 - 二、字符串
 - 2.1 UTF-16码位
 - 2.2 新增方法 codePointAt()
 - 2.3 新增方法 fromCodePoint()
 - 2.4 新增方法 normalize()
 - 2.5 新增解析字符串方法 includes()
 - 2.6 新增解析字符串方法 startsWith()
 - 2.7 新增解析字符串方法 endsWith()
 - 2.8 新增方法 repeat()
 - 2.9 模板字面量
 - 2.9.1 什么是模板字面量
 - 2.9.2 基础语法
 - 2.9.3 多行字符串
 - 2.9.4 字符串占位符
 - 2.9.5 标签模板
 - 三、函数
 - 3.1 函数形参的默认值
 - 3.1.1 ES5中模拟默认参数
 - 3.1.2 ES6中的默认参数值
 - 3.1.3 ES5中的 arguments 对象
 - 3.1.4 默认参数值对 arguments 对象的影响
 - 3.1.5 默认参数表达式
 - 3.1.6 默认参数的临时死区
 - 3.2 处理无名参数
 - 3.2.1 ES5中的无命名参数
 - 3.2.2 不定参数
 - 3.3 增强的 FUNCTION 构造函数
 - 3.4 展开运算符
 - 3.5 name属性
 - 3.5.1 什么是name属性
 - 3.5.2 name属性的特殊情况
 - 3.6 明确函数的多重用途
 - 3.6.1 什么是函数的多重用途
 - 3.6.2 在ES5中判断函数被调用的方法
 - 3.6.3 元属性 new.target
 - 3.7 块级函数
 - 3.7.1 ES6中的块级函数
 - 3.7.2 块级函数的使用场景
 - 3.7.3 非严格模式下的块级函数
 - 3.8 箭头函数
 - 3.8.1 箭头函数与传统 JS 函数的不同
 - 3.8.2 箭头函数的语法
 - 3.8.3 创建立即执行函数表达式
 - 3.8.4 箭头函数没有 this 绑定
 - 3.8.5 箭头函数和数组
 - 3.8.6 箭头函数没有 arguments 绑定
 - 3.8.7 箭头函数的辨识方法
 - 3.9 尾调用优化
 - 3.9.1 什么是尾调用
 - 3.9.2 ES6中尾调用的优化
 - 3.9.3 如何利用尾调用的优化
 - 四、对象
 - 4.1 对象的类别
 - 4.2 对象字面量语法扩展
 - 4.2.1 属性初始值的简写
 - 4.2.2 对象方法的简写
 - 4.2.3 可计算属性名
 - 4.3 新增方法
 - 4.3.1 Object.is()
 - 4.3.2 Object.assign()
 - 4.4 重复的对象字面量属性
 - 4.5 自有属性枚举顺序
 - 4.6 增强对象原型
 - 4.6.1 改变对象的原型
 - 4.6.2 简化原型访问的Super引用
 - 4.7 正式的方法定义
 - 五、解构:使数据访问更便捷
 - 5.1 对象解构
 - 5.1.1 解构赋值
 - 5.1.2 默认值
 - 5.1.3 为非同名局部变量赋值
 - 5.1.4 嵌套对象解构
 - 5.2 数组解构
 - 5.2.1 解构赋值
 - 5.2.2 默认值
 - 5.2.3 嵌套数组解构
 - 5.2.4 不定元素
 - 5.3 混合解构
 - 5.4 解构参数
 - 5.4.1 必须传值的解构参数
 - 5.4.2 解构参数的默认值
 - 六、Symbol 和 Symbol 属性
 - 6.1 什么是 Symbol
 - 6.2 创建 Symbol
 - 6.3 Symbol的使用方法
 - 6.4 Symbol共享体系
 - 6.5 Symbol与类型强制转换
 - 6.6 Symbol属性检索
 - 6.6 通过well-known Symbol暴露内部操作
 - 6.6.1 Symbol.hasInstance方法
 - 6.6.2 Symbol.isConcatSpreadable属性
 - 6.6.3 Symbol.match、Symbol.replace、Symbol.search和Symbol.split属性
 - 6.6.4 Symbol.toPrimitive方法
 - 6.6.5 Symbol.toStringTag属性
 - 6.6.6 Symbol.unscopables属性
 - 七、Set 集合 与 Map 集合
 - 7.1 ES5中的 Set 集合与 Map 集合
 - 7.2 ES6中的 Set 集合
 - 7.2.1 创建 Set 集合并添加元素
 - 7.2.2 移除元素
 - 7.2.3 Set集合的 forEach()方法
 - 7.2.4 将 Set 集合转换为数组
 - 7.2.5 Weak Set集合
 - 7.3 ES6中的 Map 集合
 - 7.3.1 ES6中的 Map 集合
 - 7.3.2 Map 集合支持的方法
 - 7.3.3 Map 集合的初始化方法
 - 7.3.4 Map 集合的 forEach 方法
 - 7.3.5 Weak Map 集合
 - Http协议试题(已完成)
 - 说明
 - 重点:输入 URL 到页面渲染的整个流程
 - 一、网络基础
 - 1.1 TCP/IP协议族
 - 1.1.1 什么是TCP/IP协议族
 - 1.1.2 TCP/IP协议族按层次划分了哪几次?
 - 1.1.3 HTTP请求时,TCP/IP通信传输流
 - 1.2 网络层:IP协议
 - 1.3 传输层:TCP协议、UDP协议
 - 1.3.1 TCP协议位于哪一层
 - 1.3.2 TCP头部有哪些重要字段?
 - 1.3.3 TCP协议的三次握手
 - 1.3.4 为什么 TCP 建立连接需要三次握手?
 - 1.3.5 UDP 与 TCP 的区别是什么?
 - 1.3.6 ARQ协议
 - 1.3.7 滑动窗口协议
 - 1.3.8 拥塞处理
 - 1.4 应用层:DNS服务
 - 1.5 URL和URI
 - 1.5.1 URI
 - 1.5.2 绝对URI的格式
 - 1.6 RFC
 - 二、Http协议
 - 2.1 HTTP请求报文组成
 - 2.2 HTTP协议的状态
 - 2.3 告知服务器意图的HTTP方法
 - 2.4 TCP的持久连接
 - 2.5 使用Cookie的状态管理
 - 三、HTTP报文内的HTTP信息
 - 3.1 HTTP报文类型和结构
 - 四、HTTP状态码
 - 五、与HTTP协作的 Web 服务器
 - 5.1 通信数据转发程序:代理
 - 5.2 通信数据转发程序:网关
 - 5.3 通信数据转发程序:隧道
 - 六、HTTP首部
 - 6.1 HTTP首部字段类型
 - 6.2 通用首部字段
 - 6.3 请求首部字段
 - 6.4 响应首部字段
 - 6.5 实体首部字段
 - 6.6 非HTTP/1.1 首部字段
 - 6.7 为Cookie服务的首部字段
 - 6.8 其他首部字段
 - 七、HTTPS
 - 7.1 HTTP的缺点
 - 7.2 HTTP与HTTPS
 - 7.3 HTTPS的加密方式
 - 7.4 HTTPS的通信步骤
 - 7.5 HTTPS的缺点
 - 八、基于HTTP的功能追加协议
 - 8.1 SPDY协议
 - 8.2 webSocket协议
 - 8.3 HTTP/2.0
 - Webpack(已完成)
 - 1. 减少 Webpack 打包时间
 - 2. 减少 Webpack 打包后的文件体积
 - 一、Webpack基础介绍
 - 1.1 模块化
 - 1.2 构建的作用及常见功能
 - 1.3 常见的构建工具及其优缺点
 - 1.4 webpack
 - 1.5 Loader
 - 1.6 Plugin
 - 1.7 DevServer
 - 1.8 webpack的核心概念
 - 二、Webpack配置
 - 2.1 Entry
 - 2.2 Output
 - 2.2.1 filename配置
 - 2.2.2 chunkFilename配置
 - 2.2.3 path配置
 - 2.2.4 publicPath配置
 - 2.2.5 crossOriginLoading配置
 - 2.2.6 libraryTarget 和 library配置
 - 2.2.7 var (默认)配置
 - 2.2.8 commonjs配置
 - 2.2.9 commonjs2配置
 - 2.2.10 this配置
 - 2.2.11 window配置
 - 2.2.12 global配置
 - 2.2.13 libraryExport配置
 - 2.3 Module
 - 2.3.1 Loader配置
 - 2.3.2 noParse配置
 - 2.3.3 parser配置
 - 2.4 Resolve
 - 2.4.1 alias配置
 - 2.4.2 mainFields配置
 - 2.4.3 extensions配置
 - 2.4.4 modules配置
 - 2.4.5 descriptionFiles配置
 - 2.4.6 enforceExtension配置
 - 2.4.7 enforceModuleExtension配置
 - 2.5 Plugin
 - 2.6 DevServer
 - 2.6.1 hot配置
 - 2.6.2 inline配置
 - 2.6.3 historyApiFallback配置
 - 2.6.4 contentBase配置
 - 2.6.5 headers配置
 - 2.6.6 host配置
 - 2.6.7 port配置
 - 2.6.8 allowedHosts配置
 - 2.6.9 disableHostCheck配置
 - 2.6.10 https配置
 - 2.6.11 clientLogLevel配置
 - 2.6.12 compress配置
 - 2.6.13 open配置
 - 2.7 其他配置
 - 2.7.1 Target配置
 - 2.7.2 Devtool配置
 - 2.7.3 Watch 和 WatchOptions
 - 2.7.4 Externals配置
 - 2.7.5 ResolveLoader配置
 - 2.8 如何整体配置结构
 - 2.9 判断如何配置 Webpack
 - 三、Webpack实战
 - 3.1 如何接入ES6
 - 3.2 如何接入SCSS
 - 3.3 React的使用
 - 3.4 Vue的使用
 - 3.5 使用 Angular2 框架
 - 3.6 为单页应用生成 HTML
 - 3.7 离线应用
 - 3.7.1 使用 Service Workers 实现离线缓存
 - 3.7.2 接入 Webpack
 - 3.8 检查代码
 - 四、Webpack优化
 - 4.1 缩小文件搜索范围
 - 4.1.1 优化 loader 配置
 - 4.1.2 优化 resolve.modules 配置
 - 4.1.3 优化 resolve.mainFields 配置
 - 4.1.4 优化 resolve.alias 配置
 - 4.1.5 优化 resolve.extensions 配置
 - 4.1.6 优化 module.noParse 配置
 - 4.2 构建动态链接库
 - 4.2.1 接入 Webpack
 - 4.2.2 如何实现构建动态链接库
 - 4.3 如何把任务分解给多个子进程去并发的执行
 - 4.4 多进程压缩代码
 - 4.5 使用自动刷新
 - 4.6 热模块替换
 - 4.6.1 优化模块热替换
 - 4.7 区分环境
 - 4.7.1 实现原理
 - 4.8 CDN加速
 - 4.8.1 用 Webpack 实现 CDN 的接入
 - 4.9 Tree Shaking优化
 - 4.9.1 接入 Tree Shaking
 - 4.10 提取公共代码
 - 4.10.1 如何通过 Webpack 提取公共代码
 - 4.11 按需加载
 - 4.11.1 用 Webpack 实现按需加载
 - 4.11.2 实例强化(按需加载与 ReactRouter)
 - 4.12 优化代码在运行时的效率
 - 4.12.1 接入 Webpack
 - 4.13 开启 Scope Hoisting
 - 4.13.1 接入webpack
 - 4.14 输出分析
 - 五 . Webpack原理
 - 5.1 流程概括
 - 5.2 流程细节
 - 前端监控
 - 1. 页面埋点
 - 2. 性能监控
 - 3. 异常监控
 - 浏览器( 整理中 )
 - 1. 为什么会有cookie?
 - 2. 浏览器内核
 - 3. cookies,sessionStorage和localStorage的区别