Primero un poco de historia, tenemos un motor que se compone de muchos archivos javascript que son esencialmente módulos. Estos módulos devuelven una clase única que está asignada al ámbito global, aunque bajo un espacio de nombre especificado.¿Cómo se puede ampliar un módulo Javascript definido con AMD?
El motor en sí se utiliza para mostrar el contenido de eLearning, con cada curso de eLearning diferente que requiere necesidades ligeramente diferentes, que es donde incluimos los archivos de JavaScript en la página en función de la funcionalidad necesaria. (Solo hay una página de entrada).
He estado tratando de sopesar si vale la pena cambiar a AMD, require.js y r.js o si es mejor quedarse con nuestro sistema actual que incluye todo lo requerido en la página y lo minimiza en una secuencia de comandos.
Uno de mis mayores problemas con ir a AMD sería que parece ser más difícil extender una clase fácilmente. Por ejemplo, a veces tenemos que ajustar ligeramente el comportamiento de la clase original. Así que agregamos otro script para incluir en la página que amplíe la clase original copiando el prototipo original, ejecute la función original que se reemplaza con apply y luego haga el código adicional requerido.
¿Se puede ampliar un módulo AMD sin adaptar el archivo original? ¿O me estoy perdiendo el punto y nos quedamos mejor con lo que estamos haciendo en este momento?
Hola Joseph, gracias por tu respuesta, pero esa no es la pregunta que estaba haciendo. Está creando instancias del constructor original.Me gustaría tener una definición de decir 'motor', que se usa en una definición para otro elemento, digamos 'pantalla de contenido'. Sin embargo, entre la definición de 'motor' y la creación de 'contentScreen' me gustaría extender 'engine' ligeramente. –
@John_ ¿qué quiere decir con "extender levemente"? construyendo un constructor modificado y luego usar ese constructor modificado? [esto podría ayudar] (http://stackoverflow.com/a/10101604/575527) – Joseph
Esencialmente sí, no quiero crear una nueva clase que extienda el original, de hecho quiero extender el original y usarlo, porque en lo que respecta a todo lo demás, sigue siendo la misma clase. Por lo que puedo decir, ¿no puedo hacer eso con AMD? –