Sollten Sie immer serverseitig für eine Website programmieren?

38

Ich bin dabei, eine Musikprojekt-Website für einen Freund zu erstellen. Es sollte vorerst ziemlich einfach sein: kein dynamischer Inhalt (Tourdaten usw.) und nur ein paar eingebettete Beispielsongs oder SoundCloud-Links. Ich erwarte nicht, mehr als Vanille-JavaScript und Bootstrap oder Foundation für ein responsives Grid zu verwenden.

Ist das aber genug? Kann ich einfach HTML-, CSS- und JS-Dateien auf einen Host hochladen und fertig sein oder sollte ich mir die Zeit nehmen, einen Back-End-Server in Node oder PHP zu programmieren?

Deegriz
quelle
54
Reicht das? Welches Problem hätten Sie, das ein dynamisches Backend lösen würde? Halte es einfach dumm, bis du es nicht mehr kannst.
RubberDuck
25
Maximieren Sie die nicht erledigte Arbeit. YAGNI.
RubberDuck
9
Sie werden wahrscheinlich am besten ein fertiges CMS installieren, wenn Sie nur Text schreiben, einige Bilder und einige Musikdateien hochladen / einige Videodateien einbetten / YouTubes ... WordPress etc Seien Sie ideal und die meisten Hosting-Unternehmen bieten One-Click-Installer an, damit Sie innerhalb von Minuten loslegen können. Es gibt viele CMSes.
Kinnectus
11
Ich frage mich, warum eine Frage wie diese so viele positive Stimmen hat. Es ist wie die Frage "Muss ich eine Datenbank für meine Software erstellen, obwohl keine Daten gespeichert werden müssen?". Es würde mich nicht überraschen, wenn es sich um eine Anfängerfrage handelt, aber nicht, wenn Sie über ausreichende Kenntnisse verfügen, um ein Bootstrap- / Foundation-Projekt zu erstellen.
Mahdi
14
@ Mahdi, es ist verärgert, weil sich alle schon seit 5 Jahren über dieses verdammte Ding wundern und niemand den Mut hatte, es einfach zu fragen.
Djechlin

Antworten:

86

Wenn Sie nicht wissen, ob Sie serverseitigen Code benötigen, tun Sie dies wahrscheinlich nicht. *

* Vorsichtsmaßnahme : Server-seitiger Code ist für die Sicherheit unerlässlich, wenn Sie den Zugriff auf Inhalte, Daten oder Funktionen intern steuern möchten. (Es muss nicht unbedingt Ihr Server sein, siehe letzter Absatz.)

Fragen Sie sich, welches Problem mit serverseitigen Technologien gelöst würde. Wenn Ihnen keiner einfällt (und in Ihrem Fall kann ich auch nicht), brauchen Sie sie nicht.

Beachten Sie, dass mit clientseitigem Code viel mehr möglich ist, als Sie vielleicht denken. Mit JavaScript-Frameworks wie AngularJS oder ReactJS können Sie mithilfe von Ajax über APIs dynamische Inhalte von Drittanbietern integrieren. (Dies schließt das Einbinden in eine API ein, die mit ihrer eigenen Sicherheit umgehen kann.)

