博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hexo插件之Hexo-UUID
阅读量:6007 次
发布时间:2019-06-20

本文共 2038 字,大约阅读时间需要 6 分钟。

在我之前的中,提到:

Hexo 每次 generate 后 post._id 会变化,导致和多说关联无效,评论无法显示

我的解决方法是给每篇文章手动增加了uuid属性,手动 不符合程序猿懒的个性,不如写个插件了。

有朋友也许会问为什么不用 permanent link 或者 创建时间戳 等作为关联媒介,我想这2个对于我来说都可能不是一直不变的,所以我更倾向于一个我不会去改变的属性,?。

废话不多说,开始写代码,看完一遍 文档后,可以从 Hexo创建文章后的这里入手,Hexo创建文章后会触发new事件,同时携带文章的结构体作为参数:

{    "path": "/the/path/your/post/will/stored/in",    "content": "---\ntitle: some title\ndate: 2016-05-20 22:00\ntags:\n---\n"}

解决方案就是修改此处post内容,并写入path指向的文件地址。

码代码开始,这里就只用ES2015语法写了:

index.js:

'use strict';const HexoUuid = require('./lib/hexo-uuid');hexo.on('new', HexoUuid);

lib/hexo-uuid.js:

'use strict';const uuid = require('uuid');const fs = require('fs');module.exports = (post) => {  let lines = post.content.split('\n');  let index = lines.findIndex(item => item === 'uuid:');  if (index > -1) {    lines[index] += (' ' + uuid.v1());  } else {    lines.splice(1, 0, 'uuid: ' + uuid.v1());  }  post.content = lines.join('\n');  if (post.path !== false) {    fs.writeFile(post.path, post.content);  }};

最后,tests/index.js:

'use strict';const should = require('chai').should();const Hexo = require('hexo');const HexoUuid = require('../lib/hexo-uuid');const hexo = new Hexo(__dirname, {  silent: true});hexo.on('new', HexoUuid);describe('Post With User Pre-defined UUID Attribute', () => {  let post = {    path: false,    content: `---title: I love Hexo!uuid:date: 2016-05-20 16:20tags:---    `  };  hexo.emit('new', post);  it('Post should have uuid', () => {    let uuidPresence = /uuid: .{36}\n/.test(post.content);    uuidPresence.should.equal(true);  });});describe('Post Without User Pre-defined UUID Attribute', () => {  let post = {    path: './tmp/test.md',    content: `---title: I love Hexo!date: 2016-05-20 16:20tags:---    `  };  hexo.emit('new', post);  it('Post should have uuid', () => {    let uuidPresence = /uuid: .{36}\n/.test(post.content);    uuidPresence.should.equal(true);  });});

通过以上步骤,总体对Hexo的插件编写有了新的认知,毕竟我也是刚入门Hexo, 插件使用起来就更简单了:

npm install hexo-uuid --save

安装完成后,就和普通创建文章一样,hexo new whatever-your-fancy-title-is 就可以轻松拥有UUID属性了。

国际惯例

转载地址:http://aspmx.baihongyu.com/

你可能感兴趣的文章
【转】使用lockbits方法处理图像
查看>>
程序员编程艺术第二十一~二章:发帖水王及扩展,与最短摘要生成(12.07修订)...
查看>>
原创1:dell sc1425老服务器安装vmware虚拟机esxi 5.0-系统配置
查看>>
独孤九剑的九式说明
查看>>
target='_blank' 安全漏洞
查看>>
点击图像获取RGB
查看>>
sql语句快速参考
查看>>
C 练习(三)
查看>>
浏览器的标准模式和怪异模式
查看>>
从来没有天才 靠自己创造未来——Leo鉴书(29)
查看>>
项目代码风格要求
查看>>
Java经典封装JDBC模板(充分体现面向对象思想)(转)
查看>>
C语言内存对齐详解(3)
查看>>
java的PreparedStatement中使用like时的问题
查看>>
插入排序之表插入排序
查看>>
JS编码解码
查看>>
[傅里叶变换及其应用学习笔记] 二. 周期性,三角函数表示复杂函数
查看>>
spark on yarn模式:yarn命令杀除当前的application
查看>>
Android中自己定义组件和它的属性
查看>>
与jquery serializeArray()一起使用的函数,主要来方便提交表单
查看>>