Conceitos de extensão e arquitetura

Este artigo apresenta conceitos sobre como criar uma extensão do Microsoft Edge. Siga em frente para entender como os navegadores de várias guias funcionam.

Uma extensão do Microsoft Edge é um aplicativo pequeno no qual os usuários podem optar por adicionar ou modificar recursos do Microsoft Edge para fornecer uma experiência ou função especializada que é importante para um público-alvo. Para obter uma introdução, consulte Visão geral das extensões do Microsoft Edge.

Entender como os navegadores funcionam

A lista a seguir descreve informações úteis para entender antes de criar sua extensão.

As guias do navegador são threads isolados

Cada guia do navegador é isolada de todas as outras guias. Cada guia é executada em um thread separado isolado de outras guias e threads do navegador.

Uma guia thread por navegador

Cada guia manipula uma solicitação GET

Cada guia manipula uma solicitação GET. Cada guia usa uma URL para obter um único fluxo de dados, que normalmente é um documento HTML. Esse único fluxo ou página inclui instruções como JavaScript incluem marcas, referências de imagem, referências de CSS e muito mais. Todos os recursos são baixados para essa página de uma guia e, em seguida, a página é renderizada na guia.

A comunicação ocorre entre cada guia e um servidor remoto

A comunicação ocorre entre cada guia e um servidor remoto. Cada guia é executada em um ambiente isolado. Cada guia ainda está conectada à Internet, mas cada uma é isolada de outras guias. Uma guia pode executar JavaScript para se comunicar com um servidor. O servidor é o servidor de origem da primeira solicitação GET que foi inserida na barra de URL da guia.

Modelo de comunicação

O modelo de extensão usa um modelo de comunicação diferente. Semelhante a uma página de guia, uma extensão é executada em um thread individual isolado de outros threads de página de guia. Uma guia envia solicitações GET individuais para servidores remotos e, em seguida, renderiza a página. No entanto, uma extensão funciona semelhante a um servidor remoto. Instalar uma extensão em um navegador cria um servidor Web autônomo no navegador. A extensão é isolada de todas as páginas de guias.

As extensões usam um modelo de comunicação diferente

Arquitetura de extensão

A lista a seguir descreve informações úteis no que diz respeito à arquitetura de uma extensão.

Pacote de servidor Web de extensão

Uma extensão é um pacote de recursos Web. Os recursos da Web são semelhantes a outros recursos que você (o desenvolvedor web) publica em servidores Web. Você agrupa os recursos da Web em um arquivo zip ao criar uma extensão.

O arquivo zip inclui arquivos HTML, CSS, JavaScript e imagem. Mais um arquivo é necessário na raiz do arquivo zip. O outro arquivo é o arquivo de manifesto chamado manifest.json. O arquivo de manifesto é o blueprint da sua extensão e inclui a versão da sua extensão, o título, as permissões necessárias para a extensão ser executada e assim por diante.

Iniciar o servidor de extensão

Os servidores Web contêm seu pacote Web. Um navegador navega até URLs no servidor e baixa o arquivo a ser renderizado no navegador. Um navegador navega usando certificados, arquivos de configuração e assim por diante. Se um index.html arquivo for especificado, o arquivo será armazenado em um local especial no servidor Web.

Quando você usa uma extensão, a página de guia do navegador chega ao pacote Web da sua extensão usando o runtime de extensão. O runtime de extensão atende os arquivos da URL extension://{some-long-unique-identifier}/index.html, em que {some-long-unique-identifier} é um identificador exclusivo atribuído à extensão durante a instalação. Cada extensão usa um identificador exclusivo diferente. Cada identificador aponta para o pacote da Web instalado no navegador.

Comunicação com guias e barra de ferramentas do navegador

Uma extensão pode se comunicar com guias e a barra de ferramentas do navegador. Uma extensão pode interagir com a barra de ferramentas do navegador. Cada extensão gerencia páginas de guia em execução em threads separados e a manipulação de DOM em cada página de guia é isolada. Uma extensão usa a API de extensões para se comunicar entre as páginas de extensão e guia. A API de extensões fornece recursos extras que incluem gerenciamento de notificação, gerenciamento de armazenamento e assim por diante.

Assim como os servidores Web, uma extensão aguarda notificações quando o navegador está aberto. Uma extensão e páginas de guia são executadas em threads isolados uns dos outros. Para permitir que uma extensão funcione com qualquer página de guia, use a API de extensões e defina as permissões no arquivo de manifesto.

Permissões de entrada na hora da instalação

Uma extensão fornece permissões de entrada no momento da instalação. Especifique as permissões de extensão no manifest.json arquivo. Quando um usuário instala uma extensão, as informações sobre as permissões necessárias pela extensão são exibidas. Com base no tipo de permissão necessária, a extensão pode extrair e usar informações do navegador.

Próximas etapas

Para obter informações sobre como começar com sua extensão, consulte Criar um tutorial de extensão, parte 1.