Tim Grant
quelle
17
Ich halte dies für eine gefährliche Aussage - serverseitige Technologien werden häufig verwendet, wenn Sie dies auf der Client-Seite tun könnten: Die Entscheidung, Dinge auf einen Server zu verschieben, erfolgt aus Sicherheitsgründen, nicht notwendigerweise aus funktionalen Gründen. - als solche ist es besorgniserregend, eine Haltung des „Nichtwissens“ zu fördern: Programmierer sollten in jeder Anwendung immer auf Sicherheit achten, auch in einer einfachen wie beschrieben. Die gesamte Lösung sollte durchdacht sein - möchten Sie einen "gesicherten" Inhaltsbereich, der Benutzer dazu zwingt, sich bei FB zu registrieren oder zu registrieren, bevor sie eine MP3-Datei erhalten? (In diesem Fall klingt eine statische Site jedoch einwandfrei)
Jmons
3
Auch für die Sicherheitsvorteile statischer Site-Generatoren ist etwas zu sagen. Für viele Anwendungen sind statische Sites die ultimative Sicherheit, da buchstäblich nichts gehackt werden muss.
Nathan GoFundMonica Arthur
1
Server-side code is essential for securityEinige Entwickler geben keine Ahnung von Sicherheit. Nicht bevor du ihr Gesicht in ihr ... Chaos wirfst. Wenn Sie eine Authentifizierung benötigen, benötigen Sie ein Backoffice. Wenn Sie Daten speichern müssen, benötigen Sie ein Backoffice, in dem die Daten ein zweites Mal überprüft werden, nachdem sie vom Kunden überprüft wurden.
Walfrat
1
@Walfrat Wenn Sie nur eine Authentifizierung benötigen, können Sie diese in eine beliebige Anzahl von offenen Authentifizierungsdiensten auslagern und überhaupt kein Backend verwenden. Wenn Sie andererseits eine Autorisierung benötigen, benötigen Sie möglicherweise einige Back-End-Komponenten.
corsiKa
56

Lesen Sie mehr über statische Site-Generatoren. Mit diesen können Sie eine Site auf programmatische Weise (unter Verwendung von Vorlagen, Daten usw.) und nicht durch manuelles Erstellen von HTML-Code erstellen. Das Ergebnis ist eine Reihe von statischem HTML und CSS, für die kein Backend erforderlich ist.

https://www.staticgen.com/ listet und ordnet eine Reihe solcher Open-Source-Generatoren; auch Closed-Source-Angebote dürften existieren.

9000
quelle
3
+1, dies funktioniert immer noch für dynamische Websites, die nur wenig Zeit haben (wie Blogs und Reiserouten). Bis der Inhalt von dem Benutzer abhängt, der die Seite betrachtet, ist es oft genug.
RemcoGerlich
1
+1. Tourdaten und Beispielsongs müssen vom Kunden mehr oder weniger oft aktualisiert werden. Ein statischer Site-Generator vermeidet, dass er HTML anfassen muss, und es ist viel einfacher und sicherer als ein (schlecht gewartetes) CMS.
Bergi
3
Obwohl ich der Meinung bin, dass dies ein guter Vorschlag für OP ist, versucht es wirklich, die gestellte Frage zu beantworten?
Woodrow Barlow
Die markierte Antwort war allgemeiner und stimmte mit der Frage überein, die Woodrow Barlow gestellt hatte. Ich habe jedoch +1 gegeben, weil ich eine nette Lösung vorab festgelegt habe, und viele andere könnten sich dafür entscheiden
Deegriz,
2
@WoodrowBarlow: Ich würde argumentieren, dass 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?dies einen Hinweis darauf erfordert, dass es eine dritte, im Falle von OP eher attraktive, Option gibt, IMHO :)
Tobia Tesan
6

Sie können und sollten nur einen statischen Standort verwenden, wenn dies ausreicht, oder einen statischen Standortgenerator verwenden . Warum? Wartbarkeit. Code hat Fehler. Alle paar Wochen wird eine weitere Sicherheitslücke in WordPress gefunden. Wenn Sie ein allgemeines CMS verwenden, müssen Sie es ständig patchen. Anderenfalls enthält die Website Ihres Freundes bald Werbung für illegale Drogen, ISIS-Propaganda, Malware, die auf den Computern der Besucher installiert ist, oder noch schlimmer. Selbst wenn Sie es regelmäßig patchen, kann es sein, dass Sie zu spät sind, sodass Sie ständig nach Hacks suchen müssen. Es gibt Möglichkeiten, dieses CMS zu sichern. Installieren Sie "Sicherheits-Plugins", konfigurieren Sie eine Webanwendungs-Firewall wie "mod_security" usw. Alles nur mehr Arbeit. Sie müssen auch auf dem Laufenden gehalten werden. Manchmal brechen Ihre mod_security-Regeln ein Plugin für WordPress. Sie müssen das analysieren und korrigieren. Mehr Arbeit.

