Qué partes de la aplicación debo llevar al backend

Tengo una duda de concepto y no sé si estoy yendo bien. Quiero hacer una página de última generación, donde Javascript hace la mayor parte del...

La FAQ Qué partes de la aplicación debo llevar al backend tiene

Pertenece a la categoría:
    Pregunta
    Tengo una duda de concepto y no sé si estoy yendo bien.

    Quiero hacer una página de última generación, donde Javascript hace la mayor parte del trabajo, para que la experiencia del usuario sea muy rápida y dinámica. Sin embargo, no tengo claro qué partes debo hacer en Javascript y qué partes en PHP, u otro lenguaje Backend.

    En el caso de un juego online, por ejemplo ¿PHP lo usaría sólo para el login y para guardar/cargar partidas, no? En ese caso entiendo que toda la lógica del juego la haría con javascript, ¿Es así?
    Respuesta de Miguel Angel Alvarez
    Como dices, en PHP haces esas partes. Login por supuesto, a no ser que uses algo como Firebase, que permite hacer login desde el cliente. Por supuesto, la persistencia de la información es interesante hacerla en el lado del servidor (backend) porque es la manera más segura que tus usuarios se puedan conectar desde cualquier ordenador o navegador y acceder a los mismos datos.

    Así como también tendrías que hacer cualquier cálculo en el que no puedas poner el código en el cliente. Por ejemplo, imagina que tienes una base de datos de "enemigos" que pueden aparecer. No quieres que esos enemigos se puedan conocer desde el principio, por lo que no te los llevas a Javascript, porque alguien podría, con un poco de astucia, leer los datos que tienes en el cliente. Los quieres dosificar para que aparezcan en el momento adecuado. Entonces los tendrías en una base de datos en el lado del servidor y en cada momento que deba aparecer un enemigo, le dices a PHP que te sirva uno. PHP realiza las reglas que sean necesarias para saber qué enemigo debe aparecer y se lo manda a javascript, que ya hace lo que tenga que hacer para representarlo como un personaje en el juego, lo muestra en pantalla, crea los menús o botones para atacarlo, etc.

    Osea, toda la lógica de aplicación que por seguridad no deba de conocerse en el cliente, o cuyos datos no deba escribir el cliente, debería estar del lado del servidor.

    Algo más sencillo, aplicado a algo que estoy desarrollando ahora. Tengo una lista de test, cada uno tiene preguntas. Las preguntas no me importa que las conozca el cliente, porque tarde o temprano se las voy a tener que mostrar, pero cuando le paso las preguntas al cliente no le mando las respuestas, porque alguien con experiencia podría ser capaz de verlas y de hacer trampas. Espero en Javascript que acabe el tiempo del test, o que el usuario diga que acabó y cuando recabé todas las respuestas, las mando al servidor, que es el encargado de verificar si son correctas. El servidor después de calcular, da el resultado del test y lo escribe en la base de datos.

    Por recapitular, en este caso de los test, el backend es fundamental para corregir los exámenes porque:
    1) no mando las respuestas para que no me hagan trampas y
    2) el servidor es el responsable y el único que puede definir la evaluación final, porque si no, alguien que sepa Javascript podría desde el cliente escribirse una calificación mejor que la que realmente obtuvo.
    Volver al árbol de categoríasVolver al árbol de categorías