关于实现 Stack Overflow 风格注释的想法

Posted

技术标签:

【中文标题】关于实现 Stack Overflow 风格注释的想法【英文标题】:Ideas on implementing Stack Overflow-style comments 【发布时间】:2010-09-28 13:26:06 【问题描述】:

我非常喜欢 Stack Overflow 评论 UI,我正在考虑在我自己的网站上实现相同的功能。看了下代码,这里的主要工具好像是WMD,JQuery TextArea Resizer起到了辅助作用。

WMD 在客户端将 Markdown 转换为 html。这非常好,因为它有助于预览,但是在将其发送到服务器时遇到了挑战。如果出现验证错误(比如用户在评论表单的其他部分输入了无效的电子邮件地址,或者他可能没有输入他的姓名),那么服务器会通过重新显示带有错误消息的表单和预先填充的表单字段。只是现在评论文本是 HTML,而不是 Markdown,因为服务器甚至从未见过 Markdown。但我希望它是 Markdown,因为这是用户输入的内容。

这里有什么想法吗?

我考虑过各种想法:

做一个服务器端HTML-to-Markdown transformation。对这个想法并不那么兴奋。从 Markdown 转换为 HTML 又再转换回 Markdown 似乎很笨拙,作为用户,当软件重新格式化我的文本/代码时,我总是觉得很烦人。 客户端验证(以增强服务器端验证,我当然会保留)。虽然目前我在评论表单上使用 reCAPTCHA,但这似乎是一个合理的方向,这意味着我至少需要将 reCAPTCHA 部分发布到服务器。 丢失 WMD 并使用MarkdownJ 在服务器上将 Markdown 转换为 HTML。我需要寻找一些其他机制来完成我想要保留的预览功能。

理想情况下,除了 HTML 之外,还有一些方法可以获取文本的 Markdown 版本并将其提交到服务器,但我不是一个 javascript 专家,无法知道这是否真的有可能。

任何建议表示赞赏。

【问题讨论】:

【参考方案1】:

请参阅此问题:Convert HTML back to Markdown for editing in wmd(对右侧导航中的“相关”框表示欢迎!)。

【讨论】:

谢谢克里斯。这正是我一直在寻找的。这一次我猜是被 RTFR 咬了。【参考方案2】:

我会将数据作为 markdown 发送,然后在验证通过后让服务器将其转换为 html。 WMD 有一个选项来指定它将发送到服务器的数据格式。只需添加

wmd_options = 
        //Markdown or HTML
        output: "Markdown"
    ;

在调用 wmd 之前

【讨论】:

【参考方案3】:

我只是粗略地查看了 WMD,但将 textarea 提交到服务器似乎很简单 - 事实上,如果 textarea 是表单的一部分,我几乎看不出如何避免它。据我了解,您的 textarea 包含标记,WMD 将其转换为 HTML 以显示在页面的另一部分。只需在提交的表单中包含 textarea,您就会在服务器端看到它。

【讨论】:

是的,我们检索并存储用户在 SO 上输入的“原始”文本 - 正是您描述的方式! 是的,我让它提交 textarea 就好了……只是浏览器正在向服务器发送 HTML,而不是 Markdown。但从 Chris 的响应看来,WMD 选项之一是作为 Markdown 发送到服务器。叹息,被 RTFM 咬了。 :-P

以上是关于关于实现 Stack Overflow 风格注释的想法的主要内容,如果未能解决你的问题,请参考以下文章

Stack Overflow 是如何实现缓存的?

如何实现类似于 Stack Overflow 上的“相关问题”功能?

通过Stack Overflow趋势工具看JavaScript框架

Stack Overflow-esque源代码

自动完成标签,如 Stack Overflow [重复]

来自重写方法的OOP java Stack Overflow