为啥我需要降价?
Posted
技术标签:
【中文标题】为啥我需要降价?【英文标题】:Why do I need Markdown?为什么我需要降价? 【发布时间】:2011-01-09 10:18:50 【问题描述】:为什么我需要Markdown 和像WMD 这样的前端编辑编辑器? Markdown 对从 WMD 编辑器发送的内容有什么作用?
Markdown 如何将内容存储在后端?是像*bold*
一样还是其他格式?为什么我不能只做一个html encode?
对不起,如果我听起来很幼稚。
【问题讨论】:
【参考方案1】:
【讨论】:
用什么图表工具来做这个? ;) Plain PowerPoint 2007。有趣的是,我越来越多地使用 Word 或 PowerPoint 制作照片反射和快速漂亮的图形。 有时使用 Markdown 的问题是你的用户真的很愚蠢,不在乎他们可以输入好的纯文本。您的用户习惯于将格式错误、样式不佳的 MS Word HTML 粘贴到任何类型的矩形文本输入框中。你的用户是不称职的白痴,当他们想要强调文本时不想思考,他们只想点击那个巨大的 B 并倾斜 I 并完成它。 【参考方案2】:使用 Markdown 的主要原因是标记文本的可读性。例如,您可以通过纯文本电子邮件发送它,读者仍然会理解重点、项目符号、文本将分为段落等。
当您询问存储数据时,这取决于您。如果您在 WordPress 博客引擎中启用 Markdown,它会在用户输入数据时存储数据 - 在 Markdown 中。然而,在 Stack Overflow 中,数据似乎存储为 HTML。至少,“堆栈溢出数据转储”包含 HTML,而不是 Markdown(我见过 people complaining),他们必须将其转换回来)。
如果您使用 WMD 编辑器,您可以向用户展示输出转换为 HTML 后的样子。尽管 Markdown 语法 非常简单,但犯错并不难。因此,最好向用户展示输出。
使用 Markdown 而不是 WYSIWIG 控件的另一个原因 - WYSIWIG 控件允许用户在您在网页上显示的数据中使用 HTML。所以,你必须决定什么时候 HTML 不正确,什么时候是邪恶的 XSS/CSRF/whatever 注入。在 Markdown 中,您只需将 *something* 转换为 <b>something</b>
,删除所有未知的 HTML 元素即可。
【讨论】:
【参考方案3】:退后一步,问一些更大的问题可能会有所帮助。 Markdown 试图解决的问题是浏览器中的丰富编辑。考虑一下:在某些时候,任何支持富文本的软件都必须以某种方式描述丰富性,但可能是这样。
我们可以称这种丰富性的描述(通过丰富性的描述,我的意思是“这一段文字是粗体的”或“这段文字是一个超链接),我们可以称这种丰富性的描述为“标记”——它用元“丰富”标记文本。
富文本的实现可以采用两种方法,a.) 对用户隐藏标记或 b.) 让他们可以访问标记。
对于那些选择隐藏它的人来说,最终结果通常是所见即所得。用户不知道幕后发生的事情。编辑负责细节。以 MS Word 为例。没有人像普通最终用户一样操纵 Word 标记格式。
对于选择公开标记的实现,标记语言是为了允许用户与之交互。此类标记语言可能是 HTML 之类的 <tag>
或 BB 代码,例如 [tag]
。
Markdown 就是其中一种语言。
与我提到的前面的类型相反,Markdown 试图设计自己,以便标记呈现人们已经使用的常见 ASCII。例如,人们通常会在他们的文本上加上星号以将其关闭,*important*
,而 Markdown 中的这种符号是斜体的指示符。
关于存储,正如 Stephan 指出的那样,系统很可能会存储原始 markdown,因为用户很可能需要进行编辑,并且可以为此目的调用原始 markdown。
在我构建的大多数系统中,我存储降价,然后将其规范化为缓存降价的 HTML 呈现的第二个字段。这样我就不必为每个 markdown 字段做 markdown->HTML 渲染。它需要更多的空间,但我宁愿用户有更快的响应而不是使用更少的数据库存储空间。
从浏览器接受 Markdown 时也应该小心,因为它很容易包含需要过滤掉的 <script>
标签。大多数 Markdown 实现也会识别与 Markdown 格式混合的 HTML,为了安全起见,您需要确保正确清理输入和缓存。
【讨论】:
嗯,我们没有的地方是自述文件,结果很糟糕且难以阅读。我还没有找到适合 Mac 的阅读器,它具有 find 等高级功能。当然,它对创建网页很有用,但给人们 .md 文档,这太糟糕了,这些人在想什么?【参考方案4】:使用 HTML 以外的其他编码系统的原因是出于安全考虑
Markdown 和其他类似 wiki 风格的编码系统通常不支持脚本语言
HTML 以多种方式支持脚本语言(
两个主要的安全问题是:
恶意软件犯罪分子使用用户生成内容中的脚本,通过脚本访问已知安全漏洞,尝试在内容阅读器计算机上执行恶意操作
使用脚本的免费加载程序通过更改内容框架或样式(例如广告、菜单、徽标等)来颠覆网站的其余部分。如果不仅令人讨厌,这也可能是犯罪行为
通过使用诸如 Markdown 之类的中间语言,您可以完全控制渲染输出
过滤 HTML 是可能的,但也很复杂且有风险
替代编码系统的另一个重要原因是样式的强制执行。普通的 HTML 有太多的选择。通过限制可用选项,用户只能使用某些样式。这通常会使内容看起来更清晰、更易读(将 SO 与 Ebay 进行比较)
【讨论】:
以上是关于为啥我需要降价?的主要内容,如果未能解决你的问题,请参考以下文章