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 页面查看效果

相关推荐
aPurpleBerry16 分钟前
JS常用数组方法 reduce filter find forEach
javascript
GIS程序媛—椰子44 分钟前
【Vue 全家桶】7、Vue UI组件库(更新中)
前端·vue.js
DogEgg_0011 小时前
前端八股文(一)HTML 持续更新中。。。
前端·html
ZL不懂前端1 小时前
Content Security Policy (CSP)
前端·javascript·面试
乐闻x1 小时前
ESLint 使用教程(一):从零配置 ESLint
javascript·eslint
木舟10091 小时前
ffmpeg重复回听音频流,时长叠加问题
前端
王大锤43911 小时前
golang通用后台管理系统07(后台与若依前端对接)
开发语言·前端·golang
我血条子呢2 小时前
[Vue]防止路由重复跳转
前端·javascript·vue.js
黎金安2 小时前
前端第二次作业
前端·css·css3
啦啦右一2 小时前
前端 | MYTED单篇TED词汇学习功能优化
前端·学习