2011-06-30 24 views
6

¿Alguien puede explicarme por favor que si usar un espacio de nombres es una buena práctica de codificación? ¿Y por qué es necesario? Si fue un buen enfoque, JQuery no lo incluyó por defecto. Hay un complemento separado para permitir esta funcionalidad.¿El espacio de nombres JQuery es una buena práctica?

Vi esto post que menciona algunas formas de hacerlo. Alguien mencionó la fuga de memoria en la publicación que es preocupante.

Por último, ¿cuál es la mejor manera de organizar las bibliotecas de JQuery?

gracias,

+1

No necesita espacios de nombres, solo tiene módulos con su '' – Raynos

+0

¿Qué es el cargador de módulos? – Amir

+0

['requireJS'] (http://requirejs.org/) define la palabra clave' require' para cargar un módulo y una palabra clave 'define' para definir uno. Utiliza _zero_ alcance global. También hay otros cargadores de módulos, vaya a buscarlos usted mismo;) – Raynos

Respuesta

20

Notas:

  • namespacing es una buena práctica ya que tiene menos probabilidad de tener nombres en conflicto con otros scripts. De esta manera, solo su espacio de nombre debe ser único, pero múltiples espacios de nombre pueden tener las mismas funciones en ellos.
  • jQuery SÍ usa el espacio de nombres, y no necesita el complemento. El objeto jQuery en sí es un espacio de nombres. . . Cualquier función dentro de jQuery está 'espaciada por nombre' en el objeto jQuery. Esto es cierto para cualquier objeto de JavaScript.

En respuesta al comentario de Amir:

YUI logra namespacing mediante la adición de una variable al objeto YUI donde la variable añadida es también un objeto. Su función de espacio de nombres lo construye por usted.

var lib = { 
    util:{}, 
    widget:{}, 
    tool:{} 
}; 

//creates a function named reset in the lib.util namespace 
lib.util.reset = function() {}; 

//creates a function named reset in the lib.widget namespace 
lib.widget.reset = function() {}; 

En jQuery, se agrega a la jQuery.fn (o $.fn si utiliza $ para jQuery espacio de nombres()

+0

Gracias Levi por su rápida respuesta. ¿Puedes explicarme el 2º punto? jQuery no tiene espacio de nombres como biblioteca YUI (yahoo). Cómo organizaría la biblioteca jQuery sin espacio de nombres/ – Amir

+0

@Amir, actualicé mi respuesta. –

+0

Entiendo que puede usar $ .fn pero menciones de documentos de jQuery: "No desordene el objeto jQuery.fn con más de un espacio de nombres por complemento." por lo que estaba preguntando cuál es la mejor manera de organizar bibliotecas en jQuery? – Amir

0

require.js es una mejor práctica, ya que no requiere añadir objetos sobre el objeto de la ventana innecesariamente también. no significa que deba preocuparse por el orden de carga de los archivos javascript anteriores.

Cuestiones relacionadas