¿Debería programar siempre el lado del servidor para un sitio web?

38

Estoy a punto de comenzar a crear un sitio web de proyecto musical para un amigo. Debería ser bastante simple por ahora: sin contenido dinámico (fechas de gira, etc.), y nada más que unas pocas canciones de muestra incrustadas o enlaces SoundCloud. No espero usar nada más que JavaScript vainilla y Bootstrap o Foundation para una cuadrícula receptiva.

¿Es esto suficiente sin embargo? ¿Puedo simplemente cargar archivos HTML, CSS y JS a un host y terminar con ellos, o debería tomarme el tiempo para programar un servidor back-end en Node o PHP?

Deegriz
fuente
54
¿Es suficiente? ¿Qué problema tienes que tener un back-end dinámico? Mantenlo estúpido simple, hasta que no puedas.
RubberDuck
25
Maximiza el trabajo no realizado. YAGNI
RubberDuck
9
Probablemente sea mejor que instales un CMS listo para usar si todo lo que vas a hacer es escribir algo de texto, subir algunas imágenes y algunos archivos de música / incrustar algunos archivos de video / YouTubes ... WordPress, etc. Sea ideal y la mayoría de las empresas de alojamiento ofrecen instaladores de un solo clic para que pueda comenzar en cuestión de minutos ... hay muchos CMS por ahí.
Kinnectus el
11
Me pregunto por qué una pregunta como esta tiene tantos votos positivos. Es como preguntar "¿tengo que crear una base de datos para mi software a pesar de que no necesita almacenar ningún dato?". No me sorprendería si fuera una pregunta para principiantes, pero no cuando eres lo suficientemente hábil para crear un proyecto de arranque / fundación.
Mahdi
14
@Mahdi está votado porque todos se han estado preguntando exactamente esta maldita cosa durante 5 años y nadie ha tenido las agallas para preguntarlo.
djechlin

Respuestas:

86

Si no sabe si necesita un código del lado del servidor, probablemente no *

* Advertencia : el código del lado del servidor es esencial para la seguridad, cuando desea controlar internamente el acceso al contenido, los datos o la funcionalidad. (No necesariamente tiene que ser su servidor, consulte el último párrafo).

Pregúntese qué problema resolvería con las tecnologías del lado del servidor. Si no puede pensar en ninguno (y en su caso, yo tampoco), entonces no los necesita.

Tenga en cuenta que mucho más de lo que podría pensar es posible utilizando solo el código del lado del cliente. Los marcos de JavaScript como AngularJS o ReactJS pueden permitirle integrarse con contenido dinámico de terceros a través de API utilizando Ajax. (Esto incluye conectarse a una API que podría manejar su propia seguridad).

Tim Grant
fuente
17
Creo que esta es una declaración peligrosa: las tecnologías del lado del servidor se usan a menudo cuando 'podría hacerlo del lado del cliente': la decisión de mover las cosas a un servidor es por razones de seguridad, no necesariamente funcionales. - como tal, promover una actitud de "no saber" es preocupante: los programadores siempre deben considerar la seguridad en cualquier aplicación, incluso una simple como se describe. La solución completa debe pensarse detenidamente: ¿desea un área de contenido 'segura', que obligue a los usuarios a registrarse o dar me gusta en FB antes de darles un mp3? (sin embargo, en este caso, un sitio estático suena bien)
Jmons
3
También hay algo que decir sobre las ventajas de seguridad de los generadores de sitios estáticos. Para muchas aplicaciones, los sitios estáticos son lo último en seguridad, ya que literalmente no hay nada que piratear.
Nathan GoFundMonica Arthur
1
Server-side code is essential for securitybastante algunos desarrolladores no dan una mierda sobre seguridad. No hasta que arrojes su cara en su ... desastre. Mi línea es si necesita autenticación, necesita una oficina administrativa. Si necesita almacenar datos, necesita un backoffice donde los datos se verifiquen por segunda vez después de que el cliente los verifique.
Walfrat
1
@Walfrat Si solo necesita autenticación, puede descargarla a cualquier número de servicios de autenticación abiertos y no utilizar ningún backend. Si necesita autorización, por otro lado, es posible que necesite algunas cosas de back-end.
corsiKa
56

Lea sobre generadores de sitios estáticos. Estos le permiten crear un sitio de manera programática (usando plantillas, datos, etc.), y no creando HTML a mano. El resultado es un conjunto de HTML y CSS estáticos que no requieren ningún backend.

https://www.staticgen.com/ enumera y clasifica varios generadores de código abierto; Es probable que también existan ofertas de código cerrado.

