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

之前就在学习中看过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. JMeter之SteppingShape

    1.背景 其实是这样的,最近包括以前都有同事问过宝路一个问题:JMeter测试计划中涉及到梯度压测时,整个测试计划执行完毕,聚合报告看的是整体的结果啊!并不能直观看到每个梯度下的吞吐量的值(虽然可以通 ...

  2. 深入理解Linux的I/O复用之epoll机制

    0.概述 通过本篇文章将了解到以下内容: I/O复用的定义和产生背景 Linux系统的I/O复用工具演进 epoll设计的基本构成 epoll高性能的底层实现 epoll的ET模式和LT模式 epol ...

  3. 9月最新184道阿里、百度、腾讯、头条Java面试题合集

    阿里面试题 1. 如何实现一个高效的单向链表逆序输出? 2. 已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点后10位 3. 给定一个二叉搜索树(BST),找到树中第 ...

  4. leetcode-算法系列-两数之和

    本系列的题目都是出自于"leetcode" 用博客记录是为了加强自己的记忆与理解,也希望能和大家交流更好更优的解题思路. 题目: 给定一个整数数组和一个目标值,找出数组中和为目标值 ...

  5. 《Java基础知识》Java技术总结

    1. Java 知识点总结 Java标示符.保留字和数制:https://www.cnblogs.com/jssj/p/11114041.html Java数据类型以及变量的定义:https://ww ...

  6. GHOST CMS - 创建自定义主页 Creating a custom home page

    创建自定义主页 Creating a custom home page 为你的网站创建一个自定义的主页是一个让你从人群中脱颖而出的好方法,并把你自己独特的印记存放在你的网上.本教程向您展示了如何在Gh ...

  7. Provider模式应用demo

    参考ObjectPool对象池设计原理还原一个简易的Provider模式. using System; using System.Dynamic; using System.Reflection.Me ...

  8. 比较typeof与instanceof

    相同点: JavaScript中typeof和instanceof常用来判断一个变量是否为空,或者是什么类型的. 不同点: typeof的定义和用法: 返回值是一个字符串,用来说明变量的数据类型. 细 ...

  9. 使用Power BI Desktop 制作并发布到Power BI 服务,使用Power BI Mobile查询报表

    上节内容中,我们介绍了Power BI的基本概念,本节我们分享以下一个简单报表从使用Power BI Desktop制作,到发布到Power BI 服务,到从Power BI Mobile上查阅报表的 ...

  10. C#mvc重新定向并在路径中使用html扩展名实现伪静态

    首先修改配置文件,增加下面的两个配置: 接下来,修改MapRoute为路由增加.html后缀 完成后,我们来验证一下刚才的成果: http://localhost:2279/Home/.html 一个 ...