Simonzhangs' blog Simonzhangs' blog
首页
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • JS设计模式总结
  • 《Vue》
  • 《React》
  • 《TypeScript 从零实现 axios》
  • TypeScript
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • apple music
  • extension
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Simonzhangs

前端学习探索者
首页
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • JS设计模式总结
  • 《Vue》
  • 《React》
  • 《TypeScript 从零实现 axios》
  • TypeScript
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • apple music
  • extension
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前端工程化

  • 性能优化

  • Webpack

    • Webpack基本使用
    • vue3+webpack从零开始配置
    • 我手写了一个loader
      • 缘由
      • 原理
      • 一个简单的loader书写
        • 1. 初始化项目
    • Tree shaking原理
  • 《综合性面试问题》
  • Webpack
simonzhangs
2022-05-30
目录

我手写了一个loader

我们知道webpack只能处理js文件,对于非js的文件以及其他处理是通过loader来进行打包和plugin利用webpack声明周期进行相应的操作。

Webpack的loader本质上就是一个函数,对给定的输入进行处理,然后输出webpack能够识别的js代码。知道这一点,其实写loader就很简单了。

# 缘由

关于为什么想写一个loader呢,是因为我在写博客过程中,会参考很多其他博客、网站上面的内容,往往会贴在文章的末尾,但是读者并不知道是来自哪个网站的,可能想进一步点击的兴趣不会很大,同时也有可能不会信任这个链接。我在想如果可以把链接是归属于那个网站的,自己后来进一步查看的时候也会更方便,这样子问题不就解决了嘛!

这里我写的loader是用来处理.md格式文件,在.md格式输出.html文件时,在对应的链接中添加上归属网站的favicon.ico,这就是网站的鲜明标识了。

# 原理

loader本质上是运行在node环境下的一个模块,所以会导出内容;loader的功能一般比较单一,一般只做单一的功能;如果多个loader来处理同一个文件,是链式调用的,依次从右往左进行调用,右边的输出作为左边的输入。

# 一个简单的loader书写

# 1. 初始化项目

初始化项目

npm init -y

安装依赖

既然要写webpack的loader,自然要安装webpack以及webpack的脚手架、还有热更新服务器。(注意咱们用的是webpack5.0版本)

npm install webpack webpack-cli webpack-dev-server -D

新建一个index.html文件

在dist文件目录下,建立一个模板html文件,并引入打包后的.js文件。

<body>
<script src="./bundle.js"></script>
</body>
1
2
3

新建入口文件

入口文件放在src/index.js,也就是后续webpack打包的入口,打包后的js文件即引入到上一步的index.html中。

创建webpack.config.js文件

这一步很重要,面试的过程经常会问,在vue项目中webpack是自己配置的,还是有@vue/cli脚手架配置的,这里其实想考察的是对于webpack的理解。


参考文章:

手把手教你在 Webpack 写一个 Loader (opens new window)

编辑 (opens new window)
上次更新: 2022/06/16, 10:52:37
vue3+webpack从零开始配置
Tree shaking原理

← vue3+webpack从零开始配置 Tree shaking原理→

最近更新
01
一些有意思的类比
06-16
02
the-super-tiny-compiler解析
06-06
03
计算机编译原理总概
06-06
更多文章>
Theme by Vdoing | Copyright © 2021-2022
蜀ICP备2021023197号-2
Simonzhans | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
  • 飙升榜
  • 新歌榜
  • 云音乐民谣榜
  • 美国Billboard榜
  • UK排行榜周榜