Hen*_*ipa 11 markdown markdownsharp pagedown
StackExchange站点使用MarkDown语法编写问题和答案.这是使用客户端的PageDown和服务器端的MarkDownSharp和Jeff的HTML清理程序构建的.我正在考虑建立一些非常相似的东西.
我理解为什么我需要在服务器端清理HTML.但MarkDownSharp的目的是什么?为什么我不能在客户端使用PageDown从MarkDown转换为HTML并将其发送到服务器?
bal*_*pha 18
最重要的原因:
我们希望Stack Exchange站点的最基本(在"基础"意义上)功能,无论是查询还是回答,都可以在没有JavaScript的情况下工作.最先进的东西,如投票,标记,UI细节,帮助文本,收藏,全球收件箱,以及诸如此类需要JavaScript,这没关系.但是,网站不能没有的一件事 - 问答 - 不应该有这个要求,以保持尽可能低的摩擦.
当然,如果您没有JavaScript作为要求,则不能要求客户端呈现Markdown.
我们只存储最新版本帖子的呈现HTML版本.对于过去的修订版,我们只存储Markdown源代码.为每次编辑存储两个版本将是一个巨大的空间浪费,因为几乎不需要旧版本.但有时需要它们,例如在修订历史中.因此,我们必须在服务器端进行渲染.
即使您在服务器端重新清理,允许客户端进行渲染显然也会消除您在Markdown中实际渲染的渲染版本中的信任.想象一下:
我,一个邪恶的垃圾邮件发送者,发布以下答案:
As you can sea on [this awesome site][1],
... (long text on thread-safe usage of the turtle in LOGO) ...
Hope that helps!
[1]: http://almost-real-rolex-watches.biz
Run Code Online (Sandbox Code Playgroud)
但是我提交了一个渲染版本,其中链接实际上是关于乌龟并发的复杂性的相关网站.由于服务器需要Markdown源和我提供的HTML,因此它相信一个是由另一个制作的.
Sean Sceat是着名的Stack Overflow用户,仅在徽标标签上就有120k的声誉.他看到链接确实进入相关页面,喜欢答案,赞成它,发布"很棒的答案;你链接到的网站有很多有用的内容!" 评论,当他在,它修复了错字"海" - >"看"(垃圾邮件制造者故意制造).
但点击"编辑"后编辑中的Markdown 不再包含相关链接; 它包含劳力士链接.因此 - 肖恩不知道 - 他不仅修正了错字,还改变了链接去垃圾邮件发送者的网站.
现在你有一个帖子,其中最后一个编辑来自一个受信任的用户,支持答案,但有一个链接,我们宁愿没有人点击.
修订历史(见第2点)甚至不会显示链接已更改.
应该注意的是,WMD JavaScript编辑器的原始版本实际上具有您描述的功能; 您可以将其设置为将呈现的HTML提交到服务器.当我们以"PageDown"名称发布我们的重构版本时,我们最终删除了该功能,因为我们从未使用它,维护它,而且老实说我不知道它是否真的有效.
| 归档时间: |
|
| 查看次数: |
1123 次 |
| 最近记录: |