9000
fuente
3
+1, esto todavía funciona para sitios dinámicos que solo un poco con el tiempo (como blogs e itinerarios turísticos). Hasta que el contenido dependa del usuario que mira la página, a menudo es suficiente.
RemcoGerlich
1
+1. Las fechas de la gira y las canciones de ejemplo deberán ser actualizadas por el cliente con más o menos frecuencia. Un generador de sitio estático evita que necesite tocar HTML, y es mucho más simple y seguro que un CMS (mal mantenido).
Bergi
3
Si bien estoy de acuerdo en que esta es una buena sugerencia para OP, ¿realmente intenta responder la pregunta tal como se la hizo?
Woodrow Barlow
La respuesta marcada fue más general y se alineó con la pregunta tal como la menciona Woodrow Barlow. Sin embargo, hice +1 por preseleccionar una buena solución para mí y para muchos otros
Deegriz el
2
@WoodrowBarlow: Yo diría que Can I simply upload HTML, CSS, and JS files to a host and be done with it, or should I take the time to program a backend server in Node or PHP?llama a señalar que hay una tercera opción, en el caso de OP bastante atractiva, en mi humilde opinión :)
Tobia Tesan
6

Puede y debe usar solo un sitio estático si es suficiente, o usar un generador de sitio estático . ¿Por qué? Mantenibilidad. El código tiene errores. Cada pocas semanas se encuentra otro agujero de seguridad de WordPress. Si usa un CMS común, deberá parchearlo constantemente. De lo contrario, el sitio web de sus amigos pronto incluirá publicidad de drogas ilegales, propaganda de ISIS, malware instalado en las computadoras de los visitantes o algo peor. Incluso si lo parches regularmente, es posible que sea demasiado tarde, por lo que debe verificar constantemente los piratas informáticos. Hay formas de asegurar este CMS. Instale "complementos de seguridad", configure un cortafuegos de aplicación web como mod_security, etc. Todo es más trabajo. También tienen que mantenerse actualizados. A veces, sus reglas de mod_security romperán un complemento para WordPress, debe analizarlo y solucionarlo. Mas trabajo.

Podrías pensar que nadie querrá piratear ese sitio. Pero para los agujeros de seguridad comunes que se encuentran en los sistemas CMS comunes, pronto hay bots automáticos que rastrean / buscan en la web y piratean TODOS los sitios que usan ese CMS. Solo quieren difundir sus enlaces / malware / propaganda.

Con un sitio estático (creado manualmente o con un generador), no tiene ese problema.

Si implementa su propio back-end, también tendrá agujeros de seguridad (nadie es perfecto), pero lo más probable es que nadie los explote para ese pequeño sitio web. ¿Pero qué quieres implementar? Si desea crear un editor en el que su amigo pueda cambiar las fechas de la gira él mismo, piense cuánto tiempo le llevará hasta que sea lo suficientemente fácil de usar sin su ayuda. ¿Cuántas veces puedes cambiar rápidamente las fechas para él con ese presupuesto de tiempo?

En mi opinión, demasiadas personas hoy en día solo usan sistemas CMS para cada sitio, porque el HTML estático es "antiguo". Si no necesita nada que no sea posible con HTML5, use el código del lado del servidor. Pero si no lo necesita, ahorrará mucho tiempo sin él.

Josef
fuente
¿Cada pocas semanas? Ja, si tan solo! Más como días
Lightness compite con Monica el
3

Solo necesita hacer programación de backend cuando lo necesite.

Sin embargo, incluso las funciones básicas, como los formularios de correo electrónico, requieren una programación básica básica. Si es solo un sitio de exhibición, entonces sí, está bien.

deek
fuente
1
Sin embargo, si es solo una característica simple, a menudo puede usar algún servicio SaaS para reemplazarlo. Por ejemplo, un formulario de registro se puede hacer de forma gratuita en Google Forms y luego se puede vincular desde el sitio.
André Paramés
2

No necesariamente, pero hay algunos problemas con los que es probable que se encuentre si crea todo el sitio en HTML sin formato.

Muchos sitios tienen los mismos elementos de menú, encabezado y pie de página en varias páginas. Si simplemente los copia y pega de una página a otra, esto puede volverse tedioso y propenso a errores a medida que el sitio se hace más grande y necesita seguir haciendo cambios en estas áreas.

En los días anteriores a la programación del lado del servidor era tan común, una forma común de abordar esto era usar marcos para incrustar estas áreas en cada página. Esto cayó en desgracia hace varios años, por lo que no recomiendo hacerlo ahora. En su lugar, podría escribir un código simple del lado del servidor para mostrar estos elementos comunes en cada página.

Estoy de acuerdo con otros aquí que han recomendado usar un CMS estándar.

bdsl
fuente
1
Una alternativa a "copiar y pegar" es usar un generador de sitio estático; eso debería encargarse de los elementos de menú / encabezado / pie de página para usted, lo que le permite preocuparse por el contenido.
Doktor J