Webpack入门基础知识及案例

news2025/1/15 23:31:44

webpack相信大家都已经不陌生了,应用程序的静态模块打包工具。前面我们总结了vue,react入门基础知识,也分别做了vue3的实战小案例,react的实战案例,那么我们如何使用webpack对项目进行模块化打包呢? 话不多说,开始!!

目录

一、熟悉webpack的主要功能

二、Webpack的核心概念

三、使用webpack5搭建脚手架

1.然后执行npm init 进行初始化, npm install webpack webpack-cli

2.在项目src文件夹下新建main.js和 tools>index.js文件

3.打包index.html文件

 4.打包css文件。如果我们想创建一个css呢?

5.如何处理图像资源呢?

 6.babel的转化

 7.处理.vue结尾的文件

 8.如何自动运行打包后的index文件


一、熟悉webpack的主要功能

1. 模块打包:将项目中的所有模块(JavaScript、CSS、图片等)当作一个整体,通过依赖关系将它们打包成一个或多个静态资源文件

2.依赖管理:Webpack可以分析模块之间的依赖关系,根据配置的入口文件找出所有依赖的模块,并将其整合到打包结果中

3.文件转换Webpack本身只能处理JavaScript模块,但通过加载器(Loader)的使用,可以将其他类型的文件(如CSS、LESS、图片等)转换为有效的模块,使其能够被打包到最终的结果中

4.代码拆分:Webpack支持将代码拆分成多个模块,按需加载,实现按需加载和提升应用性能

5.插件系统:Webpack提供了丰富的插件系统,可以通过插件实现各种功能的扩展,例如压缩代码、自动生成HTML文件等

总之,Webpack的主要功能是将项目中的多个模块打包成一个或多个静态资源文件,并提供了丰富的功能和插件系统来满足前端开发的需求

二、Webpack的核心概念

Webpack的核心概念包括entry(入口)、output(输出)、loader(加载器)和plugin(插件)

1.Entry 【入口文件】, 指定Webpack的入口文件,Webpack将从指定的入口文件开始分析和构建依赖关系树。入口可以是单个文件或多个文件;

2.Output【输出】义打包输出的文件及路径,指定Webpack打包后的文件输出的路径和文件名

3.Loader【加载器】Webpack本身只能处理JavaScript模块,但通过Loader的使用,可以处理其他类型的文件(如CSS、LESS、图片等)

4.Plugin【插件】 插件用于扩展Webpack的功能。它可以在打包的不同阶段执行特定的任务。例如,可以使用插件来压缩代码、拆分代码、生成HTML文件等。插件通过在Webpack配置中引入并实例化,然后将其添加到plugins数组中。

三、使用webpack5搭建脚手架

1.然后执行npm init 进行初始化, npm install webpack webpack-cli
npm init //初始化
 npm install webpack webpack-cli  //安装webpack以及webpack-cli依赖包

 查看项目package.json文件 已经有webpack相关版本信息 

2.在项目src文件夹下新建main.js和 tools>index.js文件

main文件内容

// mian.js文件
import {add} from '/src/tools/index'
console.log(add(2,3));

修改我们public文件夹下的index.html 文件

在根目录新建 webpack.config.js文件 配置初入口文件信息

//webpack.config.js文件
const path = require("path")

module.exports = {
  mode: 'development', // 指定为开发模式

  // 入口文件
  entry: {
    main: './src/main.js'
  },
  // 出口文件
  output: {
    // 输出到dist文件夹(打包自动生成)
    path: path.resolve(__dirname, 'dist'), // __dirname:表示当前文件的绝对路径(根目录)
    // 输出文件名在dist文件夹里的js文件夹的chunk.js下
    filename: 'js/chunk-[contenthash].js' // 使用由生成的内容产生的 hash
  }
}

修改package.json文件 我们创建了webpack的打包命令

现在试着在终端输入 npm run build 命令

npm run build

这里可以看到dist文件夹下已经生成了打包好的文件。 

可以发现对比传统脚手架的npm run build,我们自己搭建的脚手架并没有在dist文件夹里生成index.html文件,现在我们来试试吧!

