两天学会用Webpack打包前端代码-day01

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

什么是 Webpack?

使用 Webpack

体验webpack打包过程

修改 Webpack 打包入口和出口

入口

出口

自动生成 html 文件

安装

基本用法 

打包 css 代码

打包 less 代码

打包图片


什么是 Webpack?

定义:

静态模块:指的是编写代码过程中的,html,css,js,图片等固定内容的文件
打包 :把静态模块内容,压缩,整合,转译等(前端工程化)
        把 less / sass 转成 css 代码
        把 ES6+ 降级成 ES5
        支持多种模块标准语法

使用 Webpack

步骤:
1. 新建并初始化项目,编写业务 源代码
2. 下载 webpack webpack-cli 到当前项目中(版本独立),并 配置 局部自定义命令

3. 运行 打包 命令,自动产生 dist 分发文件夹(压缩和优化后,用于最终运行的代码)

 

体验webpack打包过程

第一步:初始化

第二步:编写代码

第三步: 下载 webpack webpack-cli 到当前项目中(版本独立),并配置局部自定义命令

 第四步:运行打包命令,自动产生 dist 分发文件夹

 

修改 Webpack 打包入口和出口

入口

入口起点(entry point) 指示 webpack 应该使用哪个模块,来作为构建其内部 依赖图(dependency graph) 的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。

默认值是 ./src/index.js,但你可以通过在 webpack configuration 中配置 entry 属性,来指定一个(或多个)不同的入口起点。例如:

module.exports = {entry: './path/to/my/entry/file.js',
};

出口

output 属性告诉 webpack 在哪里输出它所创建的 bundle,以及如何命名这些文件。主要输出文件的默认值是 ./dist/main.js,其他生成文件默认放置在 ./dist 文件夹中。

你可以通过在配置中指定一个 output 字段,来配置这些处理过程:

const path = require('path');module.exports = {entry: './path/to/my/entry/file.js',output: {path: path.resolve(__dirname, 'dist'),filename: 'my-first-webpack.bundle.js',},
};

自动生成 html 文件

安装

npm install --save-dev html-webpack-plugin

基本用法 

该插件将为你生成一个 HTML5 文件, 在 body 中使用 script 标签引入你所有 webpack 生成的 bundle。 只需添加该插件到你的 webpack 配置中,如下所示:

const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');module.exports = {entry: 'index.js',output: {path: path.resolve(__dirname, './dist'),filename: 'index_bundle.js',},plugins: [new HtmlWebpackPlugin()],
};

这将会生成一个包含以下内容的 dist/index.html 文件:

<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><title>webpack App</title></head><body><script src="index_bundle.js"></script></body>
</html>

如果你有多个 webpack 入口,他们都会在已生成 HTML 文件中的 <script> 标签内引入。

如果在 webpack 的输出中有任何 CSS 资源(例如,使用 MiniCssExtractPlugin 提取的 CSS),那么这些资源也会在 HTML 文件 <head> 元素中的 <link> 标签内引入。

打包 css 代码

注意: Webpack 默认只识别 js 代码

如果要使用 css-loader,你需要安装 webpack@5

首先,你需要先安装 css-loader

npm install --save-dev css-loader

然后把 loader 引用到你 webpack 的配置中。如下所示:

import css from "file.css";
module.exports = {module: {rules: [{test: /\.css$/i,use: ["style-loader", "css-loader"],},],},
};

然后运行 webpack。 

打包 less 代码

首先,你需要先安装 less 和 less-loader

$ npm install less less-loader --save-dev

然后将该 loader 添加到 webpack 的配置中去,例如:

module.exports = {module: {rules: [{test: /\.less$/i,use: [// compiles Less to CSS'style-loader','css-loader','less-loader',],},],},
};

打包图片

资源模块(asset module)是一种模块类型,它允许使用资源文件(字体,图标等)而无需配置额外 loader。

在 webpack 5 之前,通常使用:

  • raw-loader 将文件导入为字符串
  • url-loader 将文件作为 data URI 内联到 bundle 中
  • file-loader 将文件发送到输出目录

资源模块类型(asset module type),通过添加 4 种新的模块类型,来替换所有这些 loader:

  • asset/resource 发送一个单独的文件并导出 URL。之前通过使用 file-loader 实现。
  • asset/inline 导出一个资源的 data URI。之前通过使用 url-loader 实现。
  • asset/source 导出资源的源代码。之前通过使用 raw-loader 实现。
  • asset 在导出一个 data URI 和发送一个单独的文件之间自动选择。之前通过使用 url-loader,并且配置资源体积限制实现。

当在 webpack 5 中使用旧的 assets loader(如 file-loader/url-loader/raw-loader 等)和 asset 模块时,你可能想停止当前 asset 模块的处理,并再次启动处理,这可能会导致 asset 重复,你可以通过将 asset 模块的类型设置为 'javascript/auto' 来解决。

module.exports = {module: {rules: [{test: /\.(png|jpg|gif)$/i,use: [{loader: 'url-loader',options: {limit: 8192,}},],type: 'javascript/auto'},]},
}

步骤:

1. 配置 webpack.config.js 让 Webpack 拥有打包图片功能

        占位符 【hash】对模块内容做算法计算,得到映射的数字字母组合的字符串

        占位符 【ext】使用当前模块原本的占位符,例如:.png / .jpg 等字符串

        占位符 【query】保留引入文件时代码中查询参数(只有 URL 下生效)

2. 打包后观察效果和区别

注意:判断临界值默认为 8KB

        大于 8KB 文件:发送一个单独的文件并导出 URL 地址

        小于 8KB 文件:导出一个 data URI(base64字符串)

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

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

相关文章

一些抄袭CSDN的爬虫网站(长期收集更新)

目录 一、CodeAntenna1. 简介2. 网址 二、待更新。。。 本文由CSDN点云侠原创&#xff0c;爬虫网站请努力加油爬。 一、CodeAntenna 1. 简介 互联网耻辱柱排行榜Top 1。本人博客里任何一点免费可读的部分都被该网站爬得体无完肤。 2. 网址 https://codeantenna.com/a/B4cMB…

MQTT 与 Kafka|物联网消息与流数据集成实践

MQTT 如何与 Kafka 一起使用&#xff1f; MQTT (Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议&#xff0c;专为受限网络环境下的设备通信而设计。Apache Kafka 是一个分布式流处理平台&#xff0c;旨在处理大规模的实时数据流。 Kafka 和 MQTT 是实现物…

数学建模-时间序列分析 实例

实例1销量数据预测和实例2人口数据预测实例3上证指数预测和实例4gdp增长率预测 数据-定义时间 不加置信区间清晰点 例二 实例3

json-server Node.js 服务,前端模拟后端提供json接口服务

json-server Node.js 服务,前端模拟后端提供json接口服务 背景&#xff1a; 前后端分离的项目&#xff0c;如果前端写页面的话&#xff0c;必须的后端提供接口文件&#xff0c;作为前端等待时间太久&#xff0c;不便于开发进行&#xff0c;如果前端写的过程中自己搭建一个简要的…

使用 Qt designer

使用 Qt designer 1、配置Qt designer外部工具2、Qt designer&#xff08;Qt 设计师&#xff09;使用2.1 创建保存文件ui2.2 pyuic5.exe 工具 转化成为py文件2.3 直接导入UI文件 2、qrc资源管理器 1、配置Qt designer外部工具 实质就是 Qt\bin 工具中 designer.exe 请查看 PyQ…

wpf prism使用

目录 1.Nuget中安装prism框架&#xff1a; 2.改造程序启动入口 3.View和ViewModel自动关联 4.绑定 5.Command 6.Event Aggregator&#xff08;事件聚合器&#xff09;、消息通知 7.弹窗、对话服务 DialogService 8.Region区域 9.Navigation导航 10.module 模块 1.Nug…

清洁机器人规划控制方案

清洁机器人规划控制方案 作者联系方式Forrest709335543qq.com 文章目录 清洁机器人规划控制方案方案简介方案设计模块链路坐标变换算法框架 功能设计定点自主导航固定路线清洁区域覆盖清洁贴边沿墙清洁自主返航回充 仿真测试仿真测试准备定点自主导航测试固定路线清洁测试区域…

【C++技能树】Vector类解析与模拟实现

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法…感兴趣就关注我bua&#xff01; Vector 0.Vector简介1.Vector常用接口1.1constructor构造函数1.2 iteratorsort与findfindsort 1.3 Capacity相关接口1.4 Modify相关接口 2. Vector模拟实…

linux:secureCRT通过pem证书远程访问服务器

参考&#xff1a; secureCRT通过pem证书远程访问服务器_Fengshana的博客-CSDN博客 总结&#xff1a; 配置公钥即可

前端vue uni-app仿美团下拉框下拉筛选组件

在前端Web开发中&#xff0c;下拉筛选功能是一种非常常见的交互方式&#xff0c;它可以帮助用户快速选择所需的选项。本文将介绍如何利用Vue.js和uni-app框架来实现一个高效的下拉筛选功能。通过使用这两个强大的前端框架&#xff0c;我们可以轻松地创建具有响应式用户操作的下…

Sublime Text 4 激活教程(Windows+Mac)

下载安装 官网 https://www.sublimetext.com 点击跳转 2023.7.21 版本为4143 Windows激活方式 一、激活License方式 入口在菜单栏中"Help” -> “Enter License” 注意格式&#xff0c;可能会过期失效&#xff0c;失效就用方式二 Mifeng User Single User License E…

Linux底层

一. arm基础知识 基础&#xff1a;c语言 具有一定硬件基础 特点---》前后联系 arm目标&#xff1a; 看懂简单的汇编代码 会看电路图、芯片手册 学会如何用软件控制硬件思想 解决问题的办法 谈谈对嵌入式的理解&#xff1f; 以计算应用为中心&#xff0c;软硬件可裁剪的…

Cloudreve搭建云盘系统,并实现随时访问

文章目录 1、前言2、本地网站搭建1.环境使用2.支持组件选择3.网页安装4.测试和使用5.问题解决 3、本地网页发布1.cpolar云端设置2.cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#xff0c;一时间公…

ONNX Runtime 加速深度学习(C++ 、python)详细介绍

ONNX Runtime 加速深度学习(C 、python)详细介绍 本文在 https://blog.csdn.net/u013250861/article/details/127829944 基础上进行了更改&#xff0c;感谢原作&#xff01; ONNXRuntime(Open Neural Network Exchange)是微软推出的一款针对ONNX模型格式的推理框架&#xff0c…

妙记多 Mojidoc PC端(Mac 端+windows端)Beta版本正式上线!

你们呼唤了无数次的妙记多 Mojidoc PC客户端 Beta版本正式上线啦&#xff01; 感谢300位妙友积极参与内测&#xff0c;给予了我们很多非常有效的意见和建议&#xff01;我们会根据用户反馈不断优化和修复相关功能&#xff0c;在此感谢妙友们一直以来的支持&#xff5e; PC端拥…

SkyWalking链路追踪中span全解

基本概念 在SkyWalking链路追踪中&#xff0c;Span&#xff08;跨度&#xff09;是Trace&#xff08;追踪&#xff09;的组成部分之一。Span代表一次调用或操作的单个组件&#xff0c;可以是一个方法调用、一个HTTP请求或者其他类型的操作。 每个Span都包含了一些关键的信息&am…

小程序 methods方法互相调用 this.onClickCancel is not a function

背景 做了一个自定义的弹出对话窗口&#xff0c;主要是自定义一些文本颜色。 问题 但是点击按钮事件&#xff1a;取消与确认&#xff0c;调用了同一个接口&#xff0c;然后想着走不同方法&#xff0c;需要调用methods其他方法。然后报错了&#xff1a; VM1081 WAService.js:…

行为型模式 - 状态模式

概述 【例】通过按钮来控制一个电梯的状态&#xff0c;一个电梯有开门状态&#xff0c;关门状态&#xff0c;停止状态&#xff0c;运行状态。每一种状态改变&#xff0c;都有可能要根据其他状态来更新处理。例如&#xff0c;如果电梯门现在处于运行时状态&#xff0c;就不能进…

C语言数据在内存中的存储

目录 前言 本期内容介绍 一、数据类型的介绍 1.1类型的意义&#xff1a; 1.2C语言中是否有字符串类型&#xff1f; 1.3类型的基本归类 整型家族&#xff1a; 浮点型&#xff08;实型&#xff09;家族&#xff1a; 构造&#xff08;自定义&#xff09;类型&#xff1a;…