下面的题目都摘自各种 webpack 面试相关的文章,我只选择了感觉很重要的一些题,想要了解更多,可以查看本文最后的参考链接。
- 静态资源的合并/打包/压缩
- 解决加载慢,错综复杂的依赖关系
loader:
- css:postcss-l+autoprefixer,style-l(js到<style>),css-l(js中 import 的 css),less-l,sass-l
- 图片/字体加载:url-loader,file-loader
- 图片压缩:image-webpack-loader
- js:babel-loader es6转es5,eslint-loader 检查js代码
plugin:
- webpack-dev-server 实时打包构建
- html-webpack-plugin 配置启动页
- clean-webpack-plugin 清理 dist 文件夹
- mini-css-extract-plugin 提取css为单独文件
- optimize-css-assets-webpack-plugin 压缩css
loaders 是加载器。用来处理源文件的(JSX,Scss,Less..),一次处理一个,让 webpack 有能力加载处理非js文件,plugin 是插件。并不直接操作单个文件,它直接对整个构建过程起作用。
import('文件路径').then【代码执行到时再加载】
- 用 webpack4
- 用 externals 提取常用库
- 提前打包第三方库:dllplugin
- happypack:多线程进行打包,提升 loader 解析速度
- webpack-parallel-uglify-plugin 并发压缩js,提升速度
-
动态加载:路由懒加载【import()动态加载模块,返回结果是Promise】
function loadView(view) { return () => import( /* webpackChunkName: "view-[request]" */ `../components/${view}.vue`) } { path: '/home', component: loadView('Home') }
-
第三方依赖用 cdn(vue,vue-router,element-ui)【webpack.config.js externals】
-
压缩文件【uglifyjs-plugin/optimize-css-assets-plugin/image-webpack-loader】
-
提取公共代码【CommonChunkPlugin / splitChunksPlugin】