发布时间:2024-11-09 16:01
现如今前端打包工具最火的无疑是vite!但是vite也不是凭空产生的,而是踩着前人肩膀发展起来的。所以在学习vite之前,有必要了解前端打包工具发展史。
每一次前端打包工具迭代发展的动力来源于:随着前端的发展,当前的工具无法满足前端的需求。我根据几次前端打包遇到的重大的问题对前端发展史进行划分:
接下来我将对每个阶段进行讲解
2009年之前,前端刚发展,市面上没有一个为前端开发设计的打包工具。所以这个阶段问题,需求,解决办法:
每个阶段的痛点都为新一代打包工具产生提供了方向。
为什么这个阶段的开始节点是2009年?
因为,nodejs诞生了,这也意味着前端不在学习需要后端语言就可以操作文件了!
这个阶段代表工具有:Grunt,Gulp等
Grunt可以说是一个任务执行器,为什么这么说,看例子:
// Gruntfile.js
grunt.initConfig({
jshint: {...}, watch: {files, tasks: [\'jshint\']}
})
grunt.loadNpmTasks(\'grunt-contrib-jshint\');
grunt.loadNpmTasks(\'grunt-contrib-qunit);
grunt.loadNpmTasks(\'grunt-contrib-concat\');
grunt.loadNpmTasks(\'grunt-contrib-uglify\');
grunt.loadNpmTasks(\'grunt-contrib-watch\');
grunt.registerTask(\'default\', [\'jshint\', \'qunit\', \'concat\', \'uglify\']);
// 在命令行运行 grunt 命令,就会触发 default 任务
grunt语句是由任务任务构成的,操作对象是文件。每个任务官方都定义好了。他有这些特点:
Gulp是另一个任务执行器,他主要针对Grunt问题做了改进:
// gulpfile.js
const clean = ()=> {...}
const css = ()=> gulp.src(\'scss/**/*.scss\').pipe(sass())...
const jslint = ()=> gulp.src(\'js/**/*\').pipe(...
const minify = ()=> gulp.src(\'js/**/*\').pipe(...
const watch = ()=> {
gulp.watch(\"scss/**/*\", css)
gulp.watch(\"js/**/*\", gulp.series(jslint, minify))
}
const js = gulp.series(jslint, minify)
const build = gulp.series(clean, gulp.parallel(css, js))
exports.css = css
exports.js = js
exports.default = build
2014年Webpack发布,这是专门为前端设计开发的打包工具。它有这些特点:
vite是面向下一代的前端构建工具,他有接下来的特点:
至于怎么使用vite,如何开发vite插件,关注我接下来的教程