什么是webpack以及为什么使用它

新建 模板 小书匠 

在ES6之前,我们要想进行模块化开发,就必须借助于其他的工具。因为开发时用的是高级语法开发,效率非常高,但很可惜的是,浏览器未必会支持或认识这些语法,此时需要使用打包工具进行转化变换,并处理好各模块间的依赖关系,最后将其进行整合打包。

webpack就是其中一个佼佼者,其核心在于让我们可能进行模块化开发,并且会帮助我们处理模块间的依赖关系。不仅仅是JavaScript文件,我们的CSS、图片、json文件等等在webpack中都可以被当做模块来使用(在后续我们会看到),这就是webpack中模块化的概念。

如果不进行资源打包,所以我们就要处理各种js的引用依赖关系,即导入顺序。

打包

就是将webpack中的各种资源模块进行打包合并成一个或多个包(Bundle)。在打包的过程中,还可以对资源进行处理,比如压缩图片,将scss转成css,将ES6语法转成ES5语法,将TypeScript转成JavaScript等等操作,接着我们只要处理最后那个js文件即可。

口但是打包的操作似乎grunt/gulp也可以帮助我们完成,它们有什么不同呢?

grunt/gulp的核心是Task

口我们可以配置一系列的task,并且定义task要处理的事务(例如ES6、ts转化,图片压缩,scss转成css)

口之后让grunt/gulp来依次执行这些task,而且让整个流程自动化。

口所以grunt/gulp也被称为前端自动化任务管理工具。

一些打包的流程有代码转化,代码合并,代码压缩,它涉及的流程与蛋糕烹饪相似。有些蛋糕原料我们是可以直接食用的,但是有些原料是需要转化【代码转化】,如稻谷变成面粉。面粉要和鸡蛋,奶油还有糖搅拌均匀【代码合并】,然后经过微波炉烘焙【代码压缩简化】才能食用。

当然,虽然烹饪工具的不同,最终都能烹饪出蛋糕。但是不同的工具,其烹饪速度是不同的。有的工具,它只能解决一小半部分流程,而有的工具一键傻瓜式操作。

grunt是单线程处理,一次只能对一个流程进行控制;

gulp是多线程处理,一次能处理多个步骤。

webpack是一键傻瓜式处理。

■下面的task就是将src下面的所有js文件转成ES5的语法,并且最终输出到dist文件夹中。

const gulp=require('gulp');
const babe1=require('gulp-babel');
gulp. task(' js',()=>
gulp. src(' src/*. js')
.pipe(babe1({
presets:[' es2015']
}))
.pipe(gulp. dest(' dist'))
);

什么时候用grunt/gulp呢?

如果你的工程模块依赖非常简单,甚至是没有用到模块化的概念。

只需要进行简单的合并、压缩,就用grunt/gulp即可。

但是如果整个项目使用了模块化管理,而且相互依赖非常强,我们就可以使用更加强大的webpack了。

什么是webpack以及为什么使用它的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. webpack之傻瓜式教程

    接触webpack也有挺长一段时间了,公司的项目也是一直用着webpack在打包处理,但前几天在教新人的情况下,遇到了一个问题,那就是:尽管网上的webpack教程满天飞,但是却很难找到一个能让新人快 ...

  3. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

  4. Webstorm+Webpack+echarts构建个性化定制的数据可视化图表&&两个echarts详细教程(柱状图,南丁格尔图)

    Webstorm+Webpack+echarts   ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(I ...

  5. 使用webstorm+webpack构建简单入门级“HelloWorld”的应用&&引用jquery来实现alert

    使用webstorm+webpack构建简单入门级"HelloWorld"的应用&&构建使用jquery来实现 1.首先你自己把webstorm安装完成. 请参考这 ...

  6. webpack入门教程之Hello webpack(一)

    webpack入门教程系列为官网Tutorials的个人译文,旨在给予想要学习webpack的小伙伴一个另外的途径.如有不当之处,请大家指出. 看完入门教程系列后,你将会学习到如下内容: 1.如何安装 ...

  7. webpack的使用

    1.webpack是什么? 打包前端项目的工具(为项目提高逼格的东西). 2.webpack的基本命令 webpack#最基本的启动webpack命令 webpack-w #提供watch方法,实时进 ...

  8. Webpack 配置摘要

    open-browser-webpack-plugin 自动打开浏览器 html-webpack-plugin 通过 JS 生成 HTML webpack.optimize.UglifyJsPlugi ...

  9. Vue + Webpack + Vue-loader 系列教程(2)相关配置篇

    原文地址:https://lvyongbo.gitbooks.io/vue-loader/content/ 使用预处理器 在 Webpack 中,所有的预处理器需要和一个相应的加载器一同使用.vue- ...

  10. Vue + Webpack + Vue-loader 系列教程(1)功能介绍篇

    原文地址:https://lvyongbo.gitbooks.io/vue-loader/content/ Vue-loader 是什么? vue-loader 是一个加载器,能把如下格式的 Vue ...

随机推荐

  1. vs2013在用户控件中添加jquery智能提示

    一.在script文件夹下面添加_references.js文件夹 二.把jquery文件拖到该文件中 保存,重新打开相应的文件,即出现智能提示

  2. Servlet监听器——实现在线登录人数统计小例子

    一.概念 servlet监听器的主要目的是给web应用增加事件处理机制,以便更好的监视和控制web应用的状态变化,从而在后台调用相应处理程序. 二.监听器的类型 1.根据监听对象的类型和范围,分为3类 ...

  3. Delphi 指令符

  4. CentOS7+ 普通用户使用密钥登陆服务器(同时禁用root登陆)

    创建普通用户: # useradd user01 # tail -n2 /etc/passwd chrony:x:998:996::/var/lib/chrony:/sbin/nologin user ...

  5. 003-SaltStack入门篇之远程执行和配置管理

    第一条命令: [root@linux-node1 master]# salt '*' test.ping linux-node2.example.com: True linux-node1.examp ...

  6. 清北学堂提高组突破营游记day6

    还有一天就结束了..QWQ 好快啊. 昨天没讲完的博弈论DP: 一个标准的博弈论dp,一般问的是是否先手赢. 博弈论最关键的问题:dp过程. 对于一个问题,一定有很多状态,每个状态可以转移到其他的一些 ...

  7. pyinstaller 打包工具的使用方法

    pyinstaller的安装 下载后可以输入pip list查看是否安装成功 然后切换到项目的根目录输入 pyinstaller -i favicon.ico -w -c game.py -p Que ...

  8. 一个web应用的诞生(6)

    之前登录注册的功能都已经完成,但是登录成功回到首页发现还是白茫茫的一片,对的,title一直都写得博客,那么最终目的也是写出一个轻博客来,但是,在发表文章之前是不是要先记录一下登录状态呢? 用户登录 ...

  9. CodeForces-721A-One-dimensional Japanese Crossword

    链接: https://vjudge.net/problem/CodeForces-721A 题意: Recently Adaltik discovered japanese crosswords. ...

  10. 树莓派开机自动启动Chomium浏览器并打开指定网页

    树莓派开机自动启动Chomium浏览器并打开指定网页 cd /home/pi/.config mkdir autostart cd autostart vi my.desktop [Desktop E ...