前端面试每日3+2(第27天)
冰洋 12/28/2019 每日3+2
当你发现自己的才华撑不起你的野心时,就请安静下来学习吧!
鲁迅说过:
答案仅供参考...
# 1、前端工程化工具有哪些?
解析:
grunt (opens new window)、gulp (opens new window)、webpack (opens new window)
# 2、webpack是什么?为什么要使用webpack?
解析:
- 官方:webpack是现代Javascript应用的静态模块打包器(moudle bundler)。 包含应用程序需要的每个模块,然后将所有模块打包成一个或者多个bundle。
- 开源的前端打包工具
- 提供了前端模块化开发方案,使用加载器将各种静态资源转换为模块
- 各个模块之间的依赖关系,然后使用loaders处理他们,最后生产一个压缩优化并合并后的静态资源。
目的:
- 模块化:把复杂的程序细化为小的文件,实现前端的模块化开发
- 编译:可以将浏览器不支持的es6、7以及TypeScript等语言编译成浏览器可识别的js;将sass、less等语言进行编译成css等
- 性能优化:压缩合并,可以对图片、js、css等静态资源进行压缩、合并。
- 性能前端自动化,提高了工作效率
# 3、webpack与grunt、gulp的不同?
解析:
- webpack:一整套前工程化解决方案:模块化解决方案 + 优化前端开发流程
- Grunt和Grunt:优化前端开发流程。要是解决重复任务的问题。Grunt、Gulp就是其中代表。比如: 压缩、编译less、sass、地址添加hash、替换等。
# 4、webpack打包原理?
解析:
把所有依赖打包成一个 bundle.js 文件,通过代码分割成单元片段并按需加载。
# 5、如何利用webpack来优化前端性能?
解析:
用webpack优化前端性能是指优化webpack的输出结果,让打包的最终结果在浏览器运行快速高效。
- 压缩代码。删除多余的代码、注释、简化代码的写法等等方式。可以利用webpack的UglifyJsPlugin和ParallelUglifyPlugin来压缩JS文件, 利用cssnano(css-loader?minimize)来压缩css
- 利用CDN加速。在构建过程中,将引用的静态资源路径修改为CDN上对应的路径。可以利用webpack对于output参数和各loader的publicPath参数来修改资源路径
- 删除死代码(Tree Shaking)。将代码中永远不会走到的片段删除掉。可以通过在启动webpack时追加参数--optimize-minimize来实现
- 提取公共代码