当前位置: 首页 > Web前端 > HTML

Hexo--Part2

时间:2023-04-02 12:29:37 HTML

内容1.Hexo支持流程图和时序图2.Hexo多行代码提供复制3.Hexo复制时添加版权Hexo支持流程图和时序图,需要其他编辑设备是否绘制和带图片导入?Hexo实现手写流程图也很简单,但是有一个小坑,小编被忽悠了好久,接下来手把手带大家过一遍。markdown语法可以通过mermaid或者flowchart来实现流程图,序列图可以是mermaid也可以是sequence,但是默认不识别该语法。只是当成普通的多行代码,需要安装插件。方法一:美人鱼支持流程图(graph)、时序图(sequenceDiagram)、甘特图(gantt),可以说支持很多。第二种配置教学方法稍微麻烦一点。在线编辑器地址:https://mermaidjs.github.io/m...,可以使用在线编辑器编辑流程图,下载SVG或者直接链接。安装官方说是通过yarn安装的(如果没有安装yarn,使用npminstall-gyarn安装)$yarnaddhexo-filter-mermaid-diagrams也可以使用npm:$npmihexo-filter-mermaid-diagrams官方插件url配置(1)修改站点配置文件_config.yml,在末尾添加#mermaidchartmermaid:##mermaidurlhttps://github.com/knsv/mermaidenable:true#defaulttrueversion:"7.1.2"#defaultv7.1.2options:#从https://github.com/knsv/mermaid/blob/master/src找到更多的api选项/mermaidAPI.js#startOnload:true//默认为true(2)下一个主题更改:在themes/next/_partials/footer.swig末尾添加{%iftheme.mermaid.enable%}{%endif%}主题可以改,包括默认|forest,re-hexoclean&&hexogenerate&&hexoserver--debug启动渲染也生效。例1.流程图示例```mermaidgraphTBstart(start)-->inputA[输入用户名和密码]inputA-->opA{数据库查询子类}opA-->conditionA{是否有该用户}conditionA--是-->conditionB{密码是否正确}conditionA--no-->inputAconditionB--yes-->opB[读取用户信息]conditionB--no-->inputAopB-->en(login)```mermaid图2.序列图示例```mermaidsequenceDiagramparticipantClientparticipantServerNoteleftofClient:SYN_SENTClient->Server:SYN=1seq=xNoterightofServer:SYN_RCVDServer->Client:SYN=1seq=yACK=x+1NoteleftofClient:ESTABLISHEDClient->Server:ACK=y+1NoterightofServer:ESTABLISHED```美人鱼序列图说什么美人鱼帮助文档:https://mermaidjs.github.io/,更多用法可以看里面介绍和语法。优点:颜色鲜艳;语法结构简单,无需先声明;可以指定方向;灵活,你可以改变风格。缺点:块模式提供了一个标准化的形状,没有标准的流程图。比如输入框的平行四边形不存在,需要自定义;加载和渲染慢,会出现多行代码样式。···mermaidgraphLRid1>id1]-->id2[id2]id2---id3(id3)id3---|text|id4((id4))id4-->|text|id5{id5}样式id1填充:#f9f,stroke:#333,stroke-width:4pxstyleid2fill:#ccf,stroke:#f66,stroke-width:2px,stroke-dasharray:5,5显示更多流程图使用视图:https://mermaidjs.github.io/f...如果流程图太长,会占用大部分界面空间。博客中设置了最大高度,居中显示,在themes/next/source/css/_custom/custom.styl下添加/*mermaidimagecentered*/.mermaid{text-align:center;max-height:300px;}方法二:flowchart+sequence安装支持流程图,安装:$npminstall--savehexo-filter-flowchart支持sequence图,安装:$npminstall--savehexo-filter-sequence配置(不必填)插件官方地址:flowchartsequence官方配置中提到需要更改站点配置文件_config.yml,添加:flowchart:#raphael:#optional,raphael.js的源url#flowchart:#可选,flowchart.js的源urloptions:#用于`drawSVG`的选项snap.svg.js的源url#下划线:#optional,underscore.js的源码地址#sequence:#optional,sequence-diagram.js的源码url#css:#optional,css的url,比如手绘主题options:theme:css_class:pro没有配置test也可以运行hexoclean&&hexogenerate&&hexoserver--debug开始渲染,同样生效。例1.流程图示例```flowst=>start:开始inputA=>inputoutput:输入用户名和密码opA=>operation:数据库查询子类conditionA=>condition:是否存在该用户conditionB=>condition:是否密码正确opB=>操作:读取用户信息e=>结束:登录st->inputA->opA->conditionAconditionA(yes)->conditionBconditionA(no)->inputAconditionB(yes)->opB->econditionB(no)->inputA```flowchart流程图展示2.时序图例子```sequenceparticipantClientparticipantServerNoteleftofClient:SYN_SENTClient->Server:SYN=1seq=xNoterightofServer:SYN_RCVDServer->Client:SYN=1seq=yACK=x+1NoteleftofClient:ESTABLISHEDClient->Server:ACK=y+1没有时间显示多行代码;实现很简单。缺点:样式不可更改,黑白界面;流程图语法需要先声明再使用。设置最大高度和居中显示,背景色,滑动超出部分:.flow-chart{text-align:center;最大高度:300px;溢出:自动;背景:#f7f7f7;}.sequence{文本对齐:居中;最大高度:300px;溢出:自动;background:#f7f7f7;}sequence的编辑器不分心,没有提供class,需要在node_modules/hexo-filter-sequence/lib/renderer.js中修改,大概22行,同时设置Addclass作为id:返回开始+'

