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引入。

webpack2入门概念的更多相关文章

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

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

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

    (接上篇博文:C功底挑战Java菜鸟入门概念干货(一)) 一.Java面向对象程序设计-类的基本形式 1.“类”是把事物的数据与相关的功能封装在一起,形成的一种特殊结构,用以表达对真实世界的一种抽象概 ...

  3. java入门概念梳理总结

    Java入门学习 简介 public class HelloWorld { public static void main(String []args) { System.out.println(&q ...

  4. 【2016-10-31】【坚持学习】【Day16】【MongoDB】【入门 -概念】

    MongoDB 概念解析 不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档.集合.数据库,下面我们挨个介绍. 下表将帮助您更容易理解Mongo中的一些概念: SQL术 ...

  5. Spring AOP入门——概念和注意事项

    AOP什么? AOP在功能方面,它是之前和之后运行一些业务逻辑,一些操作(比方记录日志.或者是推断是否有权限等),这些操作的加入.全然不耦合于原来的业务逻辑.从而对原有业务逻辑全然是透明. 也就是说. ...

  6. maven入门概念及使用

    Maven 一.Maven概念 1.maven是什么:Maven 是一个项目管理工具.它负责管理项目开发过程中的几乎所有的东西. 版本.构建.输出物管理.依赖关系.文档和构建结果.项目关系.移植性管理 ...

  7. 转 Kubernetes 入门 概念理解

    你闺女也能看懂的插画版Kubernetes指南 原创  2016-06-30 作者 周小璐 译 编者按:Matt Butcher是Deis的平台架构师,热爱哲学,咖啡和精雕细琢的代码.有一天女儿走进书 ...

  8. DICOM中的入门概念

    DICOM标准是医学影像界技术人员逃不掉的标准.本系列专题是JATI对DICOM标准的阐述,力图使PACS管理员和软件工程师都能理解. DICOM标准的提出者DICOM标准委员会是ISO组织的合作者. ...

  9. Webpack2入门

    webpack 2 将在其文档完成之后正式发布.但这并不意味着不可以开始使用它,如果你知道怎么配置的话. 什么是 Webpack? 简单来说,Webpack 就是一个针对 JavaScript 代码的 ...

随机推荐

  1. sql选择

    关系型数据库遵循ACID规则 1.A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整 ...

  2. Java位运算原理及使用讲解

    前言日常开发中位运算不是很常用,但是巧妙的使用位运算可以大量减少运行开销,优化算法.举个例子,翻转操作比较常见,比如初始值为1,操作一次变为0,再操作一次变为1.可能的做法是使用三木运算符,判断原始值 ...

  3. 011_TCP专项研究监控

    (1)In Segs 数据源: /proc/net/snmp; 采集方式:累计值,每10秒采集一次取差值: 指标:net.snmp.tcp (key: system); In Segs: tcp协议层 ...

  4. go语言实现生产者-消费者

    前言: 之前在学习操作系统的时候,就知道生产者-消费者,但是概念是模模糊糊的,好像是一直没搞明白. 其实很简单嘛,生产者生产,消费者进行消费,就是如此简单.了解了一下go语言的goroute,感觉实现 ...

  5. 实验1:C++简单程序设计(1)

    实验目的 1. 掌握c++中类c部分的编程知识: 数据类型,常量,变量,运算符,表达式,分支结构,循环结构 2. 掌握C++中数据输入和输出的基本方法 3. 熟练使用c++程序开发环境,掌握c++程序 ...

  6. Image Pipeline

    Image Pipeline Scrapy 提供了专门下载文件或者图片的Pipeline,下载图片与文件的原理同抓取网页的原理是一样的,所以他们的下载过程支持多线程与异步,十分的高效 Image Pi ...

  7. vue轮播图中间大两头小

    <template> <div v-if="items.length" class="full-page-slide-wrapper"> ...

  8. GraphQL 01--- GraphQL 介绍及资源总结

    作为一位web开发人员,在使用REST API的时候,是否遇到过这样的问题: 1.调用一个API的时候,总是会返回一些不需要的信息. 2. 对于一个资源的调用,如果想获取到更多的信息,可能需要发送多次 ...

  9. webDriver基本运用

    import time from selenium import webdriver import unittest import HTMLTestRunner # webDriver基本应用 cla ...

  10. struts2-第二章-拦截器

    一,回顾 (1)默认action,404问题;<default-action-ref name="action 名称"/> (2)模块化,package,struts. ...