介绍下 webpack 热更新原理,是如何做到在不刷新浏览器的前提下更新页面
如何利用webpack来优化前端性能?(提高性能和体验)
webpack打包原理
将所有依赖打包成一个bundle.js,通过代码分割成单元片段按需加载
如何提高webpack的构建速度?
CommonsChunkPlugin
来提取公共代码externals
配置来提取常用库DllPlugin
和DllReferencePlugin
预编译资源模块 通过DllPlugin
来对那些我们引用但是绝对不会修改的npm包来进行预编译,再通过DllReferencePlugin
将预编译的模块加载进来。Happypack
实现多线程加速编译webpack-uglify-parallel
来提升uglifyPlugin
的压缩速度。 原理上webpack-uglify-parallel
采用了多核并行压缩来提升压缩速度Tree-shaking
和Scope Hoisting
来剔除多余代码入口(entry)
module.exports = {
entry: './src',
entry: [
'./src',
'/src2',
],
entry: {
main: './src',
}
entry: {
app: './src/index.js',
vendors: './src/script/moment.js'
}
entry: {
page1: './src/page1.js',
page2: './src/page2.js',
page3: './src/page3.js',
}
}
复制代码
出口(output)
module.exports = {
/*
output接受对象属性,参数为
filename: 打包后的文件名
path: 打包后所需导出的路径
*/
output: {
filename: 'index.js',
path: path.resolve(__dirname, '/dist')
},
output: {
filename: '[name].js',
path: __dirname + 'dist'
}
}
复制代码
使用过webpack里面哪些plugin和loader
loader
// url-loader增强版的file-loader,小于limit的转为Base64,大于limit的调用file-loader
npm install url-loader -D
// 使用
module.exports = {
module: {
rules: [{
test: /\.(png|jpg|gif)$/,
use: [{
loader: 'url-loader',
options: {
outputPath: 'images/',
limit: 500 //小于500B的文件打包出Base64格式,写入JS
}
}]
}]
}
}
复制代码
plugins
什么是Tree-shaking?CSS可以Tree-shaking?
Tree-shaking是指在打包中取出那些引入了但在代码中没有被用到的死代码。webpack中通过uglifysPlugin来Tree-shaking JS。CSS需要使用purify-CSS
什么是长缓存?在webpack中如何做到长缓存优化?
Loader和Plugin的不同?
不同的作用
不同的用法
webpack的构建流程是什么?从读取配置到输出文件这个过程尽量说全
如何在vue项目中实现按需加载?
Element出品的babel-plugin-component和AntDesign出品的babel-plugin-import 安装以上插件后,在.babelrc配置中或babel-loader的参数中进行设置,即可实现组件按需加载了。
{
"presets": [["es2015", { "modules": false }]],
"plugins": [
[
"component",
{
"libraryName": "element-ui",
"styleLibraryName": "theme-chalk"
}
]
]
}
作者:花生和鱼
链接:https://juejin.im/post/5e0037a0f265da33e056985b
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。