03-loader使用

这篇具有很好参考价值的文章主要介绍了03-loader使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

loader其实就是解析器,用来解析模块的,前面说到过webpack只认识js和json文件。配置方式如下:

  • module.rules
  • rules下放的是一个个的rule,一个rule对应一种解析规则。rule是一个对象,可设置多个属性:
    • test:对于模块资源进行匹配,通常使用正则表达式
    • use:
      • loader:必须有一个loader,对应的值为一个字符串;
      • options:可选属性,值为字符串或对象,值会被传到loader中。
    • loader:rule.ues的简写。

处理css

css样式

  1. 安装用来解析css的loader:npm i css-loader style-loader

  2. 在webpack的配置文件中使用配置css的解析规则:

     module:{
        rules:[
          {
            test:/\.css$/,
            use:["style-loader","css-loader"]
          }
        ]
      }
    

经过上述操作我们就可以使用css了,下面进行css使用的测试:

  1. 在src下新建style目录,并在目录下编写index.css文件。

    body,
    html {
      height: 100%;
      padding: 0px;
      margin: 0px;
    }
    
    #app {
      color: #1890FF;
      text-align: center;
      font-weight: 700;
      line-height: 100px;
    }
    
  2. 在index.js文件中引入index.css。

    import './style/index.css'
    
  3. 重新执行npm run serve可以看到页面的字体的样式。(每次修改webpack的配置都需要重启服务)

使用less

  1. 安装解析less的loader:npm i less less-loader

  2. 编写less解析的规则

    {
        test:/\.less$/,
        use:["style-loader","css-loader","less-loader"]
    }
    

使用postCSS

PostCSS是一个通过JavaScript来转换样式的工具;这个工具可以帮助我们进行一些CSS的转换和适配,比如自动添加浏览器前缀、css样式的重置;但是实现这些工具,我们需要借助于PostCSS对应的插件。

如何使用PostCSS
  1. 查找PostCSS在构建工具中的扩展,比如webpack中的postcss-loader
  2. 选择可以添加你需要的PostCSS相关的插件
postcss-loader

在webpack中使用postcss就是使用postcss-loader来处理的;安装:npm install postcss-loader autoprefixer -D

rules:[
      {
        test:/\.css$/,
        use:["style-loader","css-loader",{
          loader:"postcss-loader",
          options:{
            postcssOptions:{
              plugins:[
                require("autoprefixer")
              ]
            }
          }
        }]
      }
]

比如:**user-select: none;**会被打包为:

#app{
    height:100%;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
}
postcss-preset-env

比autoprefixer更好用,可以把十六进制八位转为rgba。npm install postcss-preset-env -D

rules:[
      {
        test:/\.css$/,
        use:["style-loader","css-loader",{
          loader:"postcss-loader",
          options:{
            postcssOptions:{
              plugins:[
                require("postcss-preset-env")
              ]
            }
          }
        }]
      }
]
postcss.config.js

将postcss的配置单独抽出来。

module.exports = {
  plugins:[
    require('postcss-preset-env')
  ]
}
@import样式处理

在我们使用@import的时候,如果按照上述写法配置webpack则不会让postcss处理@import的CSS,因为是通过js去先找到当前的css由于@import是CSS语法,所以不会让postCSS解析,下面这个配置可以让其加载。

rules:[
      {
        test:/\.css$/,
        use:["style-loader",{
          loader:"css-loader",
          options:{
            importLoaders:1
          }
        },{
          loader:"postcss-loader",
          // 可以在postcss.config.js里面配置
          // options:{
          //   postcssOptions:{
          //     plugins:[
          //       require("autoprefixer")
          //     ]
          //   }
          // }
        }]
      }
]
封装style处理规则loader

因为关于style样式处理用相同的一部分,所以封装简写代码

const { resolve } = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')

const getCssLoaders = (loaders = []) => ( ['style-loader', {
  loader: 'css-loader',
  options: {
    importLoaders: 1
  }
}, 'postcss-loader' , ...loaders])

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

处理图片svg资源

file-loader使用

  1. 安装file-loader:npm i file-loader
    文件的名称规则
  • [ext]: 处理文件的扩展名;
  • [name]:处理文件的名称;
  • [hash]:文件的内容,使用MD4的散列函数处理,生成的一个128位的hash值(32个十六进制);
  • [contentHash]:在file-loader中和[hash]结果是一致的(在webpack的一些其他地方不一样,后面会讲到);
  • [hash:]:截图hash的长度,默认32个字符太长了;
  • [path]:文件相对于webpack配置文件的路径;
  1. 配置规则
    {
            test: /\.(png|jpe?g|gif|svg)$/,
            use: [
              {
                loader: 'file-loader',
                options: {
                  name: "[name].[hash:6].[ext]",
                  outputPath:'img'
                }
              }
            ]
     }
    
url-loader

url-loader和file-loader的工作方式是相似的,但是可以将较小的文件,转成base64的URI

  • npm install url-loader -D
  • 但是开发中我们往往是小的图片需要转换,但是大的图片直接使用图片即可
    • 这是因为小的图片转换base64之后可以和页面一起被请求,减少不必要的请求过程;
    • 而大的图片也进行转换,反而会影响页面的请求速度;
  • 如何可以限制哪些大小的图片转换和不转换
  • url-loader有一个options属性limit,可以用于设置转换的限制
{
        test: /\.(png|jpe?g|gif|svg)$/,
        use: [
          {
            loader: 'url-loader',
            options: {
              name: "img/[name].[hash:6].[ext]",
              limit: 100 * 1024
            }
          }
        ]
}

