Cómo creamos aplicaciones de escritorio Linux usando Electron
Dado que Tutanota se centra en el código abierto y el desarrollo de clientes Linux, esperamos publicar aplicaciones de escritorio para Linux y otras plataformas. Como equipo pequeño, descartamos rápidamente la creación de aplicaciones nativas para Linux, Windows y MacOS y decidimos crear nuestras aplicaciones utilizando Electron.
Electron es una opción perfecta para aquellos que desean ofrecer rápidamente aplicaciones multiplataforma visualmente consistentes, especialmente si ya tiene una aplicación web y desea alejarse de las API del navegador, como fue el caso de. Tutanota.
Tutanota se basa en SystemJS y Mithril y tiene como objetivo proporcionar comunicación por correo electrónico sencilla y segura para todos. Por lo tanto, debe proporcionar muchas de las funciones estándar que los usuarios esperan de un cliente de correo electrónico.
Algunas de estas funciones, como las notificaciones automáticas básicas, la búsqueda de texto y contactos y la compatibilidad con la autenticación de dos factores, están fácilmente disponibles en el navegador gracias a las API y los estándares modernos. Otros, como las copias de seguridad automáticas o la compatibilidad con IMAP sin reenvío desde nuestros servidores, requieren acceso restringido a los recursos del sistema, que es lo que proporciona el marco Electron.
Aunque algunas personas critican a Electron como "sólo un paquete básico", sus beneficios son obvios:
Tutanota no depende de grandes inversiones, sino de proyectos impulsados por la comunidad. Hacemos crecer nuestro equipo orgánicamente a través de programas pagos a medida que más y más usuarios actualizan a nuestros servicios gratuitos. Escuchar las necesidades de nuestros usuarios no sólo es importante para nosotros, sino que también es fundamental para nuestro éxito.
Proporcionar un cliente de escritorio es la característica más solicitada por los usuarios de Tutanota y estamos orgullosos de ofrecer ahora una versión beta gratuita del cliente de escritorio a todos los usuarios. (También implementamos otra característica muy solicitada: la búsqueda de datos cifrados, pero esa es una historia para otro día).
Nos gusta la idea de proporcionar a los usuarios una versión firmada de Tutanota y el soporte que los navegadores pueden 't Proporciona funciones como notificaciones automáticas a través de un proceso en segundo plano. Ahora, planeamos agregar más funciones específicas de escritorio, como compatibilidad con IMAP (sin depender de nuestros servidores como proxy), copias de seguridad automáticas y disponibilidad sin conexión.
Elegimos Electron porque combina Chromium y Node.js y es la mejor opción para nuestro pequeño equipo de desarrollo porque requiere cambios mínimos en nuestra aplicación web. La capacidad de utilizar las API del navegador para todo es especialmente útil a medida que comenzamos y, a medida que avancemos, reemplazaremos lentamente estos componentes con versiones más nativas. Este método es especialmente conveniente para descargas de archivos adjuntos y notificaciones.
Sabemos que existen algunas preocupaciones sobre la seguridad de Electron, pero consideramos que las opciones de Electron para ajustar el acceso a las aplicaciones web son muy satisfactorias. Puede utilizar recursos como la documentación de seguridad de Electron y la lista de verificación de seguridad de Electron de Luca Carettoni para ayudar a prevenir incidentes catastróficos con contenido que no es de confianza en sus aplicaciones web.
El cliente web Tutanota se ha creado desde cero con un protocolo de comunicación entre procesos confiable.
Aprovechamos los hilos de red para cifrar y solicitar datos mientras mantenemos la interfaz de usuario (UI) receptiva. Esto es muy útil cuando comenzamos a implementar la aplicación móvil porque la aplicación móvil utiliza el mismo protocolo para comunicarse entre la parte local y la vista web.
Es por eso que cuando comenzamos a construir el cliente de escritorio, muchas de las partes para notificaciones push nativas, abrir buzones de correo, usar el sistema de archivos, etc.).
Otra conveniencia es que nuestro proceso de compilación utiliza el traductor de Babel, que nos permite escribir todo el código base en JavaScript ES6 moderno y mezclar y combinar módulos de funciones entre diferentes entornos. Esto nos permite adaptar rápidamente el código de nuestra aplicación de escritorio basada en Electron. Sin embargo, también encontramos algunos desafíos.
Si bien Electron nos permite integrar fácilmente entornos de escritorio en diferentes plataformas, ¡no podemos subestimar la inversión de tiempo!
Al final, estas pequeñas cosas tomaron más tiempo de lo que esperábamos, pero fueron cruciales para completar el proyecto del cliente de escritorio.
El código específico de la plataforma crea la mayoría de los obstáculos:
Las expectativas del usuario sobre ciertos comportamientos de las aplicaciones en diferentes plataformas (a veces no directamente compatibles) hacen que todo el proceso sea algo complejo. Hacer que las tres versiones parecieran nativas requirió algunas iteraciones e incluso algunas adiciones modestas a la aplicación web para proporcionar una funcionalidad similar a la búsqueda de texto en un navegador.
Nuestra experiencia con Electron fue muy positiva y completamos el proyecto en menos de cuatro meses. A pesar de algunas funciones que consumen bastante tiempo, nos sorprendió la facilidad con la que pudimos entregar una versión beta del cliente de escritorio Tutanota para Linux. Si está interesado, puede acceder al código fuente en GitHub.
vía: /article/19/4/linux-desktop-electron
Autor: Nils GantherNils Ganther Selección: lujun9972 Traducción: wxy Corrección: wxy