Para la agenda, comenzaré dando una descripción general de la extensión que construí para demostrar aquí, luego explicaré los pasos para configurar una extensión en React, resaltando algunas capacidades interesantes que le di a la extensión Email Postponer, hablaré sobre cómo ejecutar la extensión localmente, así como publicarla en la tienda.
Luego, tocaré brevemente la compatibilidad entre navegadores y cómo convertir una extensión de Chrome en un complemento de Firefox. Y terminaré mostrando una demostración en video de la extensión Email Postponer en acción.
Entonces, para una descripción general, la extensión Email Postponer se ve como una página web, como se puede ver a la derecha, solo se abre en Gmail, se abre como un panel lateral en lugar de una ventana emergente, porque queremos poder seleccionar información en el sitio web sin que se cierre la ventana emergente, utiliza Material UI para facilitar el estilo de los componentes listos para usar que son consistentes con el diseño de Material de Google, permite a los usuarios interactuar con el contenido de la página web tanto de forma manual como automática, y se comunica con el servicio backend utilizando la API Fetch.
Para configurar la extensión, primero creé un nuevo proyecto utilizando Create React app en TypeScript. Luego tuve que cambiar el comando de compilación para que React genere archivos separados de JavaScript y HTML para evitar errores de política de seguridad de contenido. También configuré para que no genere mapas de origen para eliminar algunas advertencias adicionales. Debido a que estamos utilizando TypeScript, tuve que instalar algunos tipos adicionales para usar la API de Chrome. El proyecto utiliza la API de Chrome para interactuar con Chrome mediante el uso de un objeto inyectado que también se llama Chrome. Create React app crea un archivo manifest.json para nosotros, pero las extensiones requieren una estructura específica para eso. Cada extensión debe tener un archivo manifest.json y debe tener el nombre manifest.json en su directorio raíz. Google está en proceso de eliminar la versión 2 del manifiesto, aunque acaban de anunciar algunos retrasos en esto en Google I/O. Sin embargo, estamos utilizando la versión 3 del manifiesto en nuestra extensión de Email Postponer. Debido a que queremos abrir la extensión como un panel lateral, queremos asegurarnos de que la acción esté vacía aquí. Nuestra extensión tomará su contexto de un archivo index.html que se compila a partir de React. El service worker, que también se conoce coloquialmente como un script de fondo, aunque hay algunas diferencias entre los dos, se ejecuta en todas las pestañas del navegador y se ejecuta al iniciar el navegador. Escucha eventos específicos en segundo plano, como cambiar de pestaña o actualizar URL. Toma acciones a nivel de navegador en consecuencia y se comunica con el código de la extensión y los content scripts a través del intercambio de mensajes. Este script es uno de los dos scripts escritos en JavaScript básico, y lo usamos para abrir y cerrar el panel lateral del sitio, así como para llamar al servicio res utilizando la API Fetch, ya que llamarlo desde React nos daría errores de intercambio de recursos entre orígenes.
Los content scripts son scripts que se ejecutan en el contexto de las páginas web y tienen acceso a elementos, objetos y métodos del DOM. Se ejecutan en instancias separadas en pestañas separadas, una instancia por pestaña, y se ejecutan en páginas que coinciden con la expresión regular de coincidencia, y se comunican con el service worker y el código de React a través del intercambio de mensajes. Los content scripts, de los cuales solo tenemos uno en esta extensión, también están escritos en JavaScript básico, y usamos el nuestro para crear un panel lateral, iframe, pasar mensajes entre el código de React y el script de fondo, así como copiar y pegar texto seleccionado en la extensión. Además, la extensión se abre solo en Gmail, ya que Gmail es la única expresión que coincide con la expresión regular en la propiedad matches.
Estas son algunas de las formas en que se pasan mensajes en las extensiones. Los content scripts se encuentran en el medio entre el código de React y el script de fondo. El código de React se comunica con los content scripts a través del intercambio de mensajes. Los content scripts toman acciones en la página web en la que se ejecuta la extensión o pasan mensajes al script de fondo, que luego puede tomar acciones a nivel de navegador en consecuencia. El script de fondo puede comunicarse directamente con el código de React, así como con los content scripts, también a través del intercambio de mensajes. Dado que estamos ejecutando la extensión en un panel lateral en lugar de una ventana emergente, debemos agregar recursos accesibles desde la web a la extensión.
Comments