#### 1. 理解npm、yarn依赖包管理的原理,两者的区别
1. yarn相比npm的优点:速度快、版本号锁定
1. 速度快 -- 并行安装:npm串行安装
2. 速度快 -- 离线模式:之前安装过一个软件包,再次使用yarn安装时从之前的缓存中获取,npm从网络中下载
2. 版本号锁定,保证团队各个成员下载下来的包一致,避免因版本不同引起的程序错误
#### 2. 可以使用npm运行自定义脚本
1. npm 脚本就是执行shell脚本,shell可执行命令都可写在npm script中
#### 3. 理解Babel、ESLint、webpack等工具在项目中承担的作用
1. Babel将ES6的新语法转换为浏览器可识别的兼容语法ES5 ES3
2. Babel默认只转换新语法,对于新的ES6 API,如Proxy Promise Symbol Set等需要babel-polyfill支持
1. ESLint统一代码规范,减少不必要的错误和隐患
1. webpack可以看做是模块打包机,将整个项目内的所有文件当成模块来进行管理,方便项目代码管理与开发,在开发应用中可以使用语言新语法和特性,并对每个模块文件应用不同的loader以及插件以转换成浏览器可以运行的代码
#### 4. ESLint规则检测原理,常用的ESLint配置
#### 5. Babel的核心原理,可以自己编写一个Babel插件
#### 6. 可以配置一种前端代码兼容方案,如Polyfill
#### 7. webpack的编译原理、构建流程、热更新原理,chunk、bundle和module的区别和应用
#### 8. 可熟练配置已有的loaders和plugins解决问题,可以自己编写loaders和plugins
#### 9. webpack项目优化
1. 忽略模块的解析路径
2. 忽略查找路径
3. 优化打包速度,将公共模块预先打包好放入到页面中,页面中模块打包不打包比如react这类第三方库:DllPlugin插件
4. 使用happypack实现多线程打包
5. import在生产环境下会自动去创造没用的代码--tree-shaking
6. scope hosting作用域提升
7. 抽离页面公共代码,抽离第三方代码