Frage

Die StackExchange-Sites verwendet Markdown-Syntax zum Schreiben von Fragen und Antworten.Dies erstellt mit pagedown auf der Clientseite und markdownsharp und jeffsHTML-Sanitizer auf der Serverseite.Ich denke daran, etwas Ähnliches zu bauen.

Ich verstehe, warum ich das HTML auf der Serverseite erdanken muss.Aber was ist der Zweck von MarkdownSharp?Warum sollte ich nicht nur die Übersetzung von Markdown bis HTML mit Pagedown auf der Clientseite tun und das an den Server senden?

War es hilfreich?

Lösung

Die wichtigsten Gründe:

    .
  1. Wir möchten die grundlegendste (im Sinne der "fundamentalen") Funktionen der Stack-Exchange-Sites, Fragen und Beantwortung, um ohne Javascript zu arbeiten. Die meisten fortgeschrittensten Sachen wie Abstimmungen, Flaggen, UI-Niceties, Hilfetexte, Favoriten, globaler Posteingang und Whatnot benötigen JavaScript, und das ist in Ordnung. Aber das einzige, was die Websites nicht ohne - q & a - leben können - sollten diese Anforderung nicht haben, um die Reibung so gering wie möglich zu halten.

    Natürlich, wenn Sie kein JavaScript als Anforderung haben, können Sie nicht verlangen, dass der Client den Markdown rendern kann.

  2. Wir speichern nur die gerenderte HTML-Version der neuesten Version eines Beitrags. Bei früheren Überarbeitungen speichern wir nur die Markdown-Quelle. Das Speichern beider Versionen für jede Bearbeitung, die ergibt, wäre ein großer Raumschaden, da die alten Versionen kaum jemals benötigt werden. Aber manchmal werden sie benötigt, z. in der Revisionsgeschichte. Dafür müssen wir trotzdem auf der Serverseite rendern.

  3. Selbst wenn Sie sich auf der serverseitigen Sanitation erhielten, wodurch der Auftraggeber den Rendern ermöglicht, das Vertrauen offensichtlich zu beseitigen, dass Sie in der gerenderten Version wirklich aus der Markierung erfolgen können. Stellen Sie sich Folgendes vor:

    i, ein böser spammer, poste die folgende antwort:

    generasacodicetagpre.

    Ich lege jedoch eine gerenderte Version, in der der Link tatsächlich auf eine relevante Stelle auf den Feinheiten der Turtle-Parallelität geht. Da der Server sowohl die Markdown-Quelle als auch das gerenderte HTML-HTML von mir erwartet, vertraut das, dass der eine von der anderen hergestellt wurde.

    entlang kommt sean scesat, renommierter Stapelüberlaufbenutzer mit einem Ruf 120k im Logo-Tag allein. Er sieht, dass der Link tatsächlich auf eine relevante Seite geht, die Antwort mag, upvotes es, postet eine "tolle Antwort; die Site, die Sie verlinken, um Tonnen hilfreicher Inhalte zu haben!" Kommentar, und während er dabei ist, fixiert er das Tippfehler "Sea" -> "siehe" (das der Spammer bewusst gemacht hat).

    aber die Markierung, die im Editor nach dem Anklang auf "Bearbeiten" wurde, hat nicht den entsprechenden Link mehr enthalten. Es enthielt den Rolex-Link. Und somit - unbekannt an Sean - er hat den TYPO nicht nur behoben, sondern auch den Link geändert, um zum Spammer-Standort zu gelangen.

    Jetzt haben Sie einen Beitrag mit der letzten Bearbeitung, die von einem vertrauenswürdigen Benutzer stammt und die Antwort bestätigt, aber mit einem Link, mit dem wir lieber keine Leute haben, klicken.

    und der Revisionsgeschichte (siehe Punkt 2.), wären nicht einmal show , dass der Link geändert wurde.

  4. Es sei darauf hingewiesen, dass die ursprüngliche Version des WMD-JavaScript-Editors tatsächlich die Funktionalität hatte, die Sie beschreiben. Sie können es einstellen, um das gerenderte HTML auf dem Server einzureichen. Wir haben diese Funktionalität endlich entfernt, als wir unsere refaktorierte Version unter dem Namen "Pagedown" veröffentlicht haben, da wir es noch nie benutzt hatten, es aufrechterhalten, und ich weiß ehrlich nicht, ob es tatsächlich mehr gearbeitet hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top