Webpack的应用

news2025/2/24 0:00:12

处理css文件

总共有src目录下的index.css和index.js、同根的index.html和webpack.config.js文件,然后npm init之后生成package.json文件,npm install后生成package-lock.json文件,最后npm run webpack之后有dist目录下各种文件

index.js

import './index.css';

index.css

body {
  background-color: red;
}

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>处理 CSS 文件</title>
  </head>
  <body></body>
</html>

webpack.config.js

entry默认是main 

html-webpack-plugin插件是为了方便以什么为模板然后生成文件并且引入对应的js和css文件 

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
  mode: 'development',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].js'
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        // loader: 'css-loader'
        // use: ['style-loader', 'css-loader']
        use: [MiniCssExtractPlugin.loader, 'css-loader']
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './index.html',
      filename: 'index.html'
    }),
    new MiniCssExtractPlugin({
      filename: 'css/[name].css'
    })
  ]
};

在没有配置css-loader时,npm run webpack出现以下情况

配置好css-loader之后,npm run webpack就成功通过了

 

有css-loader还不够,还需要安装style-loader,最后网页才能呈现样式

注意:上面图webpack.config.js中use后面可以是对象也可以是数组执行顺序从右往左

但是呢,我们通常都是link导入样式表文件,而不是直接style,因此我们需要安装插件mini-css-extract-plugin,之后配置插件filename指定哪个目录下(在上面output属性目录前提下)

注意:安装开发依赖npm install --save-dev 插件名字@版本号

package.json 

{
  "name": "webpack-css",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "webpack": "webpack"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "css-loader": "^4.1.1",
    "html-webpack-plugin": "^4.3.0",
    "mini-css-extract-plugin": "^0.9.0",
    "style-loader": "^1.2.1",
    "webpack": "^4.44.1",
    "webpack-cli": "^3.3.12"
  }
}

npm run webpack后生成dist目录下有index.html、main.js和css目录下的main.css文件

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>处理 CSS 文件</title>
  <link href="css/main.css" rel="stylesheet"></head>
  <body><script src="main.js"></script></body>
</html>

 

使用file-loader处理CSS图片中的图片

 总共有src目录下的index.css和index.js、同根的index.html和webpack.config.js文件、src目录下的img目录下logo.png,然后npm init之后生成package.json文件,npm install后生成package-lock.json文件,最后npm run webpack之后有dist目录下各种文件

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>使用 file-loader 处理 CSS 文件中的图片</title>
  </head>
  <body>
    <script>
      // npm install

      // 如果是外部的资源,是不需要考虑 webpack 的,只有本地的图片才需要被 webpack 处理

      // file-loader
      // npm install --save-dev file-loader@6.0.0
    </script>
  </body>
</html>

index.css

body {
  /* background-image: url(https://www.imooc.com/static/img/index/logo.png); */
  background-image: url(img/logo.png);
  background-repeat: no-repeat;
}

index.js

import './index.css';

console.log('index');

package.json

{
  "name": "webpack-css-img",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "webpack": "webpack"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "css-loader": "^4.1.1",
    "file-loader": "^6.0.0",
    "html-webpack-plugin": "^4.3.0",
    "mini-css-extract-plugin": "^0.9.0",
    "style-loader": "^1.2.1",
    "webpack": "^4.44.1",
    "webpack-cli": "^3.3.12"
  }
}

webpack.config.js(注意比上次文件增加的内容)

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
  mode: 'development',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].js'
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          {
            loader: MiniCssExtractPlugin.loader,
            options: {
              publicPath: '../'
            }
          },
          'css-loader'
        ]
      },
      {
        test: /\.(jpg|png|gif)$/,
        use: {
          loader: 'file-loader',
          options: {
            name: 'img/[name].[ext]'
          }
        }
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './index.html',
      filename: 'index.html'
    }),
    new MiniCssExtractPlugin({
      filename: 'css/[name].css'
    })
  ]
};

继npm install和npm run webpack之后生成以下这样目录

 

dist目录下的index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>使用 file-loader 处理 CSS 文件中的图片</title>
  <link href="css/main.css" rel="stylesheet"></head>
  <body>
    <script>
      // npm install

      // 如果是外部的资源,是不需要考虑 webpack 的,只有本地的图片才需要被 webpack 处理

      // file-loader
      // npm install --save-dev file-loader@6.0.0
    </script>
  <script src="main.js"></script></body>
</html>

main.css 

body {
  /* background-image: url(https://www.imooc.com/static/img/index/logo.png); */
  background-image: url(../img/logo.png);
  background-repeat: no-repeat;
}

 

使用html-withimg-loader处理HTML中的图片

总共有src目录下的index.css和index.js、同根的index.html和webpack.config.js文件、src目录下的img目录下logo.png,然后npm init之后生成package.json文件,npm install后生成package-lock.json文件,最后npm run webpack之后有dist目录下各种文件

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>使用 html-withimg-loader 处理 HTML 中的图片</title>
  </head>
  <body>
    <img src="./src/img/logo.png" alt="" />

    <script>
      // npm install --save-dev html-withimg-loader@0.1.16
    </script>
  </body>
</html>

index.css

body {
  background-color: yellow;
  /* background-image: url(); */
}

index.js

import './index.css';

console.log('index');

package.json

{
  "name": "webpack-html-img",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "webpack": "webpack"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "css-loader": "^4.1.1",
    "file-loader": "^6.0.0",
    "html-webpack-plugin": "^4.3.0",
    "html-withimg-loader": "^0.1.16",
    "mini-css-extract-plugin": "^0.9.0",
    "style-loader": "^1.2.1",
    "webpack": "^4.44.1",
    "webpack-cli": "^3.3.12"
  }
}

webpack.config.js(注意比上次文件增加的内容)

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
  mode: 'development',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].js'
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          {
            loader: MiniCssExtractPlugin.loader,
            options: {
              publicPath: '../'
            }
          },
          'css-loader'
        ]
      },
      {
        test: /\.(jpg|png|gif)$/,
        use: {
          loader: 'file-loader',
          options: {
            name: 'img/[name].[ext]',
            esModule: false
          }
        }
      },
      {
        test: /\.(htm|html)$/,
        loader: 'html-withimg-loader'
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './index.html',
      filename: 'index.html'
    }),
    new MiniCssExtractPlugin({
      filename: 'css/[name].css'
    })
  ]
};

继npm install和npm run webpack之后生成以下这样目录 

 

dist目录下的index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>使用 html-withimg-loader 处理 HTML 中的图片</title>
    <link href="css/main.css" rel="stylesheet">
</head>
<body><img src="img/logo.png" alt=""/>
<script>      // npm install --save-dev html-withimg-loader@0.1.16    </script>
<script src="main.js"></script>
</body>
</html>

 

使用file-loader处理js中的图片

总共有src目录下的index.css和index.js、同根的index.html和webpack.config.js文件、src目录下的img目录下logo.png,然后npm init之后生成package.json文件,npm install后生成package-lock.json文件,最后npm run webpack之后有dist目录下各种文件

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>使用 file-loader 处理 JS 中的图片</title>
  </head>
  <body>
    <script>
      // file-loader css img
      // html-withimg-loader html img
      // file-loader js img
    </script>
  </body>
</html>

index.css

body {
  background-color: yellow;
}

index.js

import './index.css';

import img from './img/logo.png';

console.log(img);//打发dist目录下的路径dist 看起来跟原来路径一样,实际上过程不同

const imgEl = document.createElement('img');
imgEl.src = img;
document.body.appendChild(imgEl);

package.json

{
  "name": "webpack-js-img",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "webpack": "webpack"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "css-loader": "^4.1.1",
    "file-loader": "^6.0.0",
    "html-webpack-plugin": "^4.3.0",
    "mini-css-extract-plugin": "^0.9.0",
    "style-loader": "^1.2.1",
    "webpack": "^4.44.1",
    "webpack-cli": "^3.3.12"
  }
}

webpack.config.js(注意比上次文件增加的内容)

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
  mode: 'development',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].js'
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          {
            loader: MiniCssExtractPlugin.loader,
            options: {
              publicPath: '../'
            }
          },
          'css-loader'
        ]
      },
      {
        test: /\.(jpg|png|gif)$/,
        use: {
          loader: 'file-loader',
          options: {
            name: 'imgsss/[name].[ext]',
            esModule: false
          }
        }
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './index.html',
      filename: 'index.html'
    }),
    new MiniCssExtractPlugin({
      filename: 'css/[name].css'
    })
  ]
};

 继npm install和npm run webpack之后生成以下这样目录 

 

dist目录下的index.html 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>使用 file-loader 处理 JS 中的图片</title>
  <link href="css/main.css" rel="stylesheet"></head>
  <body>
    <script>
      // file-loader css img
      // html-withimg-loader html img
      // file-loader js img
    </script>
  <script src="main.js"></script></body>
</html>

 

使用url-loader处理图片 

 总共有src目录下的index.css和index.js、同根的index.html和webpack.config.js文件、src目录下的img目录下logo.png,然后npm init之后生成package.json文件,npm install后生成package-lock.json文件,最后npm run webpack之后有dist目录下各种文件

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>使用 url-loader 处理图片</title>
  </head>
  <body>
    <script>
      // file-loader css img
      // html-withimg-loader html img
      // file-loader js img

      // npm install --save-dev url-loader@4.1.0
    </script>
  </body>
</html>

index.css

body {
  background-color: yellow;
}

index.js

import './index.css';

import img from './img/logo.png';

console.log(img);

const imgEl = document.createElement('img');
imgEl.src = img;
// base64
document.body.appendChild(imgEl);

package.json

{
  "name": "webpack-url-loader",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "webpack": "webpack"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "css-loader": "^4.1.1",
    "file-loader": "^6.0.0",
    "html-webpack-plugin": "^4.3.0",
    "mini-css-extract-plugin": "^0.9.0",
    "style-loader": "^1.2.1",
    "url-loader": "^4.1.0",
    "webpack": "^4.44.1",
    "webpack-cli": "^3.3.12"
  }
}

webpack.config.js(注意比上次文件增加的内容)

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
  mode: 'development',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].js'
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          {
            loader: MiniCssExtractPlugin.loader,
            options: {
              publicPath: '../'
            }
          },
          'css-loader'
        ]
      },
      {
        test: /\.(jpg|png|gif)$/,
        use: {
          loader: 'url-loader',
          options: {
            name: 'img/[name].[ext]',
            esModule: false,
            // 图片是4k多,如果限制在3000,会以路径形式显示 如果限制在10000,会以base64显示
            limit: 3000
          }
        }
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './index.html',
      filename: 'index.html'
    }),
    new MiniCssExtractPlugin({
      filename: 'css/[name].css'
    })
  ]
};

 继npm install和npm run webpack之后生成以下这样目录 

  

dist目录下的index.html 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>使用 url-loader 处理图片</title>
  <link href="css/main.css" rel="stylesheet"></head>
  <body>
    <script>
      // file-loader css img
      // html-withimg-loader html img
      // file-loader js img

      // npm install --save-dev url-loader@4.1.0
    </script>
  <script src="main.js"></script></body>
</html>

 限制3000情况下

限制10000情况下

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

nodejs使JWT(全)

Token token表示令牌&#xff0c;用户的登录凭证。 基于 Token 的身份验证方法&#xff0c;使用基于 Token 的身份验证方法&#xff0c;在服务端不需要存储用户的登录记录。大概的流程是这样的&#xff1a; 客户端使用用户名跟密码请求登录服务端收到请求&#xff0c;去验证…

css动画效果之transform

transformTransform属性应用于元素的2D或3D转换。这个属性允许你将元素旋转&#xff0c;缩放&#xff0c;移动&#xff0c;倾斜等。旋转rotate、扭曲skew、移动translate、缩放scale、矩阵变形matrix属性名扩展写法属性含义none定义不进行转换。rotaterotateX()&#xff08;3D写…

rabbitmq+netcore6 【5】Topics:主题

文章目录1&#xff09;前言2&#xff09;Topic exchange 主题交换机3&#xff09;举例4&#xff09;总结5&#xff09;综合以上代码准备工作生产者消费者1消费者2结果验证官网参考链接&#xff1a; https://www.rabbitmq.com/tutorials/tutorial-five-dotnet.html其他人的翻译版…

臻图信息搭建智慧水务管理平台,保障供水安全运行

伴随着城市智慧化进程&#xff0c;供水系统也在朝着高度集成化、数字化、智能化的管理模式发展。在2022年&#xff0c;水利部也印发了相关水务保障规划&#xff0c;对供水工程的建设、运行管理、水源保护等管理提出了明确要求&#xff0c;采取物联网、互联网等措施&#xff0c;…

从“以旧换新”送手机看年礼消费新风尚

千门万户曈曈日&#xff0c;总把新桃换旧符。每年的春节&#xff0c;都是中国人辞旧迎新的重要时刻。在新春年礼的选择上&#xff0c;曾经的“烟酒糖茶”老四样正在逐渐被其他新潮年礼所替代&#xff0c;手机等诸多科技好物被纳入到送年礼清单。手机年货很“潮”&#xff0c;让…

Redis整理合集

SQL和NOSQL的区别?SQLNOSQL数据结构结构化非结构化数据关联关联的非关联的查询方式SQL查询非SQL查询事物特性ACID&#xff08;事务&#xff09;BASE存储方式磁盘内存扩展性垂直水平使用场景数据结构固定相对业务对数据的安全性一致性需求较高数据结构不固定对一致性、安全性需…

论文投稿指南——中文核心期刊推荐(地质学 2)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

【性能优化】Mybatis Plus:优化查询速度 - SQL替换Service

优化查询速度 - SQL替换Service Service 接口问题 下面是原先的 Service 实现类代码&#xff0c;有门店 ID、订单状态、查询时间段&#xff0c;然后查出了所有的结果&#xff0c;继续使用 java8 的特性获取汇总结果&#xff0c;随着项目的推移&#xff0c;数据量越来越大&…

Webpack 中使用source map 在开发过程中进行调试

我们都知道webpack在打包的时候会将源代码打包成一个bundle文件&#xff0c;bundle文件就是经过了loader转换&#xff0c;还有webpack的一些插件处理&#xff0c;以及webpack构建过程中的一些转换&#xff0c;最后会生成一个大的JS文件&#xff0c;直接去看这个文件是没法调试的…

【React】一.React基本使用

目录 基本介绍 一.React基本使用 安装命令 使用方法 记录问题 使用React脚手架初始化项目 基本介绍 构建用户界面的js库用户界面可以理解为html页面&#xff08;前端&#xff09;react主要用来写html页面或者构建web应用只负责视图层&#xff08;V&#xff09;的渲染。&am…

【ROS2 入门】虚拟机环境 ubuntu 18.04 ROS2 安装

大家好&#xff0c;我是虎哥&#xff0c;从今天开始&#xff0c;我将花一段时间&#xff0c;开始将自己从ROS1切换到ROS2&#xff0c;做为有别于ROS1的版本&#xff0c;做了很多更新和改变&#xff0c;我还是很期待自己逐步去探索ROS2中的惊喜。在安装过程中我也遇到的一些坑&a…

阿里云服务器安装wireshark图形界面与远程连接配置(使用tigervnc)

tags: Server Ubuntu Wireshark 写在前面 昨天折腾了一下透视HTTP协议这门课的实验环境, 通过阿里云的轻量应用服务器来完成了, 但是还差一步, 那就是wireshark的安装, 虽然通过apt安装好了, 但是打不开实在是烦人, 后来经过各种搜索, 我发现问题出在了tightvnc上, 这个vnc服…

vue2中swiper6不能正常使用的解决

第一步安装swiper6 第二步在main.js中引入swiper6 注意&#xff1a;也可以在其他地方引入&#xff0c;但是在main.js中引入&#xff0c;所有的组件都能用swiper的样式 样式的引入&#xff0c;不是平常的引入&#xff0c;引入代码如下 注意&#xff1a;一定要这样引入样式 …

【自学Python】Python比较运算符

Python比较运算符 Python比较运算符教程 在 Python 中&#xff0c;比较运算符的结果都是 bool 型&#xff0c;也就是要么是 True&#xff0c;要么是 False。关系表达式经常用在 if 结构的条件中或 循环结构 的条件中。 Python比较运算符语法 比较运算符功能说明>大于如果…

正则表达式表单校验实例

描述 一个简单的注册页面&#xff0c;对输入框进行了简单的正则表达式校验 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><link rel"stylesheet" href"css/index2.css" …

深入思考 Schema 管理的几个基本问题

本文作者&#xff1a;王大龙&#xff0c;数据分析领域资深工程师&#xff0c;观远产品中一切数据的风暴降生之主&#xff0c;元数据世界的精神领袖&#xff0c;数据治理的永恒守望者。前言我发现理解某一个具体「事物」最好的方式是先去理解其背后所遵循的「范式」。范式是一个…

java-Spring集成定时器使用方法

文章目录定时器配置文件测试文件配置参数说明SpringBoot集成schedulepom.xml文件启动类运行结果定时器配置文件 spring核心配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans:beans xmlns:xsi"http://www.w3.org/2001/XMLSchema-in…

python笔记之转义问题 字符串前缀 正则表达式

Python的字符串自己也用\转义 s ABC\\-001 # Python的字符串 # 对应的正则表达式字符串变成&#xff1a; # ABC\-001建议使用Python的r前缀&#xff0c;就不用考虑转义的问题了 s rABC\-001 # Python的字符串 # 对应的正则表达式字符串不变&#xff1a; # ABC\-001关于斜杠…

RGB、LVDS、MIPI和EDP接口液晶屏

RGB、LVDS、MIPI和EDP接口液晶屏概述一、RGB_TTL二、LVDS三、MIPI&#xff08;手机、平板等数码产品应用场合&#xff09;四、eDP接口&#xff08;笔记本、工控机、工业平板等应用场合&#xff0c;用来取代LVDS接口&#xff09;五、应用概述 液晶屏有RGB、LVDS、MIPI DSI和EDP等…

《MYSQL实战45讲》笔记(1-10)

1&#xff1a;一条SQL查询语句是如何执行的&#xff1f; 下面我们来结合一张图来了解MySQL的基本架构 总体来看&#xff0c;MySQL分为服务层和存储引擎两个部分。其中存储引擎负责数据的存储和提取&#xff0c;而服务层负责连接的建立、分析、优化、执行等其他步骤。 常见的…