webpack处理样式资源04--webpack入门学习

处理样式资源

本章节学习使用 Webpack 如何处理 Css、Less、Sass、Scss、Styl 样式资源

介绍

Webpack 本身是不能识别样式资源的,所以我们需要借助 Loader 来帮助 Webpack 解析样式资源

我们找 Loader 都应该去官方文档中找到对应的 Loader,然后使用官方文档找不到的话,可以从社区 Github 中搜索查询Webpack 官方 Loader 文档

处理 Css 资源

1. 下载包

javascript 复制代码
npm i css-loader style-loader -D

注意:需要下载两个 loader

2. 功能介绍

  • css-loader:负责将 Css 文件编译成 Webpack 能识别的模块
  • style-loader:会动态创建一个 Style 标签,里面放置 Webpack 中 Css 模块内容

此时样式就会以 Style 标签的形式在页面上生效

3. 配置

javascript 复制代码
const path = require("path");

module.exports = {
  entry: "./src/main.js",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "main.js",
  },
  module: {
    rules: [
      {
        // 用来匹配 .css 结尾的文件
        test: /\.css$/,
        // use 数组里面 Loader 执行顺序是从右到左
        use: ["style-loader", "css-loader"],
      },
    ],
  },
  plugins: [],
  mode: "development",
};

4. 添加 Css 资源

  • src/css/index.css
javascript 复制代码
.box1 {
  width: 100px;
  height: 100px;
  background-color: pink;
}
  • src/main.js

    javascript 复制代码
    import count from "./js/count";
    import sum from "./js/sum";
    // 引入 Css 资源,Webpack才会对其打包
    import "./css/index.css";
    
    console.log(count(2, 1));
    console.log(sum(1, 2, 3, 4));
  • public/index.html

    javascript 复制代码
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>webpack5</title>
      </head>
      <body>
        <h1>Hello Webpack5</h1>
        <!-- 准备一个使用样式的 DOM 容器 -->
        <div class="box1"></div>
        <!-- 引入打包后的js文件,才能看到效果 -->
        <script src="../dist/main.js"></script>
      </body>
    </html>

5. 运行指令

javascript 复制代码
npx webpack

打开 index.html 页面查看效果

处理 Less 资源

1. 下载包

javascript 复制代码
npm i less-loader -D

2. 功能介绍

  • less-loader:负责将 Less 文件编译成 Css 文件

3. 配置

javascript 复制代码
const path = require("path");

module.exports = {
  entry: "./src/main.js",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "main.js",
  },
  module: {
    rules: [
      {
        // 用来匹配 .css 结尾的文件
        test: /\.css$/,
        // use 数组里面 Loader 执行顺序是从右到左
        use: ["style-loader", "css-loader"],
      },
      {
        test: /\.less$/,
        use: ["style-loader", "css-loader", "less-loader"],
      },
    ],
  },
  plugins: [],
  mode: "development",
};

4. 添加 Less 资源

  • src/less/index.less

    javascript 复制代码
    .box2 {
      width: 100px;
      height: 100px;
      background-color: deeppink;
    }
  • src/main.js

    javascript 复制代码
    import count from "./js/count";
    import sum from "./js/sum";
    // 引入资源,Webpack才会对其打包
    import "./css/index.css";
    import "./less/index.less";
    
    console.log(count(2, 1));
    console.log(sum(1, 2, 3, 4));
  • public/index.html

    javascript 复制代码
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>webpack5</title>
      </head>
      <body>
        <h1>Hello Webpack5</h1>
        <div class="box1"></div>
        <div class="box2"></div>
        <script src="../dist/main.js"></script>
      </body>
    </html>

    5. 运行指令

    javascript 复制代码
    npx webpack

    打开 index.html 页面查看效果处理

Sass 和 Scss 资源

1. 下载包

javascript 复制代码
npm i sass-loader sass -D

注意:需要下载两个

2. 功能介绍

  • sass-loader:负责将 Sass 文件编译成 css 文件
  • sass:sass-loader 依赖 sass 进行编译

3. 配置

javascript 复制代码
const path = require("path");

module.exports = {
  entry: "./src/main.js",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "main.js",
  },
  module: {
    rules: [
      {
        // 用来匹配 .css 结尾的文件
        test: /\.css$/,
        // use 数组里面 Loader 执行顺序是从右到左
        use: ["style-loader", "css-loader"],
      },
      {
        test: /\.less$/,
        use: ["style-loader", "css-loader", "less-loader"],
      },
      {
        test: /\.s[ac]ss$/,
        use: ["style-loader", "css-loader", "sass-loader"],
      },
    ],
  },
  plugins: [],
  mode: "development",
};

4. 添加 Sass 资源

  • src/sass/index.sass

    javascript 复制代码
    /* 可以省略大括号和分号 */
    .box3
      width: 100px
      height: 100px
      background-color: hotpink
  • src/sass/index.scss

    javascript 复制代码
    .box4 {
      width: 100px;
      height: 100px;
      background-color: lightpink;
    }
  • src/main.js

    javascript 复制代码
    import count from "./js/count";
    import sum from "./js/sum";
    // 引入资源,Webpack才会对其打包
    import "./css/index.css";
    import "./less/index.less";
    import "./sass/index.sass";
    import "./sass/index.scss";
    
    console.log(count(2, 1));
    console.log(sum(1, 2, 3, 4));
  • public/index.html

    javascript 复制代码
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>webpack5</title>
      </head>
      <body>
        <h1>Hello Webpack5</h1>
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="box3"></div>
        <div class="box4"></div>
        <script src="../dist/main.js"></script>
      </body>
    </html>

5. 运行指令

javascript 复制代码
npx webpack

打开 index.html 页面查看效果

处理 Styl资源

1. 下载包

javascript 复制代码
npm i stylus-loader -D

2. 功能介绍

  • stylus-loader:负责将 Styl 文件编译成 Css 文件

3. 配置

javascript 复制代码
const path = require("path");

module.exports = {
  entry: "./src/main.js",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "main.js",
  },
  module: {
    rules: [
      {
        // 用来匹配 .css 结尾的文件
        test: /\.css$/,
        // use 数组里面 Loader 执行顺序是从右到左
        use: ["style-loader", "css-loader"],
      },
      {
        test: /\.less$/,
        use: ["style-loader", "css-loader", "less-loader"],
      },
      {
        test: /\.s[ac]ss$/,
        use: ["style-loader", "css-loader", "sass-loader"],
      },
      {
        test: /\.styl$/,
        use: ["style-loader", "css-loader", "stylus-loader"],
      },
    ],
  },
  plugins: [],
  mode: "development",
};

4. 添加 Styl 资源

  • src/styl/index.styl

    javascript 复制代码
    /* 可以省略大括号、分号、冒号 */
    .box 
      width 100px 
      height 100px 
      background-color pink
  • src/main.js

    javascript 复制代码
    import { add } from "./math";
    import count from "./js/count";
    import sum from "./js/sum";
    // 引入资源,Webpack才会对其打包
    import "./css/index.css";
    import "./less/index.less";
    import "./sass/index.sass";
    import "./sass/index.scss";
    import "./styl/index.styl";
    
    console.log(count(2, 1));
    console.log(sum(1, 2, 3, 4));
  • public/index.html

    javascript 复制代码
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>webpack5</title>
      </head>
      <body>
        <h1>Hello Webpack5</h1>
        <!-- 准备一个使用样式的 DOM 容器 -->
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="box3"></div>
        <div class="box4"></div>
        <div class="box5"></div>
        <script src="../dist/main.js"></script>
      </body>
    </html>

5. 运行指令

javascript 复制代码
npx webpack

打开 index.html 页面查看效果

相关推荐
孤狼warrior7 分钟前
爬虫进阶 JS逆向基础超详细,解锁加密数据
javascript·爬虫
前端炒粉24 分钟前
18.矩阵置零(原地算法)
javascript·线性代数·算法·矩阵
listhi52033 分钟前
利用React Hooks简化状态管理
前端·javascript·react.js
一点一木1 小时前
🚀 2025 年 10 月 GitHub 十大热门项目排行榜 🔥
前端·人工智能·github
华仔啊1 小时前
这个Vue3旋转菜单组件让项目颜值提升200%!支持多种主题,拿来即用
前端·javascript·css
非凡ghost1 小时前
Adobe Lightroom安卓版(手机调色软件)绿色版
前端·windows·adobe·智能手机·软件需求
BestAns2 小时前
Postman 平替?这款轻量接口测试工具,本地运行 + 批量回归超实用!
前端
CsharpDev-奶豆哥2 小时前
JavaScript性能优化实战大纲
开发语言·javascript·性能优化
专注前端30年2 小时前
Webpack进阶玩法全解析(性能优化+高级配置)
前端·webpack·性能优化
烛阴3 小时前
Lua世界的基石:变量、作用域与七大数据类型
前端·lua