2017-03-29 3 views
1

Remarque: il s'agit d'une suite de: Convert old JavaScript code into ES6 module .. qui a résolu le problème OP mais n'a pas fourni de réponse.Convertir la bibliothèque héritée existante en module ES6

Tous les navigateurs modernes intègrent désormais des modules natifs es6 (à l'exception du chrome qui sera bientôt disponible). La question est de savoir comment convertir les bibliothèques existantes en modules ES6 en utilisant ce support natif.

Ceci est pour les projets en cours qui utilisent no transpiling (webpack, babel, system.js, etc.) pour leur propre usage, mais qui dépendent du code existant. Est-ce que l'un des outils de workflow existants prend en charge la conversion/l'encapsulation des anciennes bibliothèques pour qu'elles puissent être importées en es6? J'aimerais vraiment éviter d'utiliser les balises <script> dans le code HTML de la page.

+4

Voir https://github.com/nolanlawson/cjs-to-es6 par exemple. Bien sûr, vous aurez peut-être besoin d'un travail manuel sur wrapper, en raison des différences fondamentales entre les modules ES6 et les autres modules. Je me demande [quels "navigateurs modernes"] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Browser_compatibility) que vous voulez dire. – estus

+0

Merci, cela peut être parfait pour tous les projets basés sur npm .. ce serait cool! Re: navigateurs: http://caniuse.com/#feat=es6-module .. FFox, Safari Tech Preview, Edge tous sont des modules de soutien, généralement w/drapeaux. J'ai utilisé STP et c'est génial! – backspaces

+0

Certainement pas pour tous - juste à cause du fonctionnement des modules. Les modules CJS sont dynamiques par nature, les 'require's conditionnels sont partout. Les modules ES6 sont statiques. Habituellement, vous pouvez mapper l'exportation CJS à l'importation ES6 '*', mais ce n'est pas toujours possible. Je ne m'y attendrais pas dans Chrome bientôt. Les modules ES6 ont l'air d'être très longs, cela peut prendre des années avant qu'ils soient utilisables en production. Ils peuvent être amusants à jouer avec, mais je ne peux pas recommander de se débarrasser de Webpack pour un vrai projet, considérer SystemJS à la place si vous voulez vraiment sauter une étape de construction. – estus

Répondre

0

J'ai écrit ma conversion à l'ES6, puis la conversion des dépendances, dans ces deux histoires moyennes:

https://medium.com/@backspaces/es6-modules-part-1-migration-strategy-a48de0b7f112 https://medium.com/@backspaces/es6-modules-part-2-libs-wrap-em-up-8715e116d690

Le second répond à cette question. Cependant, l'une des réponses à l'histoire suggère d'utiliser Rollup sur chaque dépendance héritée pour créer un module pour elle. Pourrait être une meilleure solution pour certains d'entre nous.