一、webpack是什么?

web开发中常用到的静态资源主要有JavaScript、CSS、图片、Jade等文件,webpack中将静态资源文件称之为模块。webpack是一个模块打包工具(命令行工具),其可以兼容多种js书写规范,且可以处理模块间的依赖关系,具有更强大的js模块化的功能。 官方网站中用下图清晰的描述了webpack采用不同的loader加载不同的资源文件,打包生成多个js文件,也可以根据设置生成独立的图片、css文件等。

二、为什么使用 webpack?

在以往的开发过程中,经常会遇到以下三种情况:

  1. 项目中资源多样性和依赖性 - js、css、png、less、jade等 为了方便开发,我们经常会使用不同的语法来编写文档,用less、sass、jade等会提高开发效率,但同时我们需要借助gulp或grunt来编写任务编译文件或对图片进行压缩等。
  2. js模块规范复杂化 - AMD、CommonJS、UMD、ES6等 requireJS主要用来处理AMD规范的js文件,若使用CommonJS规范的js库文件,需进行AMD规范的封装,才能正常使用。而browserify主要处理CommonJS规范的文件,其他规范也需要进行转化。近期ES6的兴起,前面两种打包工具已经不能满足我们的需求了。
  3. 开发与线上文件不一致性(打包压缩造成影响)

webpack可以很好地解决上面的问题,它具有Grunt、Gulp对于静态资源自动化构建的能力,是一个出色的前端自动化构建工具模块化工具资源管理工具

三、webpack 特性

webpack具有requireJs和browserify的功能,但仍有很多自己的新特性:

1. 对 CommonJS 、 AMD 、ES6的语法做了兼容
2. 对js、css、图片等资源文件都支持打包
3. 串联式模块加载器以及插件机制,让其具有更好的灵活性和扩展性,例如提供对CoffeeScript、ES6的支持
4. 有独立的配置文件webpack.config.js
5. 可以将代码切割成不同的chunk,实现按需加载,降低了初始化时间
6. 支持 SourceUrls 和 SourceMaps,易于调试
7. 具有强大的Plugin接口,大多是内部插件,使用起来比较灵活
8.webpack 使用异步 IO 并具有多级缓存。这使得 webpack 很快且在增量编译上更加快

最新文章

  1. 使用mybatis-generator生成代码
  2. Windows下pry安装和配置
  3. Codeforces #256 Div.2
  4. Apache-Tika解析JPEG文档
  5. 解决Qt5.7.0 cannot find -lGL
  6. VS2010旗舰版安装图解
  7. APNs功能之Node.js和Mysql应用总结
  8. wpf中xps文档合并功能实现
  9. runat="server"
  10. 分布式缓存技术memcached学习系列(四)—— 一致性hash算法原理
  11. NOSQL基础概念
  12. 原创: rsync软件服务利用ansible实现一键化部署
  13. 使用netstat检测及监测网络连接
  14. java.lang.SecurityException: Can't make field constructor accessible
  15. Windows 查找txt后缀 文件复制
  16. 磁盘缓存--YYCache 设计思路
  17. shell脚本 快照还原Hbase数据库
  18. 微信小程序如何实现和微信客服通话?
  19. 一个用于分页的page类
  20. Perl文件名通配和文件查找

热门文章

  1. MySQL的库表详细操作
  2. java 关于String
  3. 【树形DP】洛谷1122_最大子树和
  4. 清华大学《C++语言程序设计基础》线上课程笔记03---数据的共享和保护&数组
  5. My First
  6. 5.18-笨办法学python-习题14
  7. PL/SQL轻量版(四)——存储函数/存储过程与触发器
  8. 20155214曾士轩 2016-2017-2 《Java程序设计》第1周学习总结
  9. day1 创建X00001文件1K
  10. CF833D Red-Black Cobweb