webpack学习笔记(阮一峰教程demo)

2023-11-05 09:48

本文主要是介绍webpack学习笔记(阮一峰教程demo),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学习webpack,直接观看代码理解。将自己的理解过程记录下来,后续若有不同理解,再来修改。

献上阮一峰老师的webpack教程地址: webpack

将整个demo完整的clone下来,用vscode导入整个文件夹之后,发现也只有15个demo而已,小case,so easy,开撸。

Demo01: Entry file

组织架构如图,

demo01

bundle.js为自动生成,package.json为配置文件,也不用管。

所以只需要关心三个类型的三个文件,即index.html,main.js,webpack.config.js,见名知意,第一个是html文件,里面加载进去js文件即可;main.js里面包含你想做的事情,demo中打印一句话;剩下的webpack.config.js就是整个webpack工程的配置文件了。

module.exports = {

  entry: './main.js',

  output: {

    filename: './bundle.js'

  }

};

entry是入口,output是输出生成的bundle文件对应关系。

运行   cd  demo01,然后npm run dev即可

Demo02: Multiple entry files

首先运行起来看一眼区别,cd demo02, 然后npm run dev走你。

demo02-1

如图,demo02只是比demo01多打印了一句话而已。

直接看index.html文件,

demo02-2

如图,demo02只是多加载进来一个js文件而已,打开看看两个JS文件,里面分别只有一句打印一句话的代码而已。略过不提。

package.json文件依旧不管,两个bundle.js文件也不管,两个main.js文件简单的一句话也看过了,那就剩下webpack的配置文件了。代码先粘出来,

module.exports = {

  entry: {     //  入口

    bundle1: './main1.js',    //  第一个JS文件

    bundle2: './main2.js'    //  第二个JS文件

  },

  output: {

    filename: '[name].js'    //   输出文件命名

  }

};

如图可见,在entry里,不再像demo01中那样只有入口文件名,而是两组key-value,value的值都是我们的JS文件名字(带有相对路径),那么,key,我们猜想就是对应生成的bundle文件名了吧。

再看下方的output输出对应关系,filename的值为 [name].js,那么这个name应该就是一个变量,对应的是entry中的key。既然这样,那我们来验证一下。

添加第三个JS文件,main3.js,也随便打印一句话。然后再配置文件中加入配置:

module.exports = {

  entry: {     //  入口

    bundle1: './main1.js',    //  第一个JS文件

    bundle2: './main2.js',    //  第二个JS文件

    bundle3: './main3.js'     //    添加的第三个文件

   },

  output: {

    filename: '[name].js'    //   输出文件命名

  }

};

然后在html文件中引入加载我们生成对应的bundle3.js文件,如图

demo02-3

OK,添加完毕,编译,运行。

编译:npm build    运行:npm run dev,

demo02-4

   搞定,猜想正确。

Demo03: Babel-loader 

先上结构图:

demo03-1

有没有发现JS文件不见了,而多了一个JSX文件(不知道的请百度),有点意思,看看介绍怎么说。

加载器是预处理器,它可以在Webpack的构建过程之前转换你的应用程序的资源文件(更多信息)。

例如,Babel-loader可以JSX / ES6文件转换成标准JS文件,之后Webpack将开始构建这些JS文件。Webpack的官方文档有一个完整的加载器列表。

main.jsx 是一个JSX文件。

先来看几个文件的内容代码:

demo03-2

demo03-3

demo03-4

上面的代码片段使用了Babel-loader加载器,它需要Babel的预设插件Babel -preset-es2015和Babel -preset-react 转换编译es2015和react。

图2这是react 的写法,先引入需要的react和react-dom,然后在render中把指定的内容,显示在ID为wrapper的控件上。

Demo04: CSS-loader 

Webpack允许你在JS文件中包含CSS,然后用CSS-loader来预处理CSS文件。

main.js只有一句话

require('./app.css');

app.css

body {

background-color:blue;

}

demo04-1

demo04-2

注意,您必须使用两个加载器来转换CSS文件。首先是CSS-loader来读取CSS文件,另一个是样式加载器将<style>标签插入HTML中。

运行,npm run dev,一切正常。

不过我想改写一下,想把main.js改写成一个JSX文件。一起来试试。

1. 首先改造html,加个带命名ID的控件div。

2. 写个JSX文件,如图main1.jsx。

3. 修改webpack配置文件,添加对应的module.rules。依次如下方图:

 

demo04-03

demo04-04

demo04-05

注意几点:

1. 在html中,如果bundle.js在控件之前引入,会不显示内容。位置不可引错。原因是因为给控件赋值操作其实是编译在bundle.js里面的,因此必须放置控件之后。

2. 在JSX文件中的写法不同于demo03的写法,要注意。



作者:陈大冲
链接:https://www.jianshu.com/p/080e18fcf0e3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

这篇关于webpack学习笔记(阮一峰教程demo)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/349016

相关文章

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实