Sie könnten denken, niemand wird diese Seite hacken wollen. Aber für die allgemeinen Sicherheitslücken, die in allgemeinen CMS-Systemen zu finden sind, gibt es bald automatische Bots, die das Web durchsuchen und ALLE Websites mit diesem CMS hacken. Sie wollen nur ihre Links / Malware / Propaganda verbreiten.

Bei einer statischen Site (manuell oder mit einem Generator erstellt) tritt dieses Problem nicht auf.

Wenn Sie Ihr eigenes Backend implementieren, weist es ebenfalls Sicherheitslücken auf (niemand ist perfekt), aber höchstwahrscheinlich wird niemand sie für diese kleine Website ausnutzen. Aber was möchten Sie implementieren? Wenn Sie einen Editor erstellen möchten, in dem Ihr Freund die Tourdaten selbst ändern kann, überlegen Sie, wie lange Sie brauchen, bis die Verwendung ohne Ihre Hilfe für ihn einfach genug ist. Wie oft kannst du mit diesem Zeitbudget die Daten für ihn einfach schnell ändern?

Meiner Meinung nach verwenden heutzutage viel zu viele Leute CMS-Systeme für jede Site, da statisches HTML "alt" ist. Wenn Sie nichts benötigen, was mit HTML5 nicht möglich ist, verwenden Sie serverseitigen Code. Aber wenn Sie es nicht brauchen, sparen Sie viel Zeit ohne es.

Josef
quelle
Alle paar wochen Hah, wenn nur! Mehr wie Tage
Leichtigkeit Rennen mit Monica
3

Sie müssen die Backend-Programmierung nur dann durchführen, wenn Sie sie benötigen.

Selbst grundlegende Funktionen wie E-Mail-Formulare erfordern jedoch normalerweise eine grundlegende Backend-Programmierung. Wenn es sich nur um eine Anzeigeseite handelt, ist das in Ordnung.

Deek
quelle
1
Wenn es sich nur um eine einfache Funktion handelt, können Sie sie häufig durch einen SaaS-Dienst ersetzen. Beispielsweise kann ein Registrierungsformular kostenlos in Google Forms erstellt und dann von der Website aus verlinkt werden.
André Paramés
2

Nicht unbedingt, aber es gibt einige Probleme, auf die Sie wahrscheinlich stoßen, wenn Sie die gesamte Site in einfachem HTML erstellen.

Viele Sites haben auf mehreren Seiten die gleichen Menü-, Kopf- und Fußzeilenelemente. Wenn Sie diese einfach kopieren und von einer Seite auf eine andere einfügen, wird dies möglicherweise mühsam und fehleranfällig, da die Site größer wird und Sie in diesen Bereichen weitere Änderungen vornehmen müssen.

In den Tagen, bevor die serverseitige Programmierung so verbreitet war, bestand eine übliche Möglichkeit, dies zu beheben , darin, Frames zum Einbetten dieser Bereiche in jede Seite zu verwenden. Dies war vor einigen Jahren in Ungnade gefallen, daher empfehle ich, es jetzt nicht zu tun. Sie können stattdessen einen einfachen serverseitigen Code schreiben, um diese allgemeinen Elemente auf jeder Seite anzuzeigen.

Ich würde anderen hier zustimmen, die empfohlen haben, ein Standard-CMS zu verwenden.

bdsl
quelle
1
Eine Alternative zum "Kopieren und Einfügen" ist die Verwendung eines statischen Site-Generators. Das sollte sich für Sie um die Elemente menu / header / footer kümmern, damit Sie sich nur um den Inhalt kümmern können.
Doktor J