'+end;特别注意:很多人说sequence设置无效,需要改snap是raphael的,也有说把站点配置文件的external_link改成false的。我已经尝试过了,但它不起作用。为什么子时序图还是失败了?小编找遍了整个工程,差点以为是motion.js中的sequence重叠问题,打算改插件,但是没必要!!如果你用的是Hexo,时序图放在md文件末尾,渲染无效,请在文末输入一个回车,没错,只需要一个回车就可以解决问题。.不知道是不是Hexo的bug。所有多行代码在文末都会有渲染问题,不是顺序问题。Hexo多行代码提供复制和添加复制按钮和响应js:clipboard.jsvarinitCopyCode=function(){varcopyHtml='';copyHtml+='';copyHtml+='copy';copyHtml+='';$(".highlight.codepre").before(copyHtml);newClipboardJS('.btn-copy',{target:function(trigger){returntrigger.nextElementSibling;}});}资源下载:点击下载下载完成后,clipboard.js和clipboard-use.js放在themes/next/source/js/src/下,更改themes/next/layout/_layout.swig,添加这样当鼠标在代码区时会在右上角显示copy。Hexo在复制的时候加上了版权。虽然在主题配置文件_config.yml中修改post_copyright可以在文章底部添加版权声明信息,但是直接appended复制时不能像很多博客网站那样复制。实现是通过监听复制事件来添加信息:copyright.js(()=>{if(document.getElementsByClassName("post-copyright").length>0){constauthor=document.getElementsByClassName("author")[0].textContent;document.addEventListener('copy',e=>{让clipboardData=e.clipboardData||window.clipboardData;if(!clipboardData){return;}e.preventDefault();constselection=window.getSelection().toString();consttextData=selection+'\n------------------------\n'+(作者?`作者:${author}\n`:'')+'原文:'+window.location.href+'\n'+'版权声明:除特别声明外,本博客所有文章均采用CCBY-NC-SA3.0许可协议。转载请注明出处!\n\n';consthtmlData=selection+'
------------------------
'+(author?`Author:${author}
`:'')+`原创:${window.location.href}/a>
`+'版权声明:如无特殊说明,本博客所有文章均使用CCBY-NC-SA3.0许可证。转载请注明出处!
';clipboardData.setData('text/html',htmlData);clipboardData.setData('text/plain',textData);});}})();资源下载:copyright.js点击下载完成后copyright.js放在themes/next/source/js/src/下,更改themes/next/layout/_layout.swig,启用版权时,可以添加版权信息时复制。