¿Cómo se implementa el cliente web de Quip?

El cliente web de Quip tiene un diseño bastante novedoso. No utilizamos ningún marco en nuestro código JavaScript, que no sea Protobufs de Closure. En cambio, escribimos un conjunto liviano de bibliotecas JavaScript en casa, que manejan las utilidades básicas que todos esperan, como manipulación DOM, selectores CSS y una interfaz de selección jQuery como $ (…).

La representación HTML de nuestra aplicación se realiza en el servidor, utilizando un marco de plantillas Python simple. Luego enviamos una página completamente renderizada al cliente. Cuando un usuario realiza una acción, como agregar a alguien a un documento o enviar un mensaje, incluimos un fragmento HTML representado en la respuesta POST de AJAX, junto con instrucciones de dónde colocar la actualización en el documento. También enviamos estos fragmentos HTML actualizados en la conexión WebSocket. De esta manera, podemos actualizar la visión del mundo del cliente web sin tener que volver a implementar plantillas en el cliente, o volver a renderizar toda la página, solo enviamos exactamente el segmento que el cliente necesita para actualizar su pantalla.

Para nuestro editor de documentos, utilizamos ProtocolBuffers en JavaScript para enviar datos hacia y desde el servidor. El uso de PB en lugar de JSON nos ayuda a reducir el tamaño de las respuestas, pero lo más importante es que garantiza que todos nuestros datos estén correctamente escritos y bien estructurados, ya sea que los usemos en el servidor, iOS, Android o la Web.

En cuanto a las herramientas, utilizamos el Compilador de cierre de Google junto con anotaciones de tipo en todo nuestro código JavaScript. (Como no usamos frameworks, casi todo nuestro código está escrito). Usamos LESS para organizar y compilar nuestro CSS.

More Interesting

¿Qué marco de aplicaciones web tiene la curva de aprendizaje menos pronunciada?

¿Cuál es la diferencia entre las aplicaciones web progresivas y las aplicaciones web normales?

Alguien está desarrollando una aplicación web para mí. Se han solicitado detalles de alojamiento con certificación SSL para que la aplicación se pueda cargar y probar. ¿Qué debo hacer?

¿Hay algún servicio en el que podamos hacer que alguien cree un presupuesto para nosotros?

¿Qué tipo de desafíos enfrentarán si mueven una aplicación web de mysql a mongoDB por completo?

¿Qué marco de desarrollo de aplicaciones web prefiere para Node.js?

¿La mayoría de las nuevas empresas tecnológicas construyen sus productos sobre un marco base que les permite administrar el producto en el back-end, o simplemente construyen sus propios back-end?

¿Se puede construir un producto viable mínimo basado en web totalmente funcional en Python?

Cómo elegir la mejor empresa de desarrollo de software de agencia de viajes

¿Por qué funciona Quora tan bien?

¿Qué haces primero cuando comienzas a construir una aplicación web?

¿Cuántas horas debería pasar un gerente de proyecto en la planificación de un nuevo sitio web o aplicación web?

¿Cómo usan los programadores el lenguaje Go para crear aplicaciones web?

¿Existe una aplicación que pueda escanear la camisa de esa manera y sabremos que están usando la camiseta que les dimos?

¿Cómo entiendes si una aplicación para iPhone / Android es web o realmente nativa?