场景
js是单线程,同一时间只能干一件事情,如果事情很多,那么就会排队等很久,时间慢。如果同一时间两个/三个进程干这件事情,那么速度就会快很多。
thread-loader
开启多进程打包,一般用在babel-loader后面。
webpack配置如下:
module: {
rules: [
{
test: /\.js$/,
use: [{
loader: 'thread-loader',
options: {
workers: 2
}
},
'babel-loader']
}
]
}
但是使用多进程打包使用也有利有弊:
进程启动大概600ms,进程通信(告诉你某件事情我干好了)也有时间开销。
假设我们花100ms完成的事情,开启多进程打包,那么就会得不偿失。所以多进程打包用在:工 作消耗时间比较长,用直白的话说就是js代码多。
多进程打包一般用在js文件上面,那么有两个loader对js文件进行处理:
- eslint-loader:只是对代码进行语法检查,消耗时间可能不是很长
- babel-loader:要进行编译,转换,所以时间比较长,所以用在babel-loader里面