处理TS文件

  • 可以通过TypeScript的compiler来转换成JavaScript:npm install typescript -D
  • 另外TypeScript的编译配置信息我们通常会编写一个tsconfig.json文件tsc --init
  • 之后我们可以运行 npx tsc来编译自己的ts代码:npx tsc

需要安装全局的TypeScript环境,使用npm i -g typescript ,可以使用tsc -V查看版本。

使用ts-loader

如果我们希望在webpack中使用TypeScript,那么我们可以使用ts-loader来处理ts文件:npm install ts-loader -D

 {
        test: /\.ts$/,
        exclude: /node_modules/,
        use: "ts-loader"
  }

也可以使用@babel/tranform-typescript配合babel使用文章来源地址https://www.toymoban.com/news/detail-498699.html

到了这里,关于03-loader使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ChatGPT】开源软件:ChatALL —— 我是 GitHub 榜一!(PS: 其实,小编本地 build run 了一下,就是一个组装 Chat UI ……)

    给第一次听说 ChatALL 的朋友介绍下它吧。很简单,它就是个 能让你同时和 ChatGPT、Bing Chat、Bard、文心一言、讯飞星火、Claude、HuggingChat、Alpaca, Vincuna、MOSS、ChatGLM 聊天的工具,帮你快速找到最靠谱的答案。 Concurrently chat with ChatGPT, Bing Chat, bard, Alpaca, Vincuna, Claude, ChatGLM, MOSS,

    2024年02月07日
    浏览(57)
  • WiFi模块原理图其实不难看懂

    Wi-Fi模块的原理图包括一些关键部件,如收发器、无线局域网(WLAN)收发器、天线、微处理器、射频(RF)放大器、电源管理等。 收发器和WLAN收发器根据IEEE802.11标准实现Wi-Fi网络功能,包括接入点实现和终端设备实现,基于半双工技术,实现了接入点和终端设备之间的连接,

    2024年02月10日
    浏览(34)
  • SU-03T语音模块的配置与使用

            由于笔者想做一个基于SU-03T的语音垃圾桶,浅略学习了SU-03T的基本配置。  当要下载配置文件时,b6与b7连接ch340g模块的tx与rx,vcc接5v。使用SU-03T专门的烧录软件。 打开智能公元网站  找到SU-03T的产品,点击创建。    随便选一个产品,把语言设为中文。  将引脚功

    2024年02月06日
    浏览(48)
  • 【SU-03T离线语音模块】:学习配置使用

    时不可以苟遇,道不可以虚行。 语音识别模块是在一种基于嵌入式的语音识别技术的模块,主要包括语音识别芯片和一些其他的附属电路,能够方便的与主控芯片进行通讯,开发者可以方便的将该模块嵌入到自己的产品中使用,实现语音交互的目的。 离线语音模块 与 在线语

    2023年04月09日
    浏览(38)
  • 【FusionInsight 迁移】HBase从C50迁移到6.5.1(03)6.5.1上准备Loader

    在FusionInsight HD集群的HBase数据迁移过程中,需要通过Loader将老集群FusinInsight C50上获取HBase的数据加载到新集群FusionInsight 6.5.1,因此需要在新集群FusionInsight 6.5.1中添加Loader以及具有相应权限的用户loaderUser。 本文主要介绍如何在新集群FusionInsight 6.5.1中创建loaderUser用户以及如何

    2024年02月09日
    浏览(44)
  • React 用来解析html 标签的方法

    在React中,解析HTML标签通常是使用JSX(JavaScript XML)语法的一部分。JSX允许您在JavaScript代码中编写类似HTML的标记,然后通过React进行解析和渲染。 以下是React中解析HTML标签的几种常见方式: 直接在JSX中使用标签:您可以在JSX中像使用HTML标签一样使用标签,React会将其解析为

    2024年02月14日
    浏览(30)
  • webpack自定义loader解析指定后缀名文件

    案例: webpack自定义loader解析 .chenjiang 后缀名的文件 整体目录: chenjiangLoader.js文件代码 test.chenjiang文件代码 配置webpack的loader 主入口文件代码 运行命令 前提要npm install webpack webpack-cli -D 访问index.html文件

    2024年02月07日
    浏览(37)
  • 【java】[maven]每次创建一个maven模块时java compiler版本就是1.6与实际版本不一致(解决本质问题)

    目录 方案一: 我没有使用 方案二:修改maven配置文件 前言:每次创建一个maven模块时java compiler版本就是1.6与实际版本不一致 使用的使用maven3.9.1 jdk17,但是每次创建一个maven模块都是会影响之前的模块。网上都是修改pom.xml 因为在项目中如果没有指定jdk的版本,重新运行的时

    2024年02月10日
    浏览(45)
  • 【node.js】03-http模块

    目录 一、什么是http模块 二、创建基本的WEB服务器 三、req请求对象 四、res响应对象 五、根据不同的url响应不同的JSON内容         http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一

    2024年02月15日
    浏览(75)
  • AI智能语音识别模块(SU-03T)

    32位RISC内核,运行频率240 M 支持dsp指令集以及fpu浮点运算单元 FFT加速器:最大支持1024点复数FFT/IFFT运算,或者是2048点的实数FFT/IFFT运算 内置高速SRAM,内置2MB闪存内置2.4W、单声道AB类功放 支持1路驻极体麦 支持L2S输入/输出。 支持5V电源输入 内置5V转3.3V,3.3V外部负载不超过15

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包