2017-09-02 1 views
0

J'écris une application Polymer 2. La valeur par défaut est de passer de ES6 à ES5 pour que vous puissiez utiliser la syntaxe ES6 et être sûr que cela fonctionnera.Transpiling or non transpiling Applications du polymère 2?

Le problème avec ceci est que tout le monde (même les navigateurs de soutien) reçoivent le code transpilé.

Deux questions:

  • Est-il juste trop fou pour dire "non" aux anciens navigateurs, et juste arrêter transpiling?

  • Existe-t-il un moyen facile de rediriger des navigateurs spécifiques vers une version non-transpile de l'application?

Répondre

0

La réponse simple est L utiliser prpl-server-node qui fait exactement ce dont je parlais, et plus encore. Plus précisément:


différentiel servant

Les navigateurs modernes offrent fonctionnalités qui améliorent les performances, mais la plupart des applications doivent supporter les navigateurs plus anciens aussi. Le serveur prpl peut servir différentes versions de votre application à différents navigateurs en détectant les capacités du navigateur en utilisant l'en-tête de l'agent utilisateur.

Builds

PRPL-serveur comprend la notion d'une construction, une variante de l'application optimisée pour un ensemble de fonctionnalités du navigateur.

0

Cela dépend vraiment de l'audience de l'application que vous souhaitez créer. En ce qui concerne mes propres projets, je peux voir dans mon Google Analytics qu'il y a encore des personnes qui y accèdent via Safari 8, 9 et même IE 11. Je ne peux pas simplement leur dire d'utiliser un navigateur différent pour plusieurs raisons ... Pour cette raison, il est toujours par défaut pour moi de revenir à ES5 (étant donné que j'utilise Webpack pour l'instant en attendant le script type = "module"). stabiliser). Pour ce qui est de la manière la plus simple, ils disent que si vous utilisez la fonction de service de Polymer-CLI, elle autotranspile votre code en fonction des capacités du navigateur.

Ou vous pouvez avoir un simple code javascript qui essaie de vérifier une méthode ES6, puis si ça marche, il charge la version ES6 du code groupé ... sinon, il charge la version ES5 du code groupé + l'adaptateur custom-elements-es5. Mais celui-ci prend un peu de performance en raison de l'attente d'analyser le script JS initial pour vérifier avant de charger les fichiers nécessaires au lieu de les charger immédiatement (je n'ai pas testé cela)

Ou vous pouvez vérifier dans le serveur Quel type de navigateur appelle et, heuristiquement, devinez quel type de code de version vous voulez envoyer. En ce qui concerne les performances de l'overhead du code transpilé, c'est un peu minuscule, étant donné que si vous utilisez simplement Polymer.Element, vous pouvez obtenir au moins 12 Ko de code ... alors vous aurez comme 30 + KB laissé à afficher le contenu, ce qui est plus que suffisant pour avoir un PRPL + 50