2011-01-13 12 views
5

Desde que aprendí a escribir mis propios complementos en jQuery, me siento tentado de abordar mi javascript de esa manera cada vez que estoy creando una página con cualquier complejidad. Obviamente, es tonto cuando estamos hablando de 10 líneas de código, pero cuando voy a ser la construcción de una página con un par de cientos de líneas de Javascript (o más), parece que la forma más fácil de:¿Es malo que tenga la tentación de estructurar gran parte de mi código jQuery como complementos?

  • pasar datos (o incluso sólo opciones) de mi script PHP en JavaScript - $("#myform").myPagePlugin({options}, {data});
  • me da un objeto "maestro" en el DOM para unir mis datos para, en lugar de algo hacky como variables globales
  • hacer que mi nuevo código -utilizable más tarde
  • "Conecta" mi javascript a la página de una manera familiar

¿Me estoy cavando en un agujero si empiezo a hacer esto? ¿Se me escapa algo?

Respuesta

5

Mi única crítica sería que estás creando un plugin jQuery que parece que en realidad nunca planeas volver a usar. Esto agrega la sobrecarga de ejecutar el JavaScript que jQuery ejecuta para inicializar un complemento cuando esa sobrecarga no lo vale, ya que el módulo nunca volverá a usarse.

En lugar de un plugin de jQuery, ¿por qué no creas un objeto JavaScipt con espacio de nombres? Por ejemplo:

var mypage = {}; 
mypage.controller = function(){ 

} //your preferred JavaScript object notation here. 

¿O se acerca este espacio de nombres a lo que se refiere como "hacky"? Si es así, estaría respetuosamente en desacuerdo.

+0

Interesante. ¿Así que solo crea un objeto vacío y luego adjunta todo a él? Definitivamente no creo que sea hacky. – keithjgrant

+0

sí, usar hashes en JS es increíblemente conveniente. –

+0

Un poco de seguimiento. Encontré un excelente artículo sobre el "Patrón del módulo" para javascript. Se ve muy útil: http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth. Resultado similar al método anterior, pero también se agrega la capacidad de manejar propiedades privadas/públicas. – keithjgrant

1

El único problema con hash por Zalavsky es que aunque un hash crea un espacio de nombre con bastante gracia, no crea un ámbito. A menudo necesita variables estáticas de todo el módulo que sean no disponibles para el mundo exterior. En aquellos casos, me gustaría escribir

var mypage = function() { 
    var some_module_static ; 
    return { 
    controller :function(){ 
     // use some_module_static here 
    } 
    }; 
}(); 

Siempre que no es necesario un ámbito separado, sí, utilice el hash.

Escriba un complemento siempre que esté escribiendo un módulo que sea conceptualmente útil más allá de lo que esté haciendo en este momento.

+0

Buen punto en el hash. –

Cuestiones relacionadas