今日发现了一个hexo-renderer-mdx渲染插件,可以直接对mdx文件进行渲染,而且与md的渲染器可以共存。查阅了mdx的文档,它的一大特性就是支持JavaScript,比如大括号中的表达式({1 + 1})和ESM(importexport)(引入插件、变量、函数等)。发觉这其中有许多可玩的东西,几乎是敞开了一个面向前端的大门。鄙人虽玩这个hexo博客五六年了,对于前端的了解也仅限于html+css+一点点js,完全没有接触过react/vue等前端框架。mdx的出现让我有机会可以在博客中直接使用jsx语法,从而可以使用react/vue等前端框架的组件。

今日便开始尝试一番。之前用LaTeX比较久,很是享受那些自定义指令的功能——临时定义一个样式,然后便\lalala()重复利用起来,巨方便。通过mdx来执行jsx代码,便可以实现这种梦寐以求的效果。借由jsx还可以直接进行计算,比如输入{Math.PI} 得到3.141592653589793

用作自定义块也很方便,比如我有时候需要输入一些不好打的或者经常使用的文字,比如站点名,我的笔名、座右铭等,那么我便可以提前定义到一个字符上,然后在需要的地方直接调用。在做了如下的定义之后便可以这样写——本站名为{blog} ,站长{me},近来的座右铭“{motto}”出自《荀子·解蔽篇》,意思是要沉心静气,专一学问。

export const blog = '子虚栈'
export const me = '秉蕳'
export const motto = ' 虚一而静,浊明外景。'

本站名为子虚栈 ,站长秉蕳,近来的座右铭“ 虚一而静,浊明外景。 ”出自《荀子·解蔽篇》,意思是要沉心静气,专一学问。

很好玩吧。经过测试,mdx插件目前基本支持md语法,但代码不高亮、数学公式不能渲染,或许需要引用一些组件什么的,等下再摸索。

图片测试:J君养的宠物可达鸭

接下来,开始学习点React了,希望过两天能做出来类似duckquill主题作者主页那样的效果。