2009-05-14 22 views
13

Estoy implementando una base de datos de clientes que me permite buscar usuarios y compañías, explorar y editar sus detalles, y muchas otras cosas usando ASP.NET MVC y javascript (jQuery).¿Es una mala práctica devolver vistas parciales que contengan javascript?

Siempre que se produce una publicación u obtención, lo hago a través de jQuery.load e inserto el PartialView en el DOM.

Algunas vistas parciales incluyen formularios. También quiero que sean formas ajax, por lo que esas vistas parciales tienen manejadores de documentos listos que convierten los formularios en formularios ajax (a través de jquery.form).

Al principio estaba manejando esto en la devolución de llamada/código que inserta la vista parcial en el DOM. Sin embargo, esto dio como resultado una secuencia de comandos grande que contiene muchas funciones de JavaScript que hacen referencia a diferentes páginas. Refactoré el gran javascript insertando los scripts en las páginas respectivas.

Ahora el código es más elegante (tengo muchos menos controladores OnXXXPartialView) y el código está perfectamente dentro de la vista parcial a la que pertenece. La mayoría de esos archivos solo incluyen 3-4 líneas de código javascript, por lo que la sobrecarga no es realmente significativa.

De manera efectiva, no solo estoy agregando elementos al documento DOM, sino que a veces también agrego un fragmento de javascript. En la práctica, esto funciona bien, pero parece Firebug can't debug the dynamically loaded scripts.

Por supuesto, hay un problema Firebug, pero me pregunto si mi arquitectura puede ser la verdadera culpable aquí. ¿Dónde colocas un javascript que pertenece a vistas parciales? ¿Hay alguna mejor práctica?

+0

podría volver a su pregunta palabra cambiando "incluir" a "contiene", si ese es el caso. –

+0

buen punto, hecho. –

+0

¿Aún considera que este es un método válido (es decir, las vistas parciales contienen javascript para una organización más limpia) o se ha trasladado a otra cosa? –

Respuesta

7

Si tiene problemas para incluir javascript en sus vistas parciales, cambiaría a simplemente devolver JSON en sus llamadas ajax, de esa manera puede manejarlo todo en el cliente. Sin embargo, admitiré que siempre prefiero este método.

En cuanto a las mejores prácticas, siempre he considerado malo devolver el html generado en una llamada ajax en lugar de json, pero así soy yo (NO llamarlo, es una elección personal). Obviamente, Microsoft no cree que sea una mala práctica, ya que incorporaron funcionalidades específicas para respaldarlo. De todos modos, no consideraría incluir javascript con tu html peor que simplemente enviar html en primer lugar.

Tengo curiosidad, ¿qué hay en el javascript?

Edit: Para ser específico, estoy a favor de hacer una llamada ajax para obtener json, luego usar el lado del cliente JS para construir esa "vista parcial" e insertarla en el dom. A diferencia de hacer una llamada ajax para obtener el servidor renderizado html para que el cliente lo inserte en el dom.

Algunas vistas parciales incluyen formularios. También quiero que sean formas ajax, por lo que esas vistas parciales tienen manejadores de documentos listos que convierten los formularios en formularios ajax (a través de jquery.form).

Creo que podría manejar esto en la devolución de llamada/código que inserta la vista parcial en el dom.

Editar: Si es ordenado, eficiente, bien organizado y funciona para usted, entonces me quedaré con él. La idea de tener todo lo bueno y compacto en una vista parcial es definitivamente atractivo, así que no estaría demasiado preocupado por violar las mejores prácticas. Mi única preocupación era que el JS podría ser reutilizable, lo que sería el caso si insertara el mismo script una y otra vez.Pero en este caso, parece que tienes una gran cantidad de compartimentalización, así que me quedaré con eso a menos que puedas generalizar tus scripts e incluirlos con el resto de tu JS.

+0

Gracias por su opinión sobre esto. También he considerado JSON, pero prefiero mantener la parte de JavaScript lo más pequeña posible, por lo que preferiría renderizar vistas en el servidor. Con respecto a su pregunta: Algunas vistas parciales incluyen formularios. También quiero que sean formas ajax, por lo que esas vistas parciales tienen manejadores de documentos listos que convierten los formularios en formularios ajax (a través de jquery.form). –

+0

Al principio estaba manejando esto en la devolución de llamada/código que inserta la vista parcial en el dom como sugieres. Sin embargo, esto dio como resultado una secuencia de comandos grande que contiene muchas funciones de JavaScript que hacen referencia a diferentes páginas. Reformé mi enfoque actual porque parecía demasiado desestructurado para mí. Ahora el código es más elegante (tengo menos controladores de OnXXXPartialView) y el código está perfectamente dentro de la vista parcial a la que pertenece. –

+0

Voy a responder en mi respuesta –

3

Al final, se supone que JavaScript debe estar en un archivo (porque cada http GET cuesta un tiempo precioso) y se minimiza. Estos enlaces pueden interesarle: here y here.

Su forma de manejar JS realiza una transferencia de datos innecesaria, en lugar de enviar JS, hacerlo estático, almacenarlo en caché en el lado del cliente y parametrizar.

post anterior da un buen toque (JSON) cómo parametrizar sus JS :)

+0

Buen punto, me tomó un tiempo darme cuenta de lo que quería decir, porque asumí que la pregunta original era hablar de "contiene" javascript en lugar de "incluye". Tienes razón, incluir un script (src = script.js) sería algo malo en esa situación y seguramente sería algo que querrías evitar. –

Cuestiones relacionadas