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 .
¿Por qué cambiarse al cliente? ¿Solo para ahorrarse la llamada AJAX? – sdleihssirhc
Un problema obvio es que es obligatorio tener JavaScript habilitado. –
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