2011-01-24 25 views
5

Planeo incluir Markdown en un próximo proyecto. En el pasado, acabo de utilizar un analizador de Markdown preempaquetado del lado del servidor, volví a desinfectar el resultado HTML (¿un paso innecesario?) Y lo enviaba al cliente.¿Cuáles son los inconvenientes de delegar el análisis de Markdown en el lado del cliente?

Estoy interesado en descargar al menos esta parte de la visualización del cliente. He utilizado analizadores de reducción de JavaScript del lado del cliente con gran éxito en las aplicaciones de Rails. Delegaría el objeto cuerpo para ver las inserciones DOM de la clase markdown-parseme o similar y luego analizarlo y reemplazar el texto original con el resultado.

Pero esta es la primera vez que lo estoy considerando para un sitio de producción en libertad. ¿Cuáles son los inconvenientes y problemas de seguridad al permitir que el cliente maneje la representación de Markdown? ¿Hay bibliotecas específicas que tengan en cuenta estos problemas?

EDIT: la preocupación obvia que viene a la mente es "¿qué pasa con los que no tienen Javascript". Está perfectamente dentro de nuestras capacidades detectar navegadores que no tienen Javascript activado e implementar un mecanismo que permita a los clientes (tal vez manualmente) señalar que no tienen JS y mover el análisis al lado del servidor. Me gustaría investigar si hay problemas serios con la descarga del análisis de Markdown al cliente más allá de esta cuestión ordinaria de compatibilidad. Presentar una página de un tamaño decente sin el almacenamiento en caché de resultados agrega una cantidad no despreciable al tiempo de respuesta y, a través de eso, carga el servidor, y sería bueno si pudiéramos confiar en mover esa tarea fuera del servidor para el 95% de los usuarios .

+0

¿Por qué cambiarse al cliente? ¿Solo para ahorrarse la llamada AJAX? – sdleihssirhc

+0

Un problema obvio es que es obligatorio tener JavaScript habilitado. –

+1

Para muchas aplicaciones web, la falta de JavaScript significa que no está utilizando la aplicación en primer lugar o que está utilizando lo que equivale a una aplicación completamente diferente. – Pointy

Respuesta

1

La suposición de que el cliente es capaz de analizar la sintaxis de Markdown podría ser incorrecta (al menos para algunas personas y para los motores de búsqueda). Si proporciona estos grupos con una versión analizada por el servidor, duplica el código. El servidor generalmente tiene herramientas más potentes para evitar XSS y similares (porque eso es lo que hacen los servidores: generar HTML a partir del contenido del usuario de forma segura).

0

markdown-js no está terminado todavía, pero es una biblioteca de JavaScript para un subconjunto de rebajas que utiliza un AST en lugar de diferentes etapas de conversión de HTML. Debería producir un código HTML correcto desde el principio. Creo que este enfoque, si se ejecuta correctamente, hará que la reducción de representación en el lado del cliente sea práctica.

Intencionalmente no es compatible con HTML incorporado.

3

Hoy en día, la mayoría de las personas usan javascript, por lo que esto no debería ser un problema. La biblioteca showdown es ideal para el procesamiento del lado del cliente.

Cuestiones relacionadas