webpack 之 Loader开发(一)

news2025/2/28 3:07:05

1. You may need an additional loader to handle the result of these loaders.(我们可能还需要一个额外的加载器来处理当前加载器的结果)

2. Loader可能经过一层层链路、又或者只有一层,最终的处理都是转化成 js,(Loader的本质是导出函数的JavaScript模块)Loader 只在编译时执行一次,也就是启动时,所以在开发过程中有改动,需要重启验证,又或者配合 webpack watch

3. 编写Loader原则

保持功能单一

我们项目中可能会配置很多,但要记住,要保持一个 Loader 的功能单一,避免做多种功能,只需完成一种功能转换即可

4. 实战

写一个 Markdown 转化Loader

vue.config.ts

module.exports = {
  publicPath: process.env.VUE_APP_PUBLIC_PATH,
  configureWebpack: {
    module: {
      rules: [
        {
          // md 后缀使用 mdLoader
          test: /\.md$/i,
          // 这里如果不写路径 默认从 node_modules 找
          use: './src/mdLoader',
        },
      ],
    },
  }
}

mdLoader.ts

首先看看Loader参数有哪些

const MdLoader = (content, sourceMap, meta) => {
  // 后缀是md文件的内容
  console.log(content, 'content')
  // 可被使用的 SourceMap 数据
  console.log(sourceMap, 'sourceMap')
  // meta 数据,可以是任何内容
  console.log(meta, 'meta')
}

 项目中的markdown文件:

更新时间:2021 年 10 月 11 日

**北京空间变换科技有限公司及其关联方(简称“**我们**”)作为巨量千川平台(“**巨量千川**”)的运营者,深知个人信息对您的重要性,我们将按照法律法规的规定,保护您的个人信息及隐私安全。本隐私政策详细描述了我们如何收集、使用和处理与您有关的个人信息。特别提示:希望您在使用巨量千川及相关服务前仔细阅读并理解本隐私政策,做出适当的选择。使用巨量千川以您接受本政策为前提条件。如对本政策内容有任何疑问、意见或建议,您可通过 customerservice.qianchuan@service.feishu.cn 与我们联系。本隐私政策将帮助您了解:**

 以上是打印的日志,是在Node的终端中打印,不是在浏览器中,Loader其实是Node语言

mdLoader.js

const MdLoader = (content, sourceMap, meta) => {
  const htmlCode = `<h2>Markdown示例文本</h2>
    <p>Markdown是一种轻量级的「标记语言」。</p>
    <blockquote>
      <p>引用文本:Markdown is a text formatting syntax inspired</p>
    </blockquote>
    <h3 id="普通内容">普通内容</h3>
    <ul>
      <li><strong>读一本好书,就是在和高尚的人谈话。</strong> ——歌德</li>
      <li><em>雇用制度对工人不利,但工人根本无力摆脱这个制度。</em> ——阮一峰</li>
    </ul>
    <h3 id="表格">表格</h3>
    <table align="center" width="400" cellspacing="1" border="1">
      <thead>
        <tr><th align="left">姓名</th><th align="center">年龄</th><th align="right">工作</th></tr>
      </thead>
      <tbody>
        <tr><td align="left">小可爱</td><td align="center">18</td><td align="right">吃可爱多</td></tr>
        <tr><td align="left">小小勇敢</td><td align="center">20</td><td align="right">爬棵勇敢树</td></tr>
      </tbody>
    </table>
    <h3 id="代码块">代码块</h3>
    <p>语言名称支持: <code>java</code>, <code>python</code>, <code>js</code>, <code>html</code>, <code>bash</code>, <code>json</code>, <code>yml</code>, <code>xml</code> ...</p>`
  return `module.exports = ${JSON.stringify(htmlCode)}`
  // return `export default ${JSON.stringify(htmlCode)}`
}

module.exports = MdLoader

假设 Md 处理最终如上所示,注意要导出的一定是 javaScript 函数

使用

index.vue

<template>
  <div v-html="MdText"></div>
</template>


const MdText = require('../docs/secret-i18n.md')
console.log(MdText, 'test')
export default {
  name: "Home",
  data () {
    return {
      MdText
    }
  }
};

这个时候浏览器控制台输出的MdText是被Loader处理过的了

页面的内容也能够正常展示了

当然这是只有一个Loader的情况,还会有Loader链式调用的情况~ 

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

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

相关文章

【LeetCode: 139. 单词拆分 | 暴力递归=>记忆化搜索=>动态规划】

&#x1f34e;作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域新星创作者&#x1f3c6;&#xff0c;保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享&#x1f48e;&#x1f48e;&#x1f48e; &#x1f34e;座右…

Ae:灯光选项

灯光选项 Light Options&#xff0c;用于调整光源的特性以及所产生的投影的相关设置。下面以属性最多的聚光灯的灯光选项为例进行说明。强度 Intensity光源的亮度。数值越大&#xff0c;光照越大。负值可产生吸光效果&#xff0c;即降低场景中其它光源的光照强度。颜色 Color默…

KNN、SVM、MLP、K-means分类实验

来源&#xff1a;投稿 作者&#xff1a;摩卡 编辑&#xff1a;学姐 数据集简介 实验使用了两个数据集&#xff0c;一个是经典的鸢尾花数据集(iris)另一个是树叶数据集(leaf) 鸢尾花数据集(iris)&#xff1a; 鸢尾花数据集发布于1988年7月1日&#xff0c;该数据集共有150条数…

客快物流大数据项目(一百一十二):初识Spring Cloud

文章目录 初识Spring Cloud 一、Spring Cloud简介 二、SpringCloud 基础架构图

使用cocopod就那么容易

第一节、配置coopod 打开终端替换ruby镜像源&#xff0c;系统自带的镜像源(gem sources --remove https://rubygems.org/)被墙挡住了或者&#xff08;https://ruby.taobao.org/&#xff09;已过期。需替换成新的镜像源。 1&#xff09;.先查看已有的镜像是否是&#xff1a;ht…

Spring Security --- 快速入门

概念 Spring Security是一个功能强大且高度可定制的&#xff0c;主要负责为Java程序提供声明式的 身份验证和访问控制 的安全框架Spring Security的底层主要是 基于 Spring AOP 和 Servlet 过滤器 来实现安全控制它提供了全面的安全解决方案同时授权粒度可以在 Web请求级和方法…

GPT-4 介绍

1 简介 本文根据openAI的2023年3月的《GPT-4 Technical Report 》翻译总结的。 原文地址&#xff1a;https://arxiv.org/pdf/2303.08774.pdf 原文确实没有GPT-4 具体的模型结构&#xff0c;openAI向盈利组织、非公开方向发展了。也没透露硬件、训练成本、训练数据、训练方法等…

攻防世界-web-easyupload

题目描述&#xff1a;一名合格的黑客眼中&#xff0c;所有的上传点都是开发者留下的后门 很简单的一个上传图片的界面。 我们先正常上传一个图片&#xff0c;从提示信息中可以看出我们是上传到了uploads目录下 然后通过bupsuite抓包修改请求&#xff0c;将文件名修改为1.php&a…

spark第七章:SparkStreaming实例

系列文章目录 系列文章目录 spark第一章&#xff1a;环境安装 spark第二章&#xff1a;sparkcore实例 spark第三章&#xff1a;工程化代码 spark第四章&#xff1a;SparkSQL基本操作 spark第五章&#xff1a;SparkSQL实例 spark第六章&#xff1a;SparkStreaming基本操作 spa…

HTML标签结构1.1(标题标签、文本格式化标签)

1&#xff0c;标签结构图&#xff1a; <!-- 加粗标签 双标签 --><strong>文字变粗</strong> <!-- 换行 单标签--><br><!-- 水平分割线 单标签--><hr> HTML标签与标签之间的关系&#xff1a; ①父子关系&#xff08;嵌套关系&…

开源代码只是心里安慰,开源软件如何选择?

大家好&#xff0c;欢迎来到停止重构的频道。 本期我们聊一个比较开放的话题&#xff0c;也是项目中经常遇到的问题。 在实际项目当中&#xff0c;由于开发成本、上线周期等因素&#xff0c;不可避免地需要使用开源软件。 开源软件意味着源码公开。 但是&#xff0c;使用开…

[零刻]EQ12EQ12Pro安装软路由教程

OpenWRT系统安装 安装前准备 1.U盘一个 2.WePE写盘工具 3.Openwrt固件 4.Img镜像写盘工具 安装步骤&#xff1a; 1.首先下载WePE写盘工具&#xff0c;制作一个PE系统安装环境&#xff0c;启动软件后&#xff0c;选择安装PE到U盘 2.插入U盘后&#xff0c;刷新一下设备&#x…

【多微电网】计及碳排放的基于交替方向乘子法(ADMM)的多微网电能交互分布式运行策略研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Vue2 API-源码解析

目录 Vue.extend(option) delimiters functional Vue.component(id, Function | Object) Vue.directive( id, [definition] ) Vue.filter( id, function) Vue.nextTick() Vue.set() Vue.delete(target, index/key) Vue.compile(template) Vue.observable(object) …

相机的内参和外参介绍

注&#xff1a;以下相机内参与外参介绍除来自网络整理外全部来自于《视觉SLAM十四讲从理论到实践 第2版》中的第5讲&#xff1a;相机与图像&#xff0c;为了方便查看&#xff0c;我将每节合并到了一幅图像中 相机与摄像机区别&#xff1a;相机着重于拍摄静态图像&#x…

智安网络|Ddos攻击原理和防范方法,你值得拥有

这几年网络越来越容易崩溃&#xff0c;今天不是这个网站崩&#xff0c;就是那个网站进不去&#xff0c;去年各个省份的健康码也接连崩溃&#xff0c;大家在寒风冷冽的冬天排队几小时做核酸&#xff0c;为什么现在的APP、网页都那么容易崩&#xff1f;还是同样的理由&#xff0c…

[Java·算法·困难]LeetCode10. 正则表达式匹配

每天一题&#xff0c;防止痴呆题目示例分析思路1题解1&#x1f449;️ 力扣原文 题目 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符 * 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整…

Doubbo

目录 1.简介 2.架构 3.配置监控中心 4.模拟服务提供者 5.模拟服务消费者 6.消费者的其他配置 6.1协议 6.2启动时检查 6.3超时和重试 6.4负载均衡 7.补充 1.简介 Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RP…

【Vue-Spring跨域Bug已解决】has been blocked by CORS policy: The value of the······

文章目录一.问题发现二.问题解决过程2.1 询问AI结果2.2 问题解决三.知识点一.问题发现 报错内容&#xff1a; p://localhost:8001/user/login’ from origin ‘http://localhost:3001’ has been blocked by CORS policy: The value of the ‘Access-Control-Allow-Credentia…

我决定给 ChatGPT 做个缓存层 Hello GPTCache

&#x1f31f; 写在前面黄老板的一句【AI 的 iPhone 时刻已至】震撼了半个科技圈。或许&#xff0c;应该把这句话再扩展一下&#xff1a;AI 的 iPhone 时刻早已势不可挡&#xff0c;它不是平静随和地跟大家 say hi&#xff0c;而是作为一个强悍的巨人携着一把名为 ChatGPT 的斧…