BT

Pinterest: na adoção do JavaScript Universal e React

| por David Iffland Seguir 4 Seguidores , traduzido por Wellington Soares Seguir 1 Seguidores em 11 jan 2017. Tempo estimado de leitura: 2 minutos |

Em 2015, o Pinterest decidiu começar a usar o React, mas isso foi mais fácil dizer do que implementar na aplicação que possui milhões de usuários ativos. A jornada da troca para o React foi na verdade uma história sobre como o Pinterest migrou para o JavaScript universal.

O engenheiro de software Imad Elyafi escreveu que a motivação para decidir utilizar React foi porque o React é "golden standard", com uma grande comunidade de desenvolvedores e que possibilita uma excelente velocidade no desenvolvimento. O React é geralmente utilizado em cenários de JavaScript universais, quando os mesmos templates são utilizados no server e no browser.

O servidor do Pinterest roda Python/Django, utilizando o Jinja como a engine de template enquanto que no lado cliente (JavaScript) utilizava o Nunjucks, o qual é similar e inspirado no Jinja. O que causava duplicação de código, necessitando uma versão de código em Python e uma outra versão em JavaScript. No entanto, eles não poderiam abandonar todo projeto para adotar o React, disse a engenheira de software Jessica Chan:

Nós precisávamos de uma solução que nos permitisse de maneira iterativa converter centenas de componentes sem interromper o trabalho dos times de produto ou a experiência dos usuários. O primeiro passo foi utilizar uma única engine de template para renderizar no cliente (navegador) e no servidor antes que fosse substituído a engine por alguma outra. Se o servidor pudesse interpretar JavaScript, poderia utilizar a Nunjuncks para renderizar template e utilizar o mesmo código do lado cliente, e assim mover adiante com a etapa de adotar o React.

Mas antes deles começarem a trabalhar com React, a equipe refez a arquitetura do renderizador para utilizar os templates Nunjucks já existentes. Ao invés de utilizar o Jinja que faz parte do Django, foi criado um processo paralelo em Node.js apenas para renderizar os templates, disse Chan. "No final, acabamos tendo uma camada de proxy reverso utilizando o Nginx configurado de uma forma para que cada requisição seja uma renderização stateless. Isso permitiu escalar horizontalmente e aumentar o número de processos de acordo com a necessidade.
Somente depois dessa migração, a equipe pode lentamente alterar para a utilização de componentes React. Elyafi disse que foi preciso estender a linguagem de template Nunjucks para permitir renderizar o componente React somente quando possível:

{% if in_react %}
  {{ component('MyReactComponent', {pinId: '123'}) }}
{% else %}
  {{ module('MyDenzelComponent', pinId='123') }}
{% endif %}

A palavra chave component diz à engine de template que o componente React deveria ser utilizado ao invés de utilizar a versão do Nunjucks. A equipe do Pinterest ainda está trabalhando no processo de adoção do React.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT