2010-12-05 7 views
6

Con la disponibilidad de JQuery, ¿hay alguna necesidad de aprender la manipulación directa de DOM con Javascript para ser un desarrollador web/desarrollador de sitios profesional/etc.?¿Hay alguna necesidad de aprender los métodos DOM de JavaScript para el desarrollo web, ahora tenemos jQuery et al?

Esto probablemente se podría pedir con Prototype, MooTools, etc. también, pero no estoy familiarizado con ellos aparte de sus nombres.

+2

¿Está obsoleto el conocimiento de la arquitectura de la CPU dada la disponibilidad de lenguajes de scripting? –

+1

Necesita ese conocimiento para diseñar mejor sus algoritmos. – Lockhead

+1

¿Debe un desarrollador profesional estar dependiendo de otros desarrolladores y debe confiar en que no lo haga? –

Respuesta

5

Nota: Esta pregunta fue reformulada por lo mi respuesta refleja la pregunta inicial pero fue sumando.

Absolutamente. Jquery IS Javascript y si bien abstrae muchas de las discrepancias de DOM entre navegadores, una sigue siendo propensa a los mismos errores de análisis exactos, malentendidos de alcance, etc.

Usar jQuery sin conocer el conocimiento básico de DOM o el conocimiento necesario de Javascript es lo que consideraría peligroso, como darle una pistola muy potente a un niño que podría dispararse accidentalmente en el pie sin saber cómo usar un instrumento tan poderoso herramienta de la manera correcta.

Una persona que se enseña directamente con jQuery no tendría absolutamente ninguna idea de cómo depurar problemas si el error que se está lanzando se refiere a algo en el DOM. Para algo tan simple como comparar para ver si un elemento es un elemento más (para cosas como el estado actual), que intentarían algo quizás como:

if ($('a.current') == $('a.current')) { } 

cual se devolvía falsa ya se crean dos objetos únicos jQuery. Si hubieran sabido cómo obtener la referencia a los nodos DOM, podrían haberlo hecho $('#el')[0] == $('#el')[0].

Cada vez que utilice un plugin de jQuery y se encuentre con un comportamiento misterioso, sin el conocimiento de DOM, tendrá que depender de otra persona para que lo ayude. Los desarrolladores con conocimiento de DOM tendrían más capacidad para depurar y conocer la raíz del problema, por lo que solo te estás preparando para perder más tiempo rascándote la cabeza desconcertado en jQuery.

Además, si uno desea llegar a un alto nivel de conocimiento y no solo ser un desarrollador de joe jQuery ordinario, entonces necesitaría un vasto conocimiento de las discrepancias DOM y Javascript en general; de lo contrario, está limitando su nivel de habilidad por un gran margen.

Si te quedas cerca de Stackoverflow por un tiempo, verás esto en las preguntas diarias, en las que las personas que tomaron el atajo fácil carecen del conocimiento básico de JS/DOM necesario para resolver sus problemas.

+0

Quise decir es el conocimiento de cómo manipular el DOM directamente obsoleto, no la sintaxis de Javascript. – baruch

+4

Atrévete al infame [-1, no es suficiente jQuery] (http://www.doxdesk.com/img/updates/20091116-so-large.gif)? ...sí. Si, lo hago. –

+0

@David +1 para el gran enlace. Nunca he visto eso. De hecho, me reí a carcajadas. – baruch

1

Hay muchas cosas que jQuery simplifica para usted, pero el conocimiento del Javascript que subyace en que las llamadas jQuery pueden hacer las cosas un poco más rápido:

$('<div />').appendTo($('body')); 

y

$(document.createElement('div')).appendTo($('body')); 

son tanto equivalente, pero el último es un poco más rápido (aunque solo en el orden de milisegundos), ya que está usando JavaScript directamente, en lugar de tener jQuery llamando al document.createElement() en su nombre. Una vez más, esto es definitivamente una ridícula micro-optimización.

Otros ejemplos están trabajando con Date, Math y string objetos/funciones. jQuery no implementa reemplazos para estos (sabiamente, ya que son bastante fáciles de usar).

+0

Lo que quiero decir es que el conocimiento de cómo manipular el DOM está directamente obsoleto, no la sintaxis de Javascript. – baruch

+0

"este último es un poco más rápido", ¿siempre? ¿Siempre será? ** Alerta de optimización sin fundamento ** –

+3

@Paul, quizás no ** siempre **, pero consistentemente en mis pruebas hasta el momento. Sin embargo, solo puedo vincular a una demostración: [JS Fiddle demo of assertion] (http://jsfiddle.net/davidThomas/57fvJ/). Además, tenga en cuenta que I * estaba * muy claro de que se trata de una ** micro-optimización ridícula **. –

2

En algunas circunstancias, es posible que no desee la sobrecarga de una biblioteca de manipulación DOM.

E.g. para el desarrollo móvil, las conexiones a Internet móvil aún son un poco lentas en este momento, por lo que es posible que desee ahorrar ancho de banda al abandonar una biblioteca y utilizar el código DOM nativo. (Y, posiblemente, ahorrar un poco de tiempo de ejecución, ya que los dispositivos móviles son actualmente un poco más lento en la ejecución de JavaScript que las computadoras de escritorio.)

Sin embargo, los dispositivos, las bibliotecas y las conexiones a Internet todos deben llegar más rápido a medida que pasa el tiempo, así que calculo es poco probable que hagas muchas secuencias de comandos de DOM directo en el desarrollo web cotidiano general.

2

Si no desea aprender los fundamentos subyacentes, seguro que es :)
Si no está interesado en cómo funcionan las cosas, seguro que es ....
Si desea pedir ayuda cada vez que alcanzas los límites de jQuery, ¡seguro que sí!
Si quiere depender de la gente de aquí que responder a preguntas sencillas, asegúrese de que: D (repeticiones para nosotros ...)

"El tonto se pregunta el sabio le pregunta."

En otras palabras, sepa cómo funcionan las herramientas que utiliza, de lo contrario terminará con una dependencia horrible.

2

Puede usar una biblioteca como jQuery con poco conocimiento de Javascript y casi ningún conocimiento del DOM, pero eso solo le llevará hasta donde lo permita la biblioteca. Solo podrá hacer cosas que otros hayan hecho antes que usted.

Saber cómo funciona el sistema subyacente también le permitirá utilizar la biblioteca de manera más eficiente. Saber con qué tiene que lidiar la biblioteca le permite saber por qué hay una gran diferencia en el rendimiento de ciertas maneras de usar la biblioteca y por qué algunas cosas no funcionan en absoluto.

Cuestiones relacionadas