L'équipe derrière Netflix.com a basculé d'un moteur de rendu HTML basé sur Java vers JavaScript, qu'ils peuvent exécuter à la fois sur le serveur et sur le client.
Pour diminuer le temps d'attente des utilisateurs, Netflix a supprimé le moteur de rendu basé sur un serveur Java et a réduit la quantité de HTML envoyé sur le réseau. Dans un article décrivant le changement, Kristofer Baxter a déclaré qu'en ne rendant pas des morceaux de l'application que l'utilisateur ne verra jamais (entre autres changements), ils ont été en mesure d'accélérer le temps jusqu'à l'interaction de 70%.
Chaque fois qu'un visiteur arrivait sur une page de netflix.com, notre couche Java générait la majorité de la réponse nécessaire pour l'intégralité de la durée de vie de la page et la distribuait comme balises HTML. Souvent, les utilisateurs étaient en attente de la génération des balises pour de grandes parties de la page qu'ils ne visiteraient jamais.
Surnommé "JavaScript Universel", Netflix a architecturé son nouveau moteur de rendu de l'interface utilisateur afin d'être en mesure de l'exécuter dans un navigateur ou dans un serveur node.js. Baxter dit que cette technique "permet à l'application de rendre exactement le même résultat indépendamment de l'emplacement du rendu. La forte séparation n'est plus présente et il est beaucoup moins probable pour le serveur et le client d'être différent d'un autre".
Appliqué à JavaScript, Charlie Robbins a présenté l'idée en 2011. Il l'a appelé "JavaScript Isomorphique", ce qui a abouti à des années de débat sur la pauvreté du nom. Ces derniers mois, le terme JavaScript Universel a remporté l'adhésion.
Le passage à un modèle JavaScript Universel n'est pas aisé et nécessite une base solide. Baxter a rapporté à InfoQ que la qualité du code est de la plus haute importance. "S'assurer que les deux environnements JavaScript partagent le même contexte est primordial. Sans une solution architecturale solide à ce problème, le code peut facilement se fracturer en une branche serveur et une branche client", a déclaré Baxter.
Alors que Netflix a choisi React.js pour leur fournir cette capacité, ce n'est pas la seule option. Ember.js disposera prochainement d'une technologie dénommée FastBoot qui annonce quelque chose de semblable. Il existe également beaucoup d'autres librairies disponibles à expérimenter.
Netflix a opté pour le système de JavaScript Universel après un duel en tête-à-tête à l'intérieur de l'entreprise. Baxter a dit qu'un autre prototype construit en utilisant des techniques de SPA a également été pris en considération :
Quand nous avons commencé la phase de prototypage de ce projet, nous avons construit deux prototypes complets avec des modèles concurrents utilisant des architectures différentes. Le premier était une architecture JavaScript côté-client fortement basée sur Backbone et jQuery ; le second, une conception concurrente utilisant JavaScript Universel et React.js. Après une période de trois semaines, les deux architectures ont été présentées à une équipe élargie et JavaScript Universel avec React.js était le grand gagnant. Cependant, nous allons continuer à l'avenir à tenter des approches nouvelles et différentes pour construire des applications web.
La liste des entreprises qui développent avec le JavaScript Universel est en pleine croissance. Hotel Tonight, AutoDesk, Tesco et AirBnb ont développé des produits avec cette architecture ou sont en train de le faire.