webpack原理之开发第一个loader

news2024/9/22 23:31:31

一. 搭建项目结构

整体项目结构如图:
在这里插入图片描述

1. 初始化包管理器package.json

npm init -y

在这里插入图片描述

2. 打包入口文件src/main.js

在这里插入图片描述

3. 单页面入口public/index.html

在这里插入图片描述

4. 配置webpack.config.js

const path = require('path')
const HtmlWebpackPlugin = require("html-webpack-plugin")

module.exports = {
  entry: "./src/main.js",
  output: {
    path: path.resolve(__dirname, "./dist"),
    clean: true
  },
  module: {
    rules:[]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: path.resolve(__dirname, "public/index.html"),
    }),
  ],
  // 开发服务器
  devServer: {
    host: "localhost", // 启动服务器域名
    port: "8888", // 启动服务器端口号
    open: true, // 是否自动打开浏览器
  },
  // 模式
  mode: "development", // 开发模式
  devtool: "eval-source-map", // 开发环境下使用
}

5. 安装依赖

npm i webpack webpack-cli html-webpack-plugin webpack-dev-server -D

6. 配置开发环境package.json打包命令

 "scripts": {
    "dev": "npx webpack serve --config ./webpack.config.js"
  },

7. 打包看效果

npm run dev

在这里插入图片描述

至此基于webpack的一个简单的项目开发环境就搭建完成啦

二、开发第一个loader

1. 编写loader函数,该函数接收一个参数source,表示需要转换的文件内容,然后对source进行处理并返回新的内容。

例如,以下是一个简单的loader函数:

/*
  loader就是一个函数
  当webpack解析资源时,会调用相应的loader去处理
  loader接受到文件内容作为参数,返回内容出去
    content 文件内容
    map SourceMap
    meta 别的loader传递的数据
*/

module.exports = function (content, map, meta) {
    console.log('loader加载的资源', content);
    return content;
};

2. 在webpack配置文件中添加loader的配置,可以使用相对路径或绝对路径指向loader函数所在的文件。

我们可以在webpack配置文件中添加以下代码:

module.exports = {
  // ...
   module: {
    rules: [
      {
        test: /\.js$/,
        loader: "./loaders/custom-loader.js",
      },
    ]
  },
};

3. 在main.js同级目录下创建一个test.js,然后再main.js中导入

  • test.js
    在这里插入图片描述

  • main.js
    在这里插入图片描述

4. 运行看效果

npm run dev

在这里插入图片描述
在这里插入图片描述
可以看到日志中有loader处理js文件时的输出日志,代表我们的第一loader就创建成功啦,虽然这个loader只是个过客,并没有对我们的js文件做任何处理,哈哈哈

但是通过这个例子,我们可以清晰的认识到loader的工作原理和运行方式,这为后面我们写比较复杂的 loader做了铺垫。

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

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

相关文章

ChatBot聊天机器人学习1

1、Bot定义 能执行大量自动化、高速或机械式、繁琐的工作的计算机程序,包括但不仅限于聊天功能 2、Retrieval-based KE(知识网络)基于信息的提取。(检索的过程中有延迟,设置比较快捷的检索方式) 2.1 Int…

一看就懂的gulp操作指南:让前端工作变得更加轻松

文章目录 I. 简介什么是gulp为什么要使用gulp安装gulp II. Gulp入门任务(task)和流(stream)的概念使用gulp来处理文件基本的gulp任务(拷贝文件、压缩文件、编译Sass等) III. Gulp进阶使用插件开发面向生产的…

基于Python+tensorflow深度学习VGG-19图像风格迁移+自动去噪(MNIST数据集)机器学习+人工智能+神经网络——含全部Python工程源码

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境TensorFlow 环境 模块实现1. 图片处理2. 模型构造 系统测试工程源代码下载其它资料下载 前言 本项目基于 MNIST 数据集,使用 VGG-19 网络模型,将图像进行风格迁移,实现去噪功…

数字信号处理课程设计——调制与解调

文字目录 数字信号处理课程设计 摘要: 1绪论 1.1通信信号的调制与解调 1.2设计题目 2卷积定理和希尔伯特公式理论推导 2.1卷积定理 ​2.2希尔伯特公式 3信号DSB调制与希尔伯特解调 3.1过程框图 3.2相关理论推导 3.2.1卷积定理在调制中的应用 3.2.2希尔…

某马 qiankun 公开课 学习记录

端午早晨阳光正好,起来学习一小下 客观评价一哈:此视频适合不了解 qiankun 的朋友入门观看,更详细的使用方法还是推荐 qiankun 官网哦,老师讲的生动活泼,值得萌新一听 某马 qiankun 公开课 - bilibili ovo很多公司的…

高通Camera Log Debug 知识点

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、Camx UMD Log Debug二、Camx KMD log Debug三、常用缩写解释四、参考文献 一、Camx UMD Log Debug 1.1 两种方式设置camx UMD Log /vendor/etc/cam…

GPT-3.5眼中的编程语言之最:Python的卓越之处

当谈论编程语言的选择时,每个开发者都有自己的偏好和理由。作为GPT-3.5,以我的分析和学习能力,我也有自己心目中的编程语言之最。在众多编程语言中,Python在我的眼中独树一帜,是最令人着迷和受欢迎的编程语言之一。 首…

面试经典150题(1)

文章目录 前言除自身以外数组的乘积要求思路代码 跳跃游戏|要求题解代码 跳跃游戏||要求题解代码 前言 今天开始我将陆续为大家更新面试经典150题中较难理解的题目。今天我为大家分享的是,除自身以外数组的乘积、跳跃游戏| 和 跳跃游戏||。 除自身以外数组的乘积 …

【unity之UiI专题】GUI(IMGUI)详解

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

AI 绘画工具 Stable Diffusion 本地安装使用

最近要用到 AI 绘画,所以研究了下目前市面上的 AI 绘画工具,真可谓是琳琅满目,但主流的还是 Stable diffusion 和 Midjourney 两大阵营。 Midjourney 不多说,开箱即用,对新手非常友好,但不免费&#xff0c…

Linux基础(二)—— 怎么在VMware/WSL中安装Ubuntu系统

文章目录 01 | VMware安装Ubuntu02 | WSL2安装Ubuntu 虚拟机安装Linux的方式分为两种:APP安装、WSL安装 APP安装就是常见的VMware VirtualBox安装的方式,而WSL是Windows系统自带的一个虚拟机应用,可以更好的与Windows进行信息交互&#xff08…

判断是否为美丽数组

判断是否为美丽数组c思路和实现 这段代码的功能是对于给定的多个序列,判断每个序列是否是一个 beautiful 序列。没次读取当前的序列判断之后再加入下一个数字进序列。 首先,输入一个整数 t,表示测试数据组数。 对于每组测试数据,…

【初识C语言】字符串+转义字符+注释

文章目录 1. 字符串2. 转义字符转义字符表常见转义字符 3. 注释 1. 字符串 “hello world.\n” 上面这种由双引号引起的一串字符就被称为字符串; 字符串的存储 C 语言当中没有字符串类型,如果想要将字符串存储起来的话就需要用到字符串数组。 #include…

Excel VBA 编程入门

Visual Basic for Applications(VBA)是一种用于 Microsoft Office 套件中的编程语言,它可以帮助您自动化重复性任务、定制应用程序以及增强工作效率。本文将向您介绍 Excel VBA 编程的基础知识,并通过示例帮助您入门。 1、启用“开…

融云WICC2023:成为「卷王」的路上,如何更好借力 AIGC

近期,“融云 WICC2023 泛娱乐出海嘉年华”在广州成功举办,行业多方力量与数百位开发者汇聚一堂,共同探讨出海人布局全球的突围之道。关注【融云全球互联网通信云】了解更多 在嘉年华的圆桌会议环节,白鲸出海创始人&CE…

Axure教程—计数器

本文将教大家如何用AXURE制作计数器(商品购件数的交互设计) 一、效果 预览地址:https://uf9ie1.axshare.com 二、功能 1、用户点击“”号时数值加1 2、用户点击“-”号时数值减1 三、制作 数值 拖入一个矩形组件,其大小设置为164…

个人一年工作情况总结报告

个人一年工作情况总结报告篇1 转眼间又到了年终岁尾,这一年就要在很充实忙碌的工作中过去了。在这一年里,我收获了很多也积累了不少的工作经验。同时在两位领导和各位主管的帮助与支持下,我很好的完成了本职工作。作为一名办公室文员&#xf…

云计算成本大揭秘:硬件、研发、电力等各项成本都在这里!

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 云计算作为一种技术和商业模式,已经深深地影响了全球的IT行业和各种商业运营。云服务商的主要模式以订阅为基础,一旦应用程序和工作负载移动到云上,它们通常会停留在那里,订阅…

js blob 文件上传

js blob 文件上传 js中的文件处理和文件上传掌握得更扎实,有更深入的理解,底层原理 ps.项目中使用插件上传 filereadermime类型筛选单文件的2种处理方案多文件&文件上传进度管控 Ajax文件上传时:Formdata、File、Blob的关系-腾讯云开发者…

基于Java端游账号销售管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…