RequireJS et application héritée

J'ai une application héritée et j'ai refacturé des parties de l'application dans des applications distinctes backbone.marionette. Je n'ai pas le temps ni le budget pour refactoriser tout et je veux que mon code soit plus facile à gérer, ce qui m'a fait penser à des exigences.

La plupart des fichiers sont minifiés et regroupés.

Puis-je utiliser requirejs pour ce type de solution hybride où je peux travailler sur des modules backbone distincts et accéder toujours au javascript existant?

Comme quelqu'un qui vient tout juste de commencer à utiliser Require.js sur un héritage, base de code utilisant l'arrière-page, je ressens votre peine 🙂 J'ai utilisé une combinaison d'approches, que je vais énumérer ici.

Disons que vous avez fichierA.js et fileB.js, et que vous souhaitez convertir fichierB.js pour utiliser Exigez, sans changer fichierA.js:

  • Abuser l'espace mondial

    L'exigence ne vous oblige pas à importer chaque variable à travers elle; Même dans un fichier requis, vous pouvez toujours accéder à des variables globales de la même façon que vous le feriez avec un code non requis. Cela signifie que si fileA crée toutes ses variables dans l'espace de noms global / fenêtre (ce qui est très probable si vous n'utilisiez pas Exigez avant), fileB peut les accéder, que le fichier utilise ou non. Exigez.

    Cette dernière a été ma solution pour la plupart de mes fichiers existants; Je viens de les quitter en tant que tel, et je mets toutes les nouvelles choses requises ci-dessous. De cette façon, tous les éléments mondiaux qu'ils créent sont prêts et en attente lorsque les fichiers requis nécessitent.

    Maintenant, c'est génial si fileB dépend du fichierA, mais que faire si c'est l'inverse? Eh bien, Exiger ne vous empêche pas de créer de nouvelles variables globales, ce qui signifie que fileB peut partager tout ce qu'il veut avec fileA, pourvu qu'il soit prêt à le placer dans l'espace global.

  • Dupliquer le code

    Ne vous fâchez pas; Je sais l'importance des pratiques de codage "DRY". Cependant, pour quelques dossiers, ce que j'ai fini de faire était de faire des doublons requis. Cela s'est déroulé nécessaire car j'utilise un plug-in Handlebars pour Exiger de faire ma compilation de modèle, alors si je voulais que n'importe quel fichier utilise des Guidons, il me fallait qu'il soit requis.

    Pour lutter contre les problèmes UN-DRY normaux, j'ai ajouté des commentaires aux anciens fichiers en disant "ne pas ajouter quoi que ce soit à ce fichier, la version requise est la version" réelle ". Mon plan est de convertir lentement plus du site en Exigé au fil du temps, jusqu'à ce que je puisse finalement éliminer le fichier original et obsolète. Nous avons un petit magasin, donc cela fonctionne pour nous, mais dans une entreprise plus grande, cela pourrait ne pas voler.

  • Refactoring

    Je sais, vous avez dit que vous vouliez éviter cela, mais parfois un peu de refactorisation peut vous donner beaucoup de bang pour votre argent. Personnellement, personnellement, je n'ai guère réagi, mais il y avait juste quelques endroits où un petit problème était considérablement simplifié.

    Dans l'ensemble, je vois le refactorat comme quelque chose que vous faites après avoir passé à Exiger (pour progressivement au fil du temps, apportez votre code non requis «dans le pli»).

  • Shims

    Chchrist a raison de dire que les cales sont un bon moyen de résoudre les problèmes «à mi-chemin de l'exigence». Cependant, personnellement, je ne les ai pas utilisés, de sorte que je ne peux pas vraiment en dire beaucoup à ce sujet, à part «les regarder , Ils seront probablement utiles ".