3.打包index.html文件

3.1安装插件 npm install html-webpack-plugin -D

npm install html-webpack-plugin -D

在webpack.config.js文件中引入插件,并且配置插件相关信息如下: 

现在我们把dist/js下的文件删掉,然后重新打包 可以看到我们已经生成html文件了

 4.打包css文件。如果我们想创建一个css呢?

在src>style>style.css 文件

这里是main.js文件,引入样式文件以及向html添加了内容。 

//main.js
import './style/style.css'
const el = document.createElement('div')
el.className = 'title'
el.innerHTML = "这是坚强的土豆子"
document.body.appendChild(el)

安装打包css文件的依赖文件  npm install css-loader style-loader

npm install css-loader style-loader

在webpack.congfig文件中配置信息 

再次执行 npm run build,然后index.html文件浏览器打开,可以看到我们刚才加载的css效果了。

 一些常用的Webpack loader:

  1. babel-loader:将ES6+代码转换为ES5语法,以便在旧版本的浏览器中运行。
  2. style-loader 和 css-loader:用于处理CSS文件。css-loader主要负责处理样式文件中的importurl语句,而style-loader将转换后的CSS模块直接注入到HTML页面中。
  3. file-loader 和 url-loader:用于处理图片和其他资源文件。file-loader会为每一个文件生成一个对应的文件,而url-loader将小于设定大小的文件转换为base64编码的URL,减少HTTP请求
  4. sass-loader 和 less-loader:用于处理Sass和Less预处理器。它们将Sass和Less代码转换为普通的CSS代码
  5. postcss-loader:用于为CSS代码添加浏览器兼容性前缀,以确保在不同浏览器上的一致性。
  6. html-loader:用于处理HTML文件,将其中的图片等资源转换为Webpack可以识别的模块。

同理我们如果使用less,也需要先下载less-loader。

新建style.less文件 ,同时哦在main.js文件中引入 文件

//main.js文件添加
import './style/style.less'

webpack.config.js中配置信息。 

注意:下图 webpack.config文件less配置信息部分 options默认是部分css3属性需要通过postcss-loaderpostcss-preset-env才能添加浏览器兼容性前缀,以确保在不同浏览器上的一致性。

需要先下载安装 postcss-loaderpostcss-preset-env

npm install postcss-loader postcss-preset-env -D

执行npm run build ,浏览器打开发现文字内容字体已经按照我们设置的改变了

 

5.如何处理图像资源呢?

 在src>img>下导入一张png图片,并在main.js文件中导入图片在html中显示

 在webpack文件中进行配置信息,在webpack4版本中(webpack5版本不用这一步)

npm i file-loader url-loader -D

我们webpack5版本只需要在webpack.config文件中添加配置:

重新打包运行 npm run build ,可以看到我们刚刚加入的图片信息了。

 每次运行打包命令后自动覆盖原来的文件js文件信息。

webpack.config.js文件出口文件设置添加clean:设置为true就可以了。这样每次打包后的文件只有一个最新的。

 6.babel的转化

es6+的语法在旧浏览器不适用,这就需要我们自己去转化成浏览器能识别的es5代码

npm install @babel/core @babel/preset-env babel-loader -D

但在高版本的bebel中,我们可以在根目录建一个babel.config.js。webpack.config.js只需要下图配置。

 7.处理.vue结尾的文件

新建vue页面,并在main.js中引入

1、下载安装 npm i vue vue-loader -D

2、 配置webpack.config.js文件

 

重新通过npm run build运行之后,index.html页面成功响应:

 8.如何自动运行打包后的index文件

如何使用npm run serve 运行项目的。需要先安装依赖:

npm i webpack-dev-server -D

接下来我们把package.json中的运行命令改成如下这样:

然后我们就可以用npm run serve启动项目了。

 

可以看到直接访就可以了,我们修改了msg的值,页面会自动刷新。

 好啦,我们现在已经成功搭建了一个脚手架。

关于webpack的其他知识后续会更新。

Node.js基础知识请参考:Express基于Node.js基础知识【2】全面总结 推荐-CSDN博客


 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985678.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RPA与智慧政务的关系

自1992年国务院明确提出构建全国行政机关办公决策系统,我国政府信息化建设已走过三十余年历程,并取得了阶段性成果,随着社会需求的变化以及信息技术和数字化工具的不断完善,人们对政府的信息化建设也提出了新的要求,推…

【C#语音文字互转】C#语音转文字(方法一)

Whisper.NET开源项目:https://github.com/sandrohanea/whisper.net/tree/main 一. 环境准备 在VS中安装 Whisper.net,在NuGet包管理器控制台中运行以下命令: Install-Package Whisper.net Install-Package Whisper.net.Runtime其中运行时包…

uniapp 实现自定义缩略滚动条

<template><view class"container-scroll"><!-- 文字导航 --><scroll-view class"scroll-view-text" scroll-x"true" v-if"type 1"><navigator:url"item.url"class"scroll-view-item"…

LE-50821F/FA激光扫描传感器|360°避障雷达之功能与连接使用说明

LE-50821F/FA激光扫描传感器|360避障雷达广泛应用于工业自动化、移动机器人应用场景中的环境感知、高精度定位&#xff08;如建图、扫描、避障、防护等&#xff09; LE-50xxxF系列升级扫描频率最高可达600KHz​​​​。 本文重点介绍LE-50821F/FA激光扫描传感器|360避障雷达之…

【C++】二维数组 数组名

二维数组名用途 1、查看所占内存空间 2、查看二维数组首地址 针对第一种用途&#xff0c;还可以计算数组有多少行、多少列、多少元素 针对第二种用途&#xff0c;数组元素、行数、列数都是连续的&#xff0c;且相差地址是有规律的 下面是一个实例 #include<iostream&g…

FreeRTOS基础入门——FreeRTOS的系统配置(三)

个人名片&#xff1a; ​ &#x1f393;作者简介&#xff1a;嵌入式领域优质创作者&#x1f310;个人主页&#xff1a;妄北y &#x1f4de;个人QQ&#xff1a;2061314755 &#x1f48c;个人邮箱&#xff1a;[mailto:2061314755qq.com] &#x1f4f1;个人微信&#xff1a;Vir202…

基于大模型的Agent

2023年&#xff0c;对于所有的人工智能领域只有一个共同的主题——大模型。大模型的受关注程度与发展速度可谓前所未有。其中&#xff0c;基于大模型的Agent又是最近几个月大模型领域的热点。这不开始研究没有几个月&#xff0c;综述文章都出来了&#xff0c;你说快不快&#x…

FashionAI比赛-服饰属性标签识别比赛赛后总结(来自 Top14 Team)

关联比赛: FashionAI全球挑战赛—服饰属性标签识别 推荐大家看本篇博客之前&#xff0c;看一下数据集制作的方法&#xff0c;如何做一个实用的图像数据集 PS&#xff1a;我是参加完比赛之后才看的&#xff0c;看完之后&#xff0c;万马奔腾.....&#xff0c;因为发现比赛中还…

62 函数参数——传递参数时的序列解包

与可变长度的参数相反&#xff0c;这里的序列解包是指实参&#xff0c;同样也有 * 和 ** 两种形式。 ① 调用含有多个位置参数的函数时&#xff0c;可以使用 Python 列表、元组、集合、字典以及其他可迭代对象作为实参&#xff0c;并在实参名称前加一个星号&#xff0c;Python …

element-ui/plus使用el-date-picker周 选择器返回时间范围处理案例

element-ui/plus使用el-date-picker周 选择器返回时间范围处理案例 如图所示 <el-date-pickerchange"changeTime":picker-options"{ firstDayOfWeek: 1 }"v-model"value1"type"week"format"YYYY年 第ww周"placeholder&…

C++初学者指南-5.标准库(第二部分)--数值运算算法

C初学者指南-5.标准库(第二部分)–数值运算算法 文章目录 C初学者指南-5.标准库(第二部分)--数值运算算法iota (注意不是itoa函数)Reductions reduce transform_reduce遗留操作&#xff08;无法并行执行&#xff09;accumulate (≈ reduce) C98inner_product (≈ transform_r…

sanger序列拼接--一次错误示范

文章目录 目的实现步骤 目的 NGS得到了很多的reads&#xff0c;其中有一些paired reads我想根据overlap 搭建起来&#xff0c;因为我对序列的ID做了删减&#xff0c;所以再pandaseq那里跑不通。 总结来说&#xff0c;目的很简单&#xff0c;就是把 有重叠区域的 reads 搭起来…

【学习笔记】A2X通信的协议(二)- A2X配置参数

目录 5. A2X配置参数 5.1 一般说明 5.2 A2X配置参数的配置和优先级 5.2.1 一般说明 5.2.2 A2X配置参数的优先级 5.2.3 通过PC5进行的A2X通信的配置参数 5.2.4 广播远程ID&#xff08;BRID&#xff09;的配置参数 5.2.5 直接检测和避免&#xff08;DDAA&#xff09;的配…

解决 Beyond Compare 30天过期问题

解决 Beyond Compare 30天过期的步骤如下&#xff1a; 1、使用快捷键WinR打开运行窗口&#xff0c;输入regedit并回车&#xff0c;打开注册表编辑器。 2、在注册表编辑器中&#xff0c;找到Beyond Compare的注册表位置&#xff0c;路径通常是HKEY_CURRENT_USER\Software\Scoot…

【redis】springboot 用redis stream实现MQ消息队列 考虑异常ack重试场景

redis stream是redis5引入的特性&#xff0c;一定程度上借鉴了kafka等MQ的设计&#xff0c;部署的redis版本必须 > 5 本文主要讲的是思路&#xff0c;结合简单的源码分析&#xff08;放心&#xff0c;无需深入大量源码&#xff09;&#xff1b;讲述在redis stream文档缺乏&a…

港科夜闻 | 香港科大,中大,港大及国大获旭日慈善基金捐款港币五千万元,支持基础数学研究及人才发展...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大、中大、港大及国大获旭日慈善基金捐款港币五千万元&#xff0c;支持基础数学研究及人才发展。香港科大校长叶玉如教授在会上代表四所大学&#xff0c;就旭日慈善基金会对推动高等教育及基础研究发展的慷慨支持&…

探索智谱AI的视频生成神器:CogVideoX完全指南

引言 在当今数字化和内容创作高度发达的时代&#xff0c;视频已经成为信息传播和营销的重要工具。然而&#xff0c;对于许多缺乏视频制作经验或资源的个人和企业而言&#xff0c;如何快速、高效地创建吸引人的视频仍然是一个挑战。智谱AI推出的CogVideoX&#xff0c;作为一款先…

PuerTS和HybridCLR哪个更适合开发微信小游戏

1&#xff09;PuerTS和HybridCLR哪个更适合开发微信小游戏 2&#xff09;使用了Play Asset Delivery提交版本被Google报错 3&#xff09;怎样设置normalize来改变摄像机位置 4&#xff09;如何禁用增强型输入法中除某些输入操作之外的输入操作 这是第397篇UWA技术知识分享的推送…

CodeWave常用功能

1、CodeWave添加H5或PC端 CodeWave在左侧侧边栏&#xff0c;可通过“”按钮&#xff0c;直接添加PC端或H5端&#xff0c;或添加页面。 2、修改主题颜色 CodeWave左侧栏对应端的更多按钮中&#xff0c;可对权限及主题色进行修改。 在主题样式修改页面&#xff0c;右侧提供了预…

视频监控汇聚平台LntonCVS视频监控管理平台解决方案和常见的接入方式

一、视频融合平台 LntonCVS是一款支持多种协议和设备接入的视频汇聚流媒体平台。它能够统一管理和整合不同品牌、不同协议的视频资源&#xff0c;构建视频数据资源池&#xff0c;并通过视频资源目录为各类业务场景提供丰富、实时、高清的视频资源。 二、接入方式 1. 前端设备…