stackexchange站点使用Markdown语法来写入问题和答案。这是使用 pagedown 在客户端和 markdownsharp jeff'sHTML Sanitizer 在服务器端。我正在考虑建立自己非常相似的东西。

我理解为什么我需要在服务器端寻找HTML。但是Markdownsharp的目的是什么?为什么我刚刚在客户端的PageDown与PageDown进行翻译,并将其发送到服务器?

有帮助吗?

解决方案

最重要的原因:

  1. 我们想要最基本的(在“基本”)堆栈交换站点的功能,要求和回答,在没有JavaScript 的情况下工作。大多数先进的东西,如投票,标记,ui niceties,帮助文本,有利,全球收件箱,以及whatnot需要javascript,那没关系。但是网站不能没有 - 问答的一件事 - 不应该有这种要求,以保持尽可能低的摩擦。

    当然,当您没有JavaScript作为要求时,您就无法要求客户端呈现Markdown。

  2. 我们只存储最新版本的帖子的呈现HTML版本。对于过去的修订,我们只存储Markdown源。为每个编辑存储两个版本,这将是一个巨大的空间浪费,因为旧版本几乎没有必要。但是有时他们是必要的,例如它们。在修订历史中。因此,我们必须在服务器端渲染。

  3. 即使您在服务器端重新查找,允许客户端执行渲染显然删除了您在渲染版本中可以在randown中进行的信任。想象一下:

    i,邪恶的垃圾邮件发送者,发布以下答案:

    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
    
    .

    但我提交了一个渲染版本,其中链接实际上进入了乌龟并发复杂的相关网站。由于服务器期望来自我的标记源和呈现的HTML,因此它信任另一个人。

    延定肖恩·宽索,着名的堆栈溢出了用户在Logo标签中具有120k的声望。他认为链接确实是一个相关的页面,喜欢答案,追溯到它,张贴“伟大的答案;你链接到有很多有用的内容的网站!”评论,虽然他在它,他修复了拼写错误的“海” - >“查看”(刻意的垃圾邮件)。

    但在编辑后在他点击“编辑”之后的标记,并不是 not 包含相关链接了;它包含了劳力士链接。因此 - 不知道肖恩 - 他不仅修复了错字,还改变了链接去垃圾邮件发送者的网站。

    现在你现在有一个帖子,其中最后一个编辑来自可信赖的用户,否认答案,但是我们宁愿没有人点击的链接。

    和修订历史(见点2.),甚至不会 show 链接已更改。

  4. 应该指出的是,WMD JavaScript编辑器的原始版本实际上有您描述的功能;您可以将其设置为将呈现的HTML提交给服务器。当我们在名称“Pagedown”下发布的重构版本时,我们终于删除了该功能,因为我们从未使用过,则维护它,我真的不知道它是否实际工作了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top