问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

使用nodejs 批量给文章添加二维码图片

发布网友 发布时间:2022-10-07 08:03

我来回答

1个回答

热心网友 时间:2023-10-26 10:59

大家好,我是前端西瓜哥。

因为最近公众号没有涨粉,所以打算给我的个人博客网站(blog.fstars.wang)上的所有文章底部添加公众号的二维码。

为此我打算用 nodejs 写个批量处理文件的简单脚本。

我的具体需求是这样的。

文章都是用 markdown 文件写的,这是一种纯文本的文件格式,并且都位于 posts 文件夹下。

现在我们需要将 所有 markdown 文件的末尾都加上我的公众号二维码图片 ,即加上下面这种格式的内容。

其中有个模板文件,不需要添加图片,所以我们要设置一个 黑名单

此外 有些文章已经加了该图片,我们也需要将这些文章排除在外 ,防止文章出现两张相同图片。同时也能防止不小心多次执行脚本,导致不可逆的修改。

我们先看完整的代码。

我们先设置好要用到的几个变量,然后将它们全都放到文件开头。

放到开头是为了让我们在需要时快速修改,符合相关代码高内聚原则。如果这些变量流散在代码逻辑中,当我们要改配置时,就要找上半天。

这里我引入了 nodejs 内置的 fs 库。fs 指的是文件系统(File System),fs 库就是专门用来处理文件的这么一个库。

fs/promise 则是fs 的 promise 版,将原来 fs 方法的回调参数移除,然后返回一个 promise。

我们就用这个 promise 版的 fs,因为它能写出同步形式的代码,可读性会更好。

fs.readdir() 方法能够读取目录内容,返回一个字符串数组,里面是所有的文件名。

接下来我们就去遍历这个数组。这里有个 初学者容易犯的错误,就是会去使用 forEach 方法。

因为 forEach 是 for 循环的一层封装,会执行传入的回调函数。但 forEach 的这个函数并不是 async 函数,所以是无法等待 await 方法执行完的。

async 函数其实是挺新的特性,forEach 则是存在了很长时间,当时 forEach 并没有考虑 async 这种东西,为了兼容,以后也不会。

所以你需要使用原生的 for 循环方法。for 和 for...of 都可以。

然后我们检查一下文件名是否在黑名单中,如果在,跳过此轮循环,直接进入下一轮。

然后我们要将文件名、和它所在的目录名组合,生成一个绝对路径。

直接使用文件名是不行的,因为 脚本会以被执行时所在的工作目录进行路径计算的,文件名是个相对于指定目录的相对路径,相对工作目录不一定是正确的。

接着是使用 fs.readFile 读取文件内容,记住要将 encoding 设置为 'utf8',否则你会拿到一个二进制的内容。

如果文件中已经有图片了,就跳过。

否则在文件末尾通过 fs.appendFile 方法添加图片内容。

脚本写好了,我们准备执行了。

首先为了可以吃后悔药,我强烈建议你想将文件通过版本控制软件(如 git),先存一个档。当脚本配合得不是很好时,我们可以轻松愉快地回滚到修改前的版本。当然拷贝一份作为备份也行。

总之,备份很重要。

改改配置,然后执行。

成功!

大家可以去我的 blog.fstars.blog 看看,现在所有文章下都有这二维码图片了。

nodejsfs模块(nodejsfs模块)

在Node.js中,可以使用require函数来引入模块。Node.js中的require函数是用来加载模块的函数,它会按照搜索规则,搜索模块的文件路径,并返回模块的导出对象。 要引入nodeglobal文件夹下的模块,首先需要使用fs模块来读取nodeglobal文件夹下的文件列表,以查找模块所在的路径。 然后,可以使用require函数来引入模块,例如: constm...

微信小程序之生成图片分享

首先,在wxml代码中添加绘图区域组件,然后编写JS代码进行绘图操作。步骤包括绘制背景图、文字和小程序码图片。通过wx.getImageInfo下载背景图,并使用ctx.drawImage将其绘制到画布上。接着,在画布上添加居中显示的文字,并根据需要拆分长文本。最后,绘制小程序码图片,类似于绘制背景图。生成分享图后,可以...

利用微信小程序扫码授权

0表示已扫码未授权,1表示已经授权confirmnickName、openid,头像等-小程序的允许授权时确认的接口踩坑点scene长度为最大32字符,利用nodejs的uuid.v4生成的值超过32位解决方案

即时在线聊天源码?

8.群功能:设置群二维码、群公告、群共享文件、顶置聊天、消息免打扰,屏蔽群信息、禁言、举报、群管理、查找聊天记录、禁止全员相互加好友、清空聊天记录等。9.好友聊天:文字、语音、音视频通话、收藏、照片、小视频、各种表情、传送文件、发送位置、引用回复、撤回、复制、删除、收藏、撤回、录制、多乎...

怎样在vue中使用ts(详细教程)

本文介绍了如何在vue中使用ts的示例代码,分享给大家,具体如下:注意:此文并不是把vue改为全部替换为ts,而是可以在原来的项目中植入ts文件,目前只是实践阶段,向ts转化过程中的过渡。ts有什么用?类型检查、直接编译到原生js、引入新的语法糖为什么用ts?TypeScript的设计目的应该是解决JavaScript的“...

web前端开发都包括哪些技术

称之为“css样式”,CSS要熟练掌握float、position、width、height,以及对于的最大最小、会使用百分百、overflow、margin、padding,标题字体、颜色变化,或为标题加入背景图片、边框等等,这些都是跟布局有关系的样式,必须要掌握的。3、JS(java)—— 行为 java是用来实现网页上的特效效果。如:鼠标滑过...

web前端开发需要用到哪些知识

其中nodejs最常用到的就是npm包管理器,不用到各个网站去下载资源包。 数据库 的学习可以选择MongoDB或者MySQL,前者与Nodejs的契合度更好,不过现在大多数网站都是 PHP +Mysql的组合,如果有学PHP的打算的话,可以先学习 Mysql 。 5. ECMAScript 6 JavaScript 的语言标准。ES6中加入了很多新的概念,也弥补了之前版本...

通联好老板添加云打印机

3、自动接单打印外卖平台订单小票设置教程:①找到商家服务②登陆商家账号完成授权③开启自动接单开关④开启订单提醒开关。4、可以提供给开发者对接,API接口支持PHP、Java、Python、NodeJS等语言如:餐饮、酒店、商城、超市、物流等,可整体或局部自定义小票文字大小,支持店铺、服务器定制。

如何把二维码添加到图片上 nodejs mongodb 二维码添加 nodejs怎么用 nodejs python golang nodejs 扫微信二维码加好友 nodejs npm nodejs koa
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
淘宝上的评价在哪里? 补充侦查的期限一个月是怎么算的 ...退出后跳动一直有回到这个页面!这是怎么了?! 为什么科学家都长寿 原神2.7池子抽什么角色比较好-2.7卡池优先抽取角色建议 联想m7206w粉盒怎么清零? 求男主忠犬女主女王的小说 忠犬类小说!:)lvwly52@qq.com 忠犬类型的穿越小说 如果亏损了欠钱不还怎么办 iphone6p更新系统出现了这个界面怎么更新? 我是2010年毕业的大专生 专业是汉语言文学 今年想考研 请大家告知下有关考研的具体情况 比如考研报名等等 餐饮vi设计价格一般在多少范围之内? 梦见河水很大是什么意思 梦见河水很大有什么征兆? 白面大馒头如何做 蛮兔怎么做好吃 车门上贴的防撞泡沫条如何清除干净 汽车车门上贴了宣传贴画,揭去后留下的一大片痕迹,擦洗不掉,请问有不伤害车漆表面的清除方法吗? 车门贴怎么去除 自建别墅一楼的楼台怎么设计 PPT使用的一此小问题(三个)?(追加30分) 什么的眼睛如何补充句子? 吃面怎么烧好吃 虾怎么做白粥 做虾粥的方法 为什么轻踩刹车也会触发abs 狗是怎么产生狂犬病毒 为什么狗有狂犬病? 狗怎么会得狂犬病 狗狗为什么会有狂犬病病毒?所有狗有携带?难道狗咬人,都要去打针? ABS提前早偿的触发条件 联想控股集团 和 联想集团 是什么关系? 关于描写雨天的句子 关于描写雨天的句子有哪些 描写雨天的句子 关于描写雨的句子 关于炒鱼的方法 关于炒鱼的做法 美白是这样吃出来的? 陕西一女子吃华莱士吃出不明白色物体,是否可以要求赔偿? 为什么没有党员证 烟台有哪些好的服装批发市场吗? 烟台哪里有外贸服装批发的 烟台女装批发市场在哪???有知道的朋友吗? 烟台哪里有好的服装批发市场 烟台哪里有外贸服装批发? 脚大穿什么样的靴子好看 我在烟台,请问哪里有批发外贸衣服的服装厂? 夜大是属于怎样的教育机构?适合什么文化程度的人去学习? 夜大是不是大专文凭啊?是不是直接能读的?有全日制的吗? 夜大在哪 iPhone和iPad哪个好? 小米2为什么连到无线网老是就断开连接了,怎么回事 小米2连接wifi 跟不稳定,自己掉线,然后自己再连上,路由器是正常的,别人的手机用着正常,求解救! 孩子不服管教怎么办 孩子不服管教的解决方法