htmlmarkdown写笔记,谈谈为知笔记的Markdown功能

htmlmarkdown写笔记,谈谈为知笔记的Markdown功能
这⽂章属于专题的⼀部分,详见:Markdown知识贴
下⾯谈谈为知笔记(简称“为知”,下同)中的Markdown功能,包括为知Markdown⽀持的语法,Markdown功能的实现,⽬前已知的问题和对为知Markdown的展望等⽅⾯。
为知Markdown⽀持语法
根据为知的Markdown说明和简单测试,为知⽬前⽀持的语法有
区块元素标题(Setext式和Atx式)
段落
区块代码(缩进式和围栏式)
技术绘图(流程图和时序图)
区块公式
简单表格
分割线
区块引⽤
列表(⽆序和有序)
⽬录
⾏内元素链接(⾏内式、参考式和⾃动链接)
图⽚(⾏内式和参考式)
强调与重强调
删除线
⾏内代码何庆清
⾏内公式高等学校化学学报
脚注
为知对Markdown的改进
为知允许⽤户直接复制或拖动插⼊图⽚,和⽤⾃带的编辑器插⼊图⽚和表格,希望⽤这种⽅式来弥补Markdown⽂档⾃⾝对本地图⽚与表格的缺陷。这个看似很多编辑器都在⽀持的功能,但是为知这种⽅式得到的Markdown⽂档⽆法与⽬前可见所有Markdown编辑器兼容。
为知Markdown的实现
为知的Markdown与⼀般的Markdown有很⼤的不同,这产⽣了很多奇妙的现象:
为知的Markdown笔记与普通笔记共⽤⼀个编辑器;
Markdown笔记打开时总是要闪⼀下;
使⽤外部编辑器打开Markdown笔记后图⽚会丢失;
只需要在普通笔记标题后添加“.md”后缀即可⽣成md笔记,删除后⼜可以退回普通笔记;
可以使⽤所有你能想到的⽤来编辑普通笔记的编辑器编辑Markdown笔记,包括百度编辑器,写字板和Word(你没有看错,能编辑Md的不只是Editor.md插件);
编辑Markdown时,Markdown⽂本是富⽂本(可以附带各种各样的格式)
……
不知道⼤家有没有对这些现象产⽣强烈的疑问?对我⽽⾔,这些疑问在⼀段时间⾥常常在我脑海种浮现。当我同时解压⼀个Md笔记与普通笔记做对⽐的时候,上⾯的现象都会得到了解释。
⼀篇Markdown笔记与⼀篇普通笔记所包含的⽂件是⼀样的,⽽遍整个Markdown笔记压缩包都不会到⼀个以.md为后缀的⽂件。只有⼀个名为index.html的⽂档,⽽这就是我们要的Markdown⽂档。
这就是为知Markdown的真相:为知的Markdown笔记是Html⽂档格式的,为知的Markdown功能是在HTML上实现的!
当我们使⽤⼀个所见即所得HTML编辑器的时候,它的实现逻辑是这样的:
编辑器作⽤于HTML⽂档的源码,然后HTML⽂档被渲染成⽹页返还编辑器显⽰,实现了所见即所得。
⽽⼀般的Markdown编辑器的实现逻辑是这样的:
编辑器作⽤于Markdown源码,并返还编辑器中显⽰。如果⽀持实时渲染,Markdown会转化成HTML语法,然后渲染成⽹页实时返还编辑器中显⽰。
为知的Markdown是建⽴在HTML基础上的,所以逻辑更加复杂:
为知编辑器作⽤于HTML源码,HTML被渲染成记录着Markdown的⽹页,如果是编辑模式,这个写着Markdown的⽹页就直接在编辑器中显⽰,相当于HTML编辑器的逻辑。如果是阅读模式,⽹页上的Markdown被转化成HTML,然后HTML渲染成⽹页(最终结果)返还编辑器中显⽰。
看图的左侧,类似⼀个所见即所得HTML编辑器逻辑。看图的右侧,类似⼀个Markdown编辑器的渲染过程。所以为知的Markdown实现⽅法可以简单的总结为在⼀个所见即所得HTML编辑器上搭载了⼀个Markdown渲染⼯具。
下⾯是吐槽总结点评的时间:
我们知道,Markdown的⽬的是转化成HTML发布,⽽为知的Markdown却使⽤HTML记录,总给⼈⼀种本末倒置的感觉。原本的HTML渲染成Markdown,然后Markdown⼜被渲染成HTML,⼜给⼈太迂回的感觉,不对,是为知遵循否定之否定的必然规律实现了螺旋上升……Markdown本⾝是纯⽂本,⽽为知的Markdown⽂本是HTML渲染之后得到的,可以是富⽂本,所以使⽤为知⾃带编辑器经常会得到格式古怪的“Markdown源码”⽂本。⼀般的Markdown编辑器是针对纯⽂本的,所以富⽂本的为知Markdown⽂本中的图⽚会被冲掉。因为渲染了两次,所以经常会闪⼀下。因为Markdown⽂本是⽤HTML记录的,所以加个后缀就可以当作Markdown(其实内部没有进⾏两者之间的转化),所以为知的Markdown与普通笔记可以共⽤⼀个编辑器,所以所有可以⽤来编辑HTML的编辑器都可以⽤来编辑为知的Markdown⽂本。
这种Markdown实现⽅式,最直观的问题应该是效率问题。因为流程太长,⽽且需要渲染两次,打开Markdown笔记的速度必然会收到影响,本⼈的实际体验是打开⼀篇Markdown笔记⼀般都需要2s左右,中间会看到Markdown⽂本先被显⽰然后被替换。看到⾃⼰电脑渲染这么慢,我都替为知的服务器⼼疼。使⽤Editor.md插件的时候更是明显,写⼀篇稍微长⼀点的Markdown笔记就会变得⼗分慢,需要关闭标签重新打开,但是没过多久⼜会变卡。
长远的看,这种Markdown会被底层的HTML深深的束缚住,难以发展,⽐如想开发⼀款Markdown编辑器,那么这个编辑器⾸先是要基于HTML编辑器的,⽽为知⾃带的HTML编辑器都⼜很多问题,让⼈很怀疑为知开发这Markdown编辑器的能⼒。再⽐如想加⼊本地图⽚功能,在不改变现有HTML⽂件包结构的情况下很实现难。
当然,这种⽅式也不是⼀⽆是处,有⼀个⾮常⼤的好处就是可以让所有的笔记格式齐平,这对搜索、笔记整理以及⽂件安全是有很⼤帮助的,因为同时⽀持两种不同的格式会让搜索和笔记整理的⼯作量⼤增,所有的功能和规则都要开发两套,那⼯作量是翻倍的,⽽且会容易变得⾮常不稳定。这⼤概也是⼤象(印象笔记)⼀意孤⾏不采⽤Markdown的原因之⼀吧。
最后说⼀下为知独创的添加图⽚和表格⽅式,那是⼀种为知⾃⼰图⽅便的办法,让第⼀次渲染得到的图⽚和表格在第⼆次渲染中不被过滤直接输出。Markdown本⾝是兼容HTML标签的,但是为知这么⼀
搞,变成了好像是HTML在兼容Markdown语法⼀样。⽽且这样让Markdown变成带图⽚的富⽂本,这样的Markdown是个⾮源码⼜⾮所见即所得的四不像。这可能体现了为知对Markdown的理解,但是这样做没有太⼤意义,真正使⽤Markdown写笔记的⼈是不会⽤这种⽅式的,因为为知不是Bear,⽬前还没有⾜够的⽤户粘性,让⽤户只⽤⾃带编辑器来书写Markdown,⽽且这种⽅法也与Editor.md插件不兼容呢。如果有为知官⽅⼈员阅读此⽂,请考虑放弃这种添加图⽚和表格的⽅式,探索更好的⽅式。
对为知Markdown的展望
虽然对为知的Markdown抱怨甚多,但还是展望⼀下为知Markdown的未来,希望为知能看到。
解决效率问题
说实在,这是本⼈⽬前⾯临最⼤的问题,⽽且也是最直观的问题,打开Markdown笔记会⽐普通笔记慢⼀拍,⽽且会闪(在移动端也是如此),插件编辑会卡顿。虽然这些问题都是为知Markdown机制决定的,Markdown笔记会⽐普通笔记有更多的步骤,但还是希望为知在这个问题上想想办法。重构Markdown的实现机制?还是更改处理的顺序,先区分Markdown笔记和普通笔记再进⾏渲染?
还有插件编辑Markdown⼀段时间后容易变慢,这个当然与个⼈机器性能有关,但是我打开Word写长
⽂本⼀点问题都没有,反⽽⽤为知写Markdown觉得卡,这很尴尬。⾃从⽤了为知的Editor.md插件之后我就没有在使⽤其他Markdown编辑器了,最近⽤Markdown写长⽂本,响应慢的问题越来越严重。⽬前已经产⽣了放弃使⽤为知编辑笔记的想法了,以后可能只把为知做收集和整理,将笔记书写交给其他应⽤。如果为知有能⼒⾃⼰开发⼀款⾃带的Markdown编辑器的话,虽然不能从根本上解决问题,但是在响应速度上应该可以得到很⼤的改善,不过这需要提前对Markdown笔记和普通笔记进⾏区分就是了。羊城电子
Markdown编辑器
虽然有Editor.md插件,但是⼀个⾃带的Markdown编辑器总是需要的,插件的功能再多,性能上总是受限的,⽽且使⽤插件编辑Markdown时笔记⼯具栏会消失,⽆法编辑标题,⽆法添加附件,⽆法添加标签等等。现在的Markdown编辑器发展太快,因为Markdown语法本⾝就限定了功能的范围,所以⽬前的Markdown编辑器的关注点⼤多在⽤户体验上。虽然拿⼀个专业编辑器来要求⼀个笔记软件是不公道的,笔记软件也很难达到那样的⾼度(Bear那样极度强化书写功能的怪物例外),但是⼀个专门的Markdown编辑器⾮常必须。Markdown只是书写语⾔,是为平台或编辑器服务的,不同于HTML,不是发布语⾔,所以不要奢望把Markdown完全交给外部编辑器,为知的Markdown编辑器应该实现下⾯⼏点功能:保证Markdown的纯⽂本特性。⾸先编辑器书写的Markdown⽂本应该以纯⽂本呈现,乱七⼋糟的格式太影响书写。其次是编辑器可以让从别处复制过来的富⽂本转化成Markdown语法的纯
⽂本。如果不能重新搭建⼀个Markdown编辑器,起码在现有的HTML编辑器中加⼊⼀个纯⽂本模式的功能。
图⽚插⼊。前⾯说过图⽚插⼊的问题,HTML式的插⼊图⽚破坏了Markdown纯⽂本特性。那有没有⽅法,既能满⾜Markdown语法,⼜不破坏现有的HTML⽂件框架,甚⾄可能被外部纯⽂本编辑器编辑过后不掉图?我有个idea不知道可不可⾏,供参考。⾸先图⽚依然存放在
\index_files\……路径下,编辑器中新增⼀个板块专门管理和查看\index_files\……下的图⽚(这⾥暂且将这个板块称为图床),然后图⽚Markdown语法使⽤参考式。每当在图床中添加图⽚,会在Markdown⽂档最后添加⼀个参考id,id为图⽚名字。⽤户想添加图⽚的时候,使⽤参考式图⽚语法![][id]即可插⼊图⽚。如果将图⽚直接拖拽到Markdown⽂档,会在图床和\index_files\……路径下添加图⽚,同时在Markdown⽂档中插⼊⼀个完整的参考式语法。图床最好会锁定\index_files\……下的图⽚,只有在图床中删除图⽚,才能让图⽚从
\index_files\……中删除。如果想使⽤外部编辑器,只要先把需要⽤到的图⽚放到图床,然后调出外部编辑器,使⽤参考式语法就可以同样插⼊图⽚。另外还能让⽤户在图床中对图⽚进⾏放⼤查看、修改和替换。我觉得这是个难度少,但是受益巨⼤的做法,请为知认真考虑。
最好有语法⾼亮或语法识别。对于双栏实时预览,我觉得其实意义不⼤,那是给初学者⽤来过渡的,
因为会造成信息冗余,占⽤笔记区空间,⽽且实时渲染也需要占⽤⼀定的资源。但是Markdown毕竟是源码输⼊,难免会打错语法,所以输⼊Md语法之后编辑器最好提供⼀个反馈,或是⾼亮,或是其他的样式改变。
侯宏澜身高
编辑时空格可以被⽅便显⽰。空格是Markdown语法中很重要的语法元素,空格的数量不对就可能造成⼀些语法错误,但是空格不⽅便看,希望编辑时空格会被⽅便显⽰出来。有的编辑器将空格显⽰为灰⾊的点·。
非法侵入(01)
⽬前的⾃带编辑器⽆法实现对⼤纲的预览,在阅读模式才可以看到⼤纲,如果愿意开发Markdown编辑器,希望可以加⼊⼤纲功能。如果为知笔记不希望在编辑器上着⼒太多,请优先实现第⼀第⼆点。
Markdown语法
为知其实已经⽀持挺多Markdown语法的,所以这⾥稍微提⼀些展望缩进式代码⽬前有bug,多⾏代码会变成⼀⾏,⽽且没有⾏号。
为知的Markdown表格不⽀持第⼀单元格为空。
围栏式代码⽬前只能⽤3个反引号包裹,希望可以⽤3个以上的反引号,这样就可以使⽤Markdown记录Markdown语法了(有点绕)。
MultiMarkdown⽀持修订语法(CriticMarkup),可以⾼亮⽂本,添加注释。有没有可能加⼊到为知助⼿中呢。
十二月党人
⽬前不少Markdown⽀持元数据,有点类似HTML的开头部分,可以添加标题,作者之类的信息,很实⽤。但是鉴于⽬前为知的Markdown 机制,元数据好像只会添⿇烦。但是这⾥说个题外话,⽬前的界⾯标题栏于⼯具栏共⽤⼀⾏,⽽笔记页标签⼜有题⽬,感觉有点信息冗余:
多希望题⽬这⼀类的信息放到⽂档开头,打开向下箭头可以查看和修改更多信息,然后向下滚动的时
候可以被隐藏,画了个⽰意图:
是时候让为知为Markdown也做点贡献了,希望为知可以发明个绘制简单的思维导图的语法,可以像绘制流程图⼀样,使⽤围栏式区块代码实现,代码⽤Markdown的列表或者标题就⾏。我觉得这样⽐使⽤开发插件或模板来的实在,更有⽤户粘性,可以源远流长,成为⼀⼤亮点。⽽且国外其实已经有软件实现了Markdown语法向思维导图的转化,只是没有将其设计成语法⽤于Markdown书写。
为知作为⼀款笔记软件,如果不把编辑作为重点的话,那么希望在阅读⽅⾯做⼀些优化,尤其是Markdown的渲染和阅读。⽐如对于单独成段的图⽚,可以渲染成区块,有的衍⽣语法就是这么设计的,还有如果图⽚⽐较⼤,阅读时⽀持点击放⼤查看。
开放API。为知笔记作为⼀款笔记软件,功能上不可能⾯⾯俱到。如果为知笔记的开发重点不在笔记编辑这⼀块的话,像⼤象⼀样开放API 或许是最好的选择,毕竟只有Win端才⽀持插件和外置编辑器。

本文发布于:2024-09-21 23:36:29,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/71620.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:笔记   编辑器   语法   添加   实现   编辑   功能   问题
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议