俗话说得好,好记性不如烂笔头。

之前就在学习中看过webpack的教程,然而一段时间没用,火速的忘光了。写这篇博文,做个总结,也让自己以后有个地方回顾。

看webpack之前,我先去看了一下官方文档,先了解一下webpack的几个概念。我是中英文文档搀着看的,一些小地方中文文档里没写,英文文档里都给了小提示。(下面的概念是我自己翻译总计的,略渣)

  • concepts

At its core, webpack is a static module bundler for modern JavaScript applications. When webpack processes your application, it internally builds a dependency graph which maps every module your project needs and generates one or more bundles.

本质上,webpack是一个为现代JavaScript应用服务静态模块打包器。当webpack处理你的程序时,它实际上是在内部生成了一个指向所有你的项目所需要的模块的依赖图,然后生成一个或多个bundle。


  • 四大基本概念

entry point 显示了webpack应当使用哪个模块去开始他的附加依赖关系图。entry默认值为 ./src/index.js,也可以自定义设置。

webpack.config.js

module.exports = {
entry:'./js/main.js'
}

output属性会告诉webpack从哪里输出它创建的bundles以及怎样命名那些文件。output主输出文件默认值为./dist/main.js,其他打包生成的文件默认值为./dist。output也可被自定义设置。

webpack.config.js

const path = require('path');

module.exports = {
output:{
path:"path.join(__dirname,'dist')",
filenames:'bundle.js'
}
}

webpack自身只能解析JavaScript和JSON文件。Loader允许它去处理其他类型的文件,并将这些文件转化成你的程序可使用的模块然后添加到依赖图里去。

要注意的是,webpack的一个典型特征是能够import其他类型的文件,例如.css文件,这可能不背其他打包器或task runner所支持。但是我们认为,对于能够让开发者构建一个更加精确的依赖图来说,这些语言的扩展是很有必要的。

在webpack配置中,loader有两大属性:

  1. test 属性表示需要被转换的文件类型
  2. use属性表示转换这些文件需要被使用的loader

注意:

  1. loader的定义应当被定义在module.rules而不是rules下,test和use是两个必需定义的属性
  2. 当用正则表达式匹配文件时,最好不要加引号。例如:/.css/会告诉webpack去匹配所有以.css结尾的文件,而'/.css/'或"/.css/"只会匹配唯一一个以'.css'命名的文件。

webpack.config.js

const path = require('path');

module.exports = {
module:{
rules:[
{test:/\.css/,use:['style-loader','css-loader']}
]
}
}

loaders被用来转换某些特定类型的模块,plugins可以用来实现更广范围的任务执行例如文件的打包优化、文件管理和环境变量的注入等。

使用plugins时,你需要先require('plugins-name') 然后再将它加入到plugins数组中去。大多数plugins都是可以通过options选项定义的。你可以定义一个对象去接受它,然后通过new去多次使用。

webpack.config.js

const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack'); module.exports = {
//该插件会生成一个以index.html为模板,并自动链接所有打包文件的HTML
plugins:[
new HtmlWebpackPlugin({template:'./src/index.html'})
]
}

设置mode变量可以让webpack的打包更好的适用于各个不同的环境。默认值为production,可选的值有development、production和none。

module.exports = {
mode:"production"
}

webpack兼容所有支持ES5的浏览器(IE8及其以下不支持)。webpack需要使用promise去import()和require.ensure()。如果你想要支持低版本的浏览器,需要下载polyfill。

webpack需要在8.x或更高的node环境下运行。

下篇开始webpack的使用。前端小白webpack学习(二)

前端小白webpack学习(一)的更多相关文章

  1. 前端小白webpack学习(二)

    前一篇写了自我总结的webpack定义:为JavaScript服务的静态模块打包器 和几大基本概念 entry.output.plugins.loaders等.指路前端小白webpack学习(一) 下 ...

  2. 前端小白webpack学习(四)

    .less文件与.scss文件使用与.css文件相仿 less-loader使用需要借助less插件,终端输入npm i less less-loader -D安装; sass-loader使用需要借 ...

  3. 前端小白webpack学习(三)

    不写不知道,一写发现自己真是罗里吧嗦,尽量改进 之前写了webpack的主要概念和一些使用,今天再记一下webpack的plugins和loaders的使用 7.webpack plugins使用 例 ...

  4. 前端小白的学习之路html与css的较量【二】

    标签的划分 块级元素 独占一行 设置 宽 高可以起作用 排列方式: 上下排列 行内元素 可以共占一行 设置 宽 高 不起作用,大小由内容决定 排列方式:左右排列 行内块 可以共占一行 可以设置宽 高 ...

  5. 前端小白的学习之路html与css的较量【一】

    html和css的较量 web结构的组成 html标签规则 快速生成一个html html的基本结构 标签的关系 标签 标题标签 段落 图片 超链接 a 属性 a标签里面的值 字符实体 新增的标签 1 ...

  6. webpack前端构建工具学习总结(一)之webpack安装、创建项目

    npm是随nodeJs安装包一起安装的包管理工具,能解决NodeJS代码部署上的很多问题: 常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器 ...

  7. webpack前端构建工具学习总结(二)之loader的使用

    Webpack 本身只能处理 JavaScript 模块,如果要处理其他类型的文件,就需要使用 loader 进行转换. Loader 可以理解为是模块和资源的转换器,它本身是一个函数,接受源文件作为 ...

  8. webpack前端构建工具学习总结(四)之自动化生成项目中的html页面

    接续上文:webpack前端构建工具学习总结(三)之webpack.config.js配置文件 插件的介绍文档:https://www.npmjs.com/package/html-webpack-p ...

  9. 【原】webpack学习笔记

    之前在react的项目中有用过webpack,不过没有认真的去研究,这段时间又重新好好的学习一下webpack,发觉 webpack是一个很强大的东西.而且很好用,方便,接下来主要是做一下学习的笔记 ...

随机推荐

  1. Vue项目中实现用户登录及token验证

    学习博客:https://www.cnblogs.com/web-record/p/9876916.html

  2. 在 ASP.NET Core 中使用 FluentValidation 进行验证

    目录 从 NuGet 安装 FluentValidation 争对 Resource类 建立 FluentValidation 在Startup中对写好的验证进行注册 从 NuGet 安装 Fluen ...

  3. 4. abp中的asp.net core模块剖析

    相关模块 AbpAspNetCoreModule AbpAspNetCoreMvcModule AbpAspNetCoreMvcContractsModule abp通过这三个模块加载并配置了 asp ...

  4. 分布式事务之解决方案(XA和2PC)

    3. 分布式事务解决方案之2PC(两阶段提交) 针对不同的分布式场景业界常见的解决方案有2PC.TCC.可靠消息最终一致性.最大努力通知这几种. 3.1. 什么是2PC 2PC即两阶段提交协议,是将整 ...

  5. js简单动画:匀速动画、缓动动画、多物体动画以及透明度动画

    主要实现以下几种简单的动画效果(其实原理基本相同): 1.匀速动画:物体的速度固定 2.缓动动画:物体速度逐渐变慢 3.多物体动画 4.透明度动画 效果实现: 1.匀速动画(以物体左右匀速运动为例) ...

  6. VMware Workstation 15 Pro中安装ubuntu1804

    这篇笔记是一篇安装教程,没有什么实际的意义,仅为了记录一下……距离上次弄这东西不知道多长时间了,以至于这次再次使用时很是生疏,于是就想着把过程记录下来方便之后查看. 这里不涉及VMware Works ...

  7. NGUI 源码分析- UIWidgetInspector

    NGUI Version 3.9.0 //---------------------------------------------- // NGUI: Next-Gen UI kit // Copy ...

  8. webpack 配置babel-loader babel7

    babel 7版本配置 在webpack中 默认只能处理部分 ES6的新语法,一些更高级的ES6或ES7的语法,webpack是处理不了的这个时候就需要借助第三方的loader 来帮助webpack ...

  9. AI行业精选日报_人工智能(12·18)

    百度Apollo升级自动驾驶平台,发布车路协同.智能车联两大平台 12 月 18 日消息,Apollo 发布了全球首个点到点城市自动驾驶开放能力.自动驾驶云.新一代智能交通解决方案.小度车载 2020 ...

  10. Graylog 环境搭建与使用

    graylog 官网地址: www.graylog.org graylog 简易架构图: graylog 生产架构图: graylog 有两个版本,1.企业版:2.开源版 下面使用开源版本搭建日志中心 ...