2009-09-02 7 views
5

Las aplicaciones web en estos días hacen un uso extensivo de Javascript, por ejemplo varios productos de Google como Gmail y Calendar.¿Está procesando Javascript Server-Side una solución a la lógica duplicada?

Estoy luchando por cómo NO tener duplicado el servidor de lógica y el lado del cliente.

Al solicitar una página o estado de la aplicación, preferiría enviar la IU completa, lo que significa: no solo un javascript, que a su vez realiza una docena de solicitudes ajax y crea la interfaz de usuario.

Pero aquí radica el problema, la lógica que decide qué mostrar o no debe escribirse una vez en el lado del servidor y una vez en el idioma del lado del cliente.

Entonces me preguntaba si de alguna manera era posible procesar su lógica de JavaScript en el servidor y enviarla en su totalidad al cliente, que a su vez puede seguir usando la aplicación con todas las ventajas de una interfaz de usuario receptiva, pero sin la desventaja de la carga/construcción inicial de la interfaz de usuario debido a la dependencia de solicitudes ajax de fondo.

Espero que la explicación de mi problema esté un poco clara, porque no soy el escritor inglés más fluido. Si entiendes lo que quiero decir y si puedes describir el problema un poco mejor, hazlo ... ¡gracias!

Así que mi pregunta es:

  • Es algo como esto sea posible y ni realista?
  • ¿Cuál es su opinión sobre cómo abordar este problema?

;-)

Respuesta

2

Cuando comenzamos nuestra aplicación web, tuvimos el mismo tipo de preguntas.
Puede ayudará a saber cómo terminamos:

  • El backend (lógica de negocio, seguridad) está totalmente separado de la interfaz de usuario (GUI)

  • frontend y backend de comunicarse a través de los servicios JSON exclusivamente

  • el JSON se rinde el lado del cliente con la biblioteca de plantillas PURE

  • y el back-end i s Erlang (nada transmitiendo JSON estaría bien también, pero nos gustó su poder)

Y para su pregunta, usted tiene que considerar el navegador como totalmente inseguro.
Toda la lógica de seguridad debe provenir del back-end.

Ocultar o mostrar algunas partes de la pantalla del lado del cliente está bien, pero con seguridad el backend decide qué datos se envían al navegador.

+0

buenas sugerencias ... –

1

Parece que describes Jaxer Usted puede escribir todo en JS.
Además, hay GWT que permite escribir cosas enteras en Java

+0

Eso es extraño pero muy interesante. ¿Has usado mucho Jaxer? ¿Te gusta eso? –

+0

Idd GWT es la respuesta de Google a este problema ... –

+0

No, no. Es realmente interesante y planeo experimentar con Jaxer en el futuro cercano (todos los rumores de JS MVC son para back-end, supongo que necesito algo de verificación). Como entendí, no es realmente rápido. Usted sabe que Javascript no es una tecnología rápida, así que no planee nada grande. –

0

Entiendo lo que dices.

Pero no creo que deba tener mucha 'lógica' sobre qué construir, en el lado del cliente. Si quisieras ir con un modelo como el que estás proponiendo (no es mi taza de té, pero por qué no), no veo por qué terminarías con muchos duplicados.

Donde normalmente mostraría table o div, simplemente generaría JavaScript, que construiría los componentes relevantes en el lado del cliente.

Lo consideraría simplemente como otra 'Vista' en su modelo de lógica de datos/negocio.

¿Tiene un pequeño ejemplo de un problema con el que se enfrenta?

+0

hola, el mejor sitio web idd, como stackoverflow son datos centrados y realmente no tienen este problema, pero si quieres construir aplicaciones 'reales' como las que se usan en el escritorio, como Google Docs, etc., y necesitan persistente todo, Todavía no estoy seguro de cuál es el mejor enfoque, el motivo de esta pregunta. txn btw –

1

Entonces me preguntaba si era de alguna manera posible procesar su javascript del lado del servidor lógica y enviar toda la al cliente, quien a su vez puede continuar utilizando la aplicación con todas las ventajas de una ui receptivo, pero sin la desventaja de la inicial de carga/construcción de la interfaz debido a la dependencia del fondo solicitudes ajax.

Tal vez las aplicaciones que está buscando simplemente usan mal Ajax.

El único contenido que puede preprocesar en el servidor es el contenido que ya conoce que el usuario desea. Por ejemplo, en una aplicación de correo electrónico, puede enviarles una vista completa de su bandeja de entrada, procesarla previamente en el servidor y obtenerla con una sola solicitud, tan pronto como inicien sesión. Pero puede usar AJAX para buscar un mensaje en particular una vez hacen clic en él. Enviarles todos los mensajes por adelantado sería demasiado lento.

Usados ​​correctamente, AJAX debe hacer sus páginas más rápido , porque puede solicitar pequeñas actualizaciones o cambios de contenido sin tener que recargar la página entera.

Pero aquí está el problema, la lógica decidir qué mostrar o no tiene que ser escrita una vez en el lado del servidor y una vez en el lenguaje del lado del cliente.

No necesariamente

. Por ejemplo, en PHP, puede escribir una función como displayWidgetInfo(). Puede usar esa función para enviar la información del widget inicial al cargar la página. Si el usuario hace clic en el widget para cambiar algo, envíe una solicitud AJAX a un script PHP que también usa displayWidgetInfo() para enviar nuevos resultados. Casi toda tu lógica permanece en esa única función.

Sus instintos son correctos: es malo duplicar el código, y es malo hacer demasiadas solicitudes para una página.Pero creo que puedes solucionar esos problemas con algunas refactorizaciones.

+0

algunos puntos buenos, idd uso ajax para una interfaz de usuario más receptiva debido a actualizaciones parciales y tal, pero en aplicaciones web ricas, es realmente difícil mantener la lógica separada, el servidor tiene que ser lógico para coloque ciertos widgets en la página en el orden correcto, luego el cliente también necesita un código similar para manejar el reposicionamiento de los widgets ... si algo entiendo lo que quiero decir :-) txn por cierto –

+0

Dios mío, tantos errores tipográficos, lo siento , De Verdad... –

0

Entiendo su pregunta de esta manera: Supongamos que tenemos un formulario html en la página web. Hay un campo para nombre y apellido. Tenemos que verificar su validez tanto en el lado del cliente (con JS) como en el lado Sever (en el script php mientras se procesan las entradas del formulario). Así que aquí está la duplicación - verificación de expresiones regulares en ambos lados. Entonces, ¿cuál es la forma de prevenirlo y combinar estas lógicas?

Cuestiones relacionadas