webpack是一种JavaScript应用模块化打包工具,它配置起来简单易上手,因此很多企业工程化代码都使用它来打包。在具体介绍如何使用webpack之前,先来介绍下webpack的四个核心概念。

Entry

Entry是webpack的入口,简单来讲,你可以想象成webpack会为JavaScript应用的依赖关系维护一个复杂的图,而entry则是这个图的入口,它会告诉webpack从哪里开始打包你的项目,并且打包什么(where and what)。 
Entry在webpack的配置文件中通过entry属性定义,一个最简单的定义如下:

module.exports = {entry: __dirname+'/index.js'
};

  

__dirname是项目的根目录

Output

通过entry你已经可以开始打包模块化的JavaScript项目,但是webpack还不知道如何打包,例如打包出来的文件如何命名,打包出来的文件放在哪里等等。 
上述问题都通过webpack配置文件的output属性来定义,其语法如下

module.exports = {entry: __dirname+'/index.js',output: {path: __dirname+'/dist',filename: 'bundle.js'}
};

  

webpack在即将开始打包的时候读取上面的配置文件,从根目录下的index.js开始打包,打包出来的文件命名为bundle.js,并将其放在根目录的dist文件夹里。

Loaders

webpack会将JavaScript项目里的文件全部视为模块(module),但是webpack自身只能识别js,因此不同的文件(.css, .html, .styl, .jpeg, etc.)需要不同的解析器。Loaders在webpack中的作用就是将JavaScript项目中的不同文件解析成模块,以便于不同文件能够在项目中统一处理。 
loaders在webpack配置文件中语法规则如下:

const config = {entry: __dirname+'/index.js',output: {path: __dirname+'/dist',filename: 'bundle.js'},module: {rules: [{test: /\.css$/, use: 'css-loader'}]}
};module.exports = config;

  

在上面的配置文件中我们定义了rules属性,它有两个子属性.test和.use。值得一提的是,当你定义rules的时候,必须定义在module.rules下面而非直接定义rules,否则webpack的语法检查会报错。 
新增的rules规则告诉了编译程序,当碰到以.css结尾的文件并且是通过require或者import引入的时候,首先使用css-loader对文件进行解析,之后将解析完成的文件视为标准化模块统一处理。

  • *-loader需要先安装才可使用
  • 此处loaders语法规则为webpack2.+的语法规则,老版本的语法规则不同。

Plugins

配置了以上三个属性之后,webpack已经可以对简单项目进行正常打包了。但是对于打包过程中的不同需求,webpack提供了Plugins功能,它可以满足很多个性化需求。例如,我想要对webpack打包的文件进行压缩,那么可以引入具有压缩功能的插件,代码如下。

onst webpack = require('webpack'); const config = {entry: __dirname+'/index.js',output: {path: __dirname+'/dist',filename: 'bundle.js'},module: {rules: [{test: /\.css$/, use: 'css-loader'}]},plugins: [new webpack.optimize.UglifyJsPlugin()  ]
};module.exports = config;

  为了使用相应的插件,我们需要现将插件进行require,由于压缩是webpack内部的插件因此直接require就可以,如果是一些第三方插件,需要先安装,安装之后再通过require引入。

转载于:https://www.cnblogs.com/caonima-666/p/7054002.html

webpack2入门概念相关推荐

  1. C功底挑战Java菜鸟入门概念干货(一)

    一.认识Java 1.Java 程序比较特殊,它必须先经过编译,然后再利用解释的方式来运行.  2.Byte-codes 最大的好处是--可越平台运行,可让"一次编写,处处运行"成 ...

  2. CCNA-第一篇-基础入门概念

    ** 基础入门概念 **前言 没有什么学习是简单的.任何东西,包括你打游戏(除非是弱智的单机游戏)搞IT,一个月熬熬夜 月薪过X-W的大有人在,早9晚5一个月3K,自己选择.所以看你怎么学,每个人都很 ...

  3. 大数据入门概念及应用场景

    参考内容: [知乎]深入浅出大数据:到底什么是Hadoop? [知乎]五万字 | Hive知识体系保姆级教程​ 大数据入门概念及应用场景 一.入门概念 1.1 大数据的4V 1.2 大数据处理的最佳工 ...

  4. 一、 网络安全基础入门-概念名词

    目录 网络安全学习(2022.10.23) 一.基础入门--概念名词 DNS 脚本语言 后门(2022.11.06) WEB WEB相关安全漏洞 演示案例 网络安全学习(2022.10.23) 一.基 ...

  5. python中pyplot是什么意思_pyplot 入门概念小结

    pyplot 入门概念小结 知乎的markdown支持实在是太差了,我就不在这里一个一个代码显示样式了,详情看我在简书发的文章.也希望高手指点一下怎么在知乎里面用好Markdown.也可以移步我的微信 ...

  6. 对计算机文件概念的理解,入门概念之三: 什么是文件 - 电脑知识学习网

    入门概念之三: 什么是文件 12-05  电脑知识学习网   来源: 网络 文件在我们在电脑学习中用得最多的一个词.  那什么是文件呢? 文件是如何保存在电脑中的? 文件有那些类型? 文件有那些属性? ...

  7. 大白话ElasticSearch入门概念,看不懂找我!

    点击上方蓝色"胖滚猪学编程",选择"设为星标" 跟着胖滚猪学编程!好玩!有趣! 这是胖滚猪ES系列博文第三篇,大白话ElasticSearch入门概念. 阅读本 ...

  8. java web入门——概念理解、名词解释

    引言:当你想入门java web后,一定会查阅到很多相关的名词:Servlet,HTML,Spring...等等之类的,但是对于他们之间的关系总是比较混乱的,这篇文章就是理清这些名词的关系. 什么是w ...

  9. 8002.ros2入门概念

    2 ros2 入门基本概念 # 创客智造网站. https://www.ncnynl.com/archives/201801/2251.html 基本概念: ROS是一个用于在不同进程间匿名的发布.订 ...

最新文章

  1. FreeRTOS 临界段和开关中断
  2. 145.单工、半单工、双工
  3. while((ch=getchar())!=EOFch != '\n');消除非法输入
  4. 音视频技术开发周刊 | 152
  5. Oracle入门(六)之用户操作
  6. LeetCode 966. 元音拼写检查器(哈希)
  7. 三步教你解决Invalid bound statement (not found): com.xxx.dao.xxxDao.selectByxx错误!!!!很简单
  8. python使用pkg包_Python deb-pkg-tools包_程序模块 - PyPI - Python中文网
  9. 2019级C语言大作业 - BrickMansions
  10. PDF背景怎么添加,如何修改PDF背景
  11. 解决ubuntu进行远程连接时出现密码认证失败的问题
  12. Atitit uuid 的概念与实现与最佳实践总结 目录 1. 概念与组成 1 1.1. 在空间(Space)与时间(Time)上的唯一性 1 1.2. UUID 1 1.3. 组成 2 1.3.1
  13. Notepad++使用SQL格式化插件
  14. 从空空狐谈信用卡套利
  15. Python股市数据分析教程——学会它,或可以实现半“智能”炒股 (Part 2)
  16. 2018最新4K Ultra HD/UHD视频剪辑/特效合成/调色图形工作站硬件配置
  17. Unirech:阿里云国际版怎么获得免费试用的机会以及注册流程
  18. 视频的帧率和分辨率以及码率的关系
  19. vue H5页面制作微信公众号前期准备
  20. NT151应用案例:西门子PLC S7-1200与派克ACR9000的通信(Part 2)

热门文章

  1. STM32CubeIDE教程-现场表达式切换数字进制表示
  2. python ssd目标检测_解读目标检测之SSD:Single Shot MultiBox Detector
  3. 用户登录色一句java_用户权限及角色
  4. python 正则表达式判断字符串是否为回文_JS使用栈判断给定字符串是否是回文算法示例...
  5. Linux笔记-bash中执行命令并将执行的命令结果存储为变量
  6. Qt文档阅读笔记-QScopedPointer解析及实例
  7. QML笔记-自定义控件的2种点击方式(推荐第二种)
  8. C++工作笔记-VS中“调用堆栈”窗口的使用,实现越界的快速定位
  9. Qt工作笔记-Windows上界面滑动效果
  10. C++工作笔记-对二级指针的进一步理解(函数的参数使用二级指针,从而操作原数据)