核心概念(四个)

  1. Entry(入口)
  2. Output(出口)
  3. Loaders()来处理其他类型的资源文件
  4. Plugins(插件)

1.入口(Entry)

作用:代码的入口,打包的入口,单个或多个,

示例一:传入文件路径

module.exports = {
entry:' index.js '
}

示例二:传入一个数组,   向entry属性传入[ 文件路径数组 ] 将创建 " 多个主入口(multi-main entry) "

module.exports = {
entry:[ ' index.js ' ,' wendor.js ' ]
}

示例三:传入对象(推荐具体看webpack的API)  ,与前两样不同的是,前两种方式entry指定的是一个属性,也可以是元素对象,entry是一个代码块(tank),使用对象的方式有几个好处:很容易增加一个入口,方便

module.exports = {
entry:{
index: ' index.js '
}
}

2.出口(output)

作用:打包生成的文件(bundle)    一个或多个   自定义规则

在 webpack 中配置 output 属性的最低要求是,将它的值设置为一个对象,包括以下两点:

  • filename 用于输出文件的文件名。
  • 目标输出目录 path 的绝对路径

示例一:最简单的用法 表示 打包后的inde.min.js文件将输出到/home/proj/public/assets目录下

module.exports = {
entry: ' index.js ',
output: {
filename:' index.min.js ' ,
path: '/home/proj/public/assets '
} }

示例二:多个入口起点(如果配置创建了多个单独的"chunk",应该使用占位符来确保每个文件具有唯一的名称)

{
entry: {
app: './src/app.js',
search: './src/search.js'
},
output: {
filename: '[name].js',
path: __dirname + '/dist'
}
} // 写入到硬盘:./dist/app.js, ./dist/search.js

3.Loaders(要定义在module.rules中)

作用:Loader是让webpack处理除了非JS文件(webpack本身只能理解JS文件),loader可以把所有类型的文件转为webpack能够处理的有效模块.

在webpack的配置中loader有两个目标:

  1. test属性,用于标识出应该被对应的 loader 进行转换的某个或某些文件。
  2. use 属性,表示进行转换时,应该使用哪个 loader。

示例一:当webpack编译器遇到在[require()/import语句]被解释为''.txt"的路径,在打包之前要使用[raw-loader]转换一下

const path = require('path');
const config = {
output: {
filename: 'my-first-webpack.bundle.js'
},
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
}
};
module.exports = config;

示例二:因为Loaders是是对模块源码的转换,所以有时候要先安装需要转换的文件,再在module.rules里面设置

Step1:安装对应的loader,例如需要加载CSS文件,typescript文件

npm install --save-dev style-loader
npm install --save-dev css-loader
npm install --save-dev ts-loader

Step2:指示webpack对应遇到文件需要调用一下的loader

module: {
rules: [
{
test: /\.css$/,
use: [
{ loader: 'style-loader' },
{
loader: 'css-loader',
options: {
modules: true
}
}
]
}.
{ test: /\.ts$/, use: 'ts-loader' }
]
}

总结常用的Loader

编译相关:Babel-loader   ts-loader

样式相关:style-loader  css-loader  less-loader   postcss-loader

文件相关:file-loader  url-loader

4.插件( Plugins )

作用:参与打包整个过程 打包优化与压缩 配置编译时的变量  极其灵活,插件目的在于解决loader无法是实现的事

用法:插件可以携带参数/选项,需要在webpack配置种,向plugins属性传入new实例

Step1:安装插件(html-webpack-plugin为例)

npm install html-webpack-plugin

Step2:配置

const HtmlWebpackPlugin = require('html-webpack-plugin'); //通过 npm 安装
const webpack = require('webpack'); //访问内置的插件
const path = require('path'); const config = {
entry: './path/to/my/entry/file.js',
output: {
filename: 'my-first-webpack.bundle.js',
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
use: 'babel-loader'
}
]
},
plugins: [
new webpack.optimize.UglifyJsPlugin(),
new HtmlWebpackPlugin({template: './src/index.html'})
]
}; module.exports = config;

总结常用的插件

优化相关:

    CommonsChunkPlugin  提取不同chunk之间到那时有相同的代码的提取出单独的chunk(代码块)

    UglifyjsWebpackPlugin 压缩代码

功能相关  ExtractTextWebpackPlugin  CSS可以提取出来做一个单独的文件,提取出到打包成单独CSS文件

HtmlWebpackPlugin  用来生成HTML的

HotModuleReplacementPlugin  模块更新的插件

CopyWebpackPlugin    帮助拷贝文件

什么是Chunk? Chunk(打包前)也就是代码块,在webpack中打包会默认把这些代码分成一个个代码块

什么是Bundle?Bundle也就是打包过以后,的代码

什么是Module?loader把一个个文件转化为模块,loaders处理完就是module(模块)

webpack学习2.3webpack核心概念的更多相关文章

  1. webpack的四个核心概念介绍

    前言 webpack 是一个当下最流行的前端资源的模块打包器.当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后 ...

  2. Elasticsearch学习之基本核心概念

    在Elasticsearch中有许多术语和概念 1. 核心概念 Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包 ...

  3. Docker 学习笔记之 核心概念

    Docker核心概念: Docker Daemon Docker Container Docker Registry Docker Client 通过rest API 和Docker Daemon进程 ...

  4. Webpack 一些核心概念了解

    Webpack的几个核心概念 Entry:入口,Webpack执行构建的第一步将从Entry开始,可抽象成输入. Module:模块,在Webpack里一切皆模块,一个模块对应一个文件.Webpack ...

  5. webpack学习(一)起步安装

    起步   webpack 用于编译 JavaScript 模块.一旦完成安装,你就可以通过 webpack 的 CLI 或 API 与其配合交互.如果你还不熟悉 webpack,请阅读核心概念和打包器 ...

  6. ElasticSearch学习笔记-01 简介、安装、配置与核心概念

    一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进 ...

  7. webpack核心概念

    一.webpack四个核心概念 1.入口[Entry] webpack将创建所有应用程序 依赖关系图表.图表的起点被称之为 入口起点.入口起点告诉webpack从哪里开始,并遵循着依赖关系图表知道打包 ...

  8. JAVA入门(1.JAVA平台应用 2.核心概念:JVM,JDK,JRE 3.搭建JAVA开发环境 4.学习JAVA的原则)

    主要内容: 1.JAVA平台应用 2.核心概念:JVM,JDK,JRE 3.搭建JAVA开发环境 4.学习JAVA的原则 JAVA的平台应用 JAVA的平台应用分为3个部分: 一.JAVA SE,主要 ...

  9. 通过核心概念了解webpack工作机制

    webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency gr ...

随机推荐

  1. opencv随笔1

    图像处理技术一般包括图像压缩,增强和复原,匹配 描述和l识别 3 个部分. 图像处理一般指数字图像处理 ( Digitallmage Processing). 其中,数字图像是指用工业相机.摄像机.扫 ...

  2. 手摸手带你认识https涉及的知识,并实现https加密解密,加签解签

    目录 http访问流程 https访问流程 证书 加密/解密 加签/验签 Java实现https 拓展 @ 看完整的代码,直接去完整代码实现,看实现完后会遇到的坑,直接去测试过程中的问题,包括经过代理 ...

  3. [UWP]用Win2D和CompositionAPI实现文字的发光效果,并制作动画

    1. 成果 献祭了周末的晚上,成功召唤出了上面的番茄钟.正当我在感慨"不愧是Shadow大人,这难道就是传说中的五彩斑斓的黑?" "那才不是什么阴影效果,那是发光效果.& ...

  4. linux ftp配置及实操

    一.基础知识: 1.ftp:file transfer protocal 及文件传输协,工作与应用层. 2.ftp协议的实现: 服务器端实现软件:vsftpd,pureftpd,filezilla s ...

  5. mac系统下docker安装配置mysql详细步骤

    上文介绍了MacOS安装Docker傻瓜式教程,安装好后第一件事就决定把本地数据库迁移过来,那么首先就得安装mysql,下面就开始我们的安装之旅吧. 一.docker配置镜像加速器 我们使用docke ...

  6. scrapy实现自动抓取51job并分别保存到redis,mongo和mysql数据库中

    项目简介 利用scrapy抓取51job上的python招聘信息,关键词为“python”,范围:全国 利用redis的set数据类型保存抓取过的url,现实避免重复抓取: 利用脚本实现每隔一段时间, ...

  7. Spring(Bean)2

    <!-- util:list封装的心 --> <bean id="personList2" class="spring.beans.di.collect ...

  8. 为啥HashMap的默认容量是16?

    集合是Java开发日常开发中经常会使用到的,而作为一种典型的K-V结构的数据结构,HashMap对于Java开发者一定不陌生. 在日常开发中,我们经常会像如下方式以下创建一个HashMap: Map& ...

  9. Thinkphp5——数据库表名的大小写问题

    ThinkPHP5中数据库的表名如果是驼峰命名法,会被转换成小写加下划线,解决方法如下: 1.表名全部小写,因为数据库的表名区分大小写的. 2.使用Db::table("表名"), ...

  10. HBase(2) Java 操作 HBase 教程

    目录 一.简介 二.hbase-client 引入 三.连接操作 四.表操作 五.运行测试 FAQ 参考文档 一.简介 在上一篇文章 HBase 基础入门 中,我们已经介绍了 HBase 的一些基本概 ...