热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hexo中添加emoji表情

国庆的三天假前,都是玩CF和LOL的无限乱斗过来的,输了怨没随机到好的英雄,赢了就高高兴兴的?.在假期的最后一天,感觉时间过

国庆的三天假前,都是玩CF和LOL的无限乱斗过来的,输了怨没随机到好的英雄,赢了就高高兴兴的? .

在假期的最后一天,感觉时间过的太快,靠吃饭的技能没提升,虚度的时光倒是溜走了。

看了参考文献之后,原来将markdown 变成html的转换器叫做markdown渲染器.在Hexo中默认的markdown渲染器 使用的是hexo-renderer-marked,是Hexo版本,这个渲染器不支持插件扩展。另外一个 markdown 渲染器 hexo-renderer-markdown-it,这个支持插件配置,可以使用 markwon-it-emoji插件来支持emoji。需要将原来的 marked 渲染器换成 markdown-it渲染器。我使用的Hexo3

安装过程

安装新的渲染器

首先进入博客目录,卸载hexo默认的marked渲染器,安装markdown-it渲染器,运行的命令如:

cd Documents/blog
npm un hexo-renderer-marked --save
npm i hexo-renderer-markdown-it --save

之后安装markdown-it-emoji插件:

npm install markdown-it-emoji --save

编辑站点配置文件

这里的站点配置文件是指位于博客根目录下的 _config.yml,编辑它,然后在末尾添加如下内容:

# Markdown-it config
## Docs: https://github.com/celsomiranda/hexo-renderer-markdown-it/wiki
markdown:render:html: truexhtmlOut: falsebreaks: truelinkify: truetypographer: truequotes: '“”‘’'plugins:- markdown-it-abbr- markdown-it-footnote- markdown-it-ins- markdown-it-sub- markdown-it-sup- markdown-it-emoji # add emojianchors:level: 2collisionSuffix: 'v'permalink: truepermalinkClass: header-anchorpermalinkSymbol: ¶

上面的是hexo-renderer-markdown-it的所有选项的配置,详细的每一项配置说明,需要到Advanced Configuration中查看。

给新的渲染器添加twemoji

因为安装了markdown-it-emoji, :smile:渲染成?了,是Unicode字符表情。感觉不好看,参考文章的介绍,安装twemoji,安装命令如下:

npm install twemoji

安装完之后,编辑node_modules/markdown-it-emoji/index.js文件,最终文件像:

'use strict';var emojies_defs = require('./lib/data/full.json');
var emojies_shortcuts = require('./lib/data/shortcuts');
var emoji_html = require('./lib/render');
var emoji_replace = require('./lib/replace');
var normalize_opts = require('./lib/normalize_opts');
var twemoji = require('twemoji') //添加twemojimodule.exports = function emoji_plugin(md, options) {var defaults = {defs: emojies_defs,shortcuts: emojies_shortcuts,enabled: []};var opts = normalize_opts(md.utils.assign({}, defaults, options || {}));md.renderer.rules.emoji = emoji_html;//使用 twemoji 渲染md.renderer.rules.emoji = function(token, idx) {return twemoji.parse(token[idx].content);};md.core.ruler.push('emoji', emoji_replace(md, opts.defs, opts.shortcuts, opts.scanRE, opts.replaceRE));};

因为我安装twemoji的2.2.0之后,好像默认的是72X72,假如你不喜欢这个图片尺寸,可以通过css控制,在你的主题css中添加如:

img.emoji {height: 1em;width: 1em;margin: 0 .05em 0 .1em;vertical-align: -0.1em;
}

的css代码,代码来自Tips,,是控制同行显示的。


由于我个人使用的是hexo-theme-next主题,导致最终渲染的文章中的emoji图片,会自动绑定fancybox,而且有边框和图片看起来很小,需要修改两个文件。

  1. 编辑 themes/next/source/js/src/utils.js
    将文件中的$('.content img').not('.group-picture img')替换为$('.content img').not('.group-picture img,.emoji'),这是为了防止生成的emoji图片被fancybox绑定,点击表情的图片,放大表情。
  2. themes/next/source/css/_custom/custom.styl中添加

img.emoji {height: 1.5em;width: 1.5em;margin: 0 .05em 0 .1em !important;vertical-align: -0.1em;//override theme default stylepadding:0px !important;border:none !important;display:inline !important;
}


重新启动Hexo本地站点就可以看到 Unicode字符表情变成了图片表情。如:blush: ?

总结

明白markdown装html的叫做渲染器,学到npm卸载的命令。尝试了emoji-cheat-sheet.com 中的emoji-parser,暂时换不到,目前就用twemoji也不错,以后写博客的时候,加点表情或许更有意思呢。Hexo 开启调试模式的命令是hexo s --debug✌️

参考文献

  1. 让Hexo支持emoji表情
  2. Hexo添加emoji

转载于:https://www.cnblogs.com/fsong/p/5929773.html


推荐阅读
  • crossorigin注解添加了解决不了跨域问题_CORS与@CrossOrigin详解
    1、跨域的基本概念a、跨域的解释要了解跨域,首先需要知晓浏览器的同源策略,简单的说就是两个请求协议、端口、主机都相同,则两个请求具有相同的 ... [详细]
  • 1.安装cordovapluginaddcordova-plugin-file-transfercordovapluginaddcordova-plugin-fi ... [详细]
  • spring-session解决session一致性问题,Go语言社区,Golang程序员人脉社 ... [详细]
  • linux json 写sql注入,sql注入之json注入(php代码)
    环境phpstudyphp服务端代码security数据库中的users表中的username,password字段用户名adminJSON服务端代码大家实际测试中注 ... [详细]
  • 2019独角兽企业重金招聘Python工程师标准1、确认工程是否安装eslint-plugin-vue如图所示,确认工程里的package.json里是否有es ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 微信民众号商城/小顺序商城开源项目介绍及使用教程
    本文介绍了一个基于WeiPHP5.0开发的微信民众号商城/小顺序商城的开源项目,包括前端和后端的目录结构,以及所使用的技术栈。同时提供了项目的运行和打包方法,并分享了一些调试和开发经验。最后还附上了在线预览和GitHub商城源码的链接,以及加入前端交流QQ群的方式。 ... [详细]
  • delphi控件大全
    本文章已收录于:delphi控件查询:http:www.torry.nethttp:www.jrsoftware.orgTb97最有名的工具条(ToolBar) ... [详细]
  • ajax 跨域webapi 最简单的demo(只介绍Get)
    这几天遇到一个nodejs的项目,使用VSCode开发,需要连接数据库的,但是用nodejs连接数据库比较繁琐,需要安装很多 ... [详细]
  • UDP协议开发
    UDP是用户数据报协议(UserDatagramProtocol,UDP)的简称,其主要作用是将网络数据流量压缩成数据报形式,提供面向事务的简单信息传送服务。与TCP协议不同,UD ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 关键词: ... [详细]
  • 如何优化Webpack打包后的代码分割
    本文介绍了如何通过优化Webpack的代码分割来减小打包后的文件大小。主要包括拆分业务逻辑代码和引入第三方包的代码、配置Webpack插件、异步代码的处理、代码分割重命名、配置vendors和cacheGroups等方面的内容。通过合理配置和优化,可以有效减小打包后的文件大小,提高应用的加载速度。 ... [详细]
author-avatar
许更剑_725
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有