2012-07-24 29 views
6

Tengo una aplicación heredada y he refactorizado partes de la aplicación en aplicaciones separadas de backbone.marionette. No tengo el tiempo o el presupuesto para refactorizar todo y quiero que mi código sea más fácil de administrar, lo que me hizo pensar en requirejs.RequireJS y la aplicación heredada

La mayoría de los archivos son minificados y combinados.

¿Puedo usar requirejs para este tipo de solución híbrida en la que puedo trabajar en módulos de backbone separados y aún acceder al javascript existente?

+0

Sí, podría usar la opción shim config para cargar sus archivos no amd como amd enabled – chchrist

Respuesta

8

Como alguien que recientemente comenzó a usar Require.js en una base de código de uso de Backbone, siento tu dolor :-) Utilicé una combinación de enfoques, que enumeraré aquí.

Digamos que usted tiene fileA.js y fileB.js, y que desea convertir fileB.js utilizar Requerir sin cambiar fileA.js:

  • abusar del espacio global

    Exigir no lo obliga a importar todas las variables a través de él; incluso en un archivo Require-ified, puede acceder a las variables globales de la misma manera que lo haría con el código no requerido. Esto significa que si fileA crea todas sus variables en el espacio de nombres global/de ventana (que es muy probable si no usabas Require before), el archivo B puede acceder a ellas ya sea que fileA use Require o no.

    Esto terminó siendo mi solución para la mayoría de mis archivos heredados; Simplemente los dejé tal como están y puse todo el nuevo material Require-ified debajo de ellos. De esta forma, cada global que crean está listo y esperando cuando los archivos Require-ified lo necesitan.

    Ahora, esto es genial si el archivo B depende del archivo A, pero ¿y si es al revés? Bueno, Require tampoco impide que hagas nuevas variables globales, lo que significa que fileB puede compartir cualquier cosa que quiera con fileA, siempre que esté dispuesto a ponerlo en el espacio global.

  • Duplicar código

    No se moleste; Sé cuán importantes son las prácticas de codificación "DRY". Sin embargo, para unos pocos archivos, lo que terminé haciendo fue hacer duplicados obligatorios. Esto terminó siendo necesario porque estoy usando un complemento de Handlebars para Require para hacer mi compilación de plantilla, así que si quería que cualquier archivo utilizara Handlebars, necesitaba que fuera Require-ified.

    Para combatir los problemas normales que no son SECO, agregué comentarios a los archivos antiguos con eficacia diciendo "no agregue nada a este archivo, la versión requerida es la versión 'real'". Mi plan es convertir lentamente más sitios en Exigir a lo largo del tiempo, hasta que finalmente pueda eliminar el archivo original y obsoleto. Tenemos una tienda pequeña, por lo que funciona para nosotros, pero en una empresa más grande esto podría no volar.

  • Refactorizando

    que sé, usted dijo que quería evitar esto, pero a veces un poco de refactorización le puede dar un montón de partido de su inversión. Personalmente, apenas refactoreé nada, pero había solo un par de lugares donde un pequeño retoque simplificaba mucho las cosas.

    En general, veo la refactorización como algo que haces después de cambiar a Requerir (para poco a poco llevar tu código no requerido "al pliegue").

  • cuñas

    Chchrist tiene razón cuando dice que las cuñas son una buena manera de resolver el "camino medio que imponen" cuestiones Sin embargo, yo personalmente no los usamos en absoluto, así que realmente no se puede decir mucho sobre ellos excepto "mire hacia ellos, probablemente serán útiles".

Cuestiones relacionadas