Czy zawsze należy programować stronę serwera dla strony internetowej?

38

Zaraz zacznę tworzyć stronę projektu muzycznego dla przyjaciela. Na razie powinno to być dość proste: brak zawartości dynamicznej (daty tras itp.) I nic więcej niż kilka osadzonych przykładowych utworów lub linków SoundCloud. Nie oczekuję, że użyję niczego więcej niż waniliowy JavaScript i Bootstrap lub Foundation dla responsywnej siatki.

Czy to jednak wystarczy? Czy mogę po prostu przesłać pliki HTML, CSS i JS na host i gotowe, czy powinienem poświęcić czas na zaprogramowanie serwera zaplecza w Node lub PHP?

Deegriz
źródło
54
Wystarczy? Jaki masz problem z tym, że posiadanie dynamicznego zaplecza rozwiązałoby. Niech to będzie głupie proste, dopóki nie będziesz w stanie.
RubberDuck
25
Maksymalizuj pracę nie wykonaną. YAGNI.
RubberDuck
9
Prawdopodobnie najlepiej będzie, jeśli zainstalujesz gotowy CMS, jeśli wszystko, co będziesz robić, to napisanie tekstu, przesłanie zdjęć i kilku plików muzycznych / osadzenie niektórych plików wideo / YouTubes ... WordPress itp. bądź idealny, a większość firm hostingowych oferuje instalatory za jednym kliknięciem, abyś mógł zacząć pracę w ciągu kilku minut .... istnieje wiele CMSów.
Kinnectus
11
Zastanawiam się, dlaczego takie pytanie ma tak wiele pozytywnych opinii? To jak pytanie „czy muszę utworzyć bazę danych dla mojego oprogramowania, mimo że nie musi ono przechowywać żadnych danych?”. Nie zaskoczyłoby mnie to, gdyby było to pytanie dla początkujących, ale nie, gdy masz wystarczające umiejętności, aby stworzyć projekt bootstrap / fundacja.
Mahdi
14
@Mahdi jest wysoko oceniany, ponieważ wszyscy zastanawiają się nad tą cholerną rzeczą od 5 lat i nikt nie miał odwagi o to zapytać.
djechlin

Odpowiedzi:

86

Jeśli nie wiesz, czy potrzebujesz kodu po stronie serwera, prawdopodobnie nie *

* Uwaga : kod po stronie serwera jest niezbędny dla bezpieczeństwa, gdy chcesz wewnętrznie kontrolować dostęp do treści, danych lub funkcji. (Nie musi to być Twój serwer, patrz ostatni akapit).

Zadaj sobie pytanie, jaki problem przy użyciu technologii po stronie serwera rozwiązałby. Jeśli nie możesz o niczym myśleć (aw twoim przypadku ja też nie mogę), to nie potrzebujesz ich.

Należy pamiętać, że przy użyciu kodu po stronie klienta jest o wiele więcej, niż mogłoby się wydawać. Frameworki JavaScript, takie jak AngularJS lub ReactJS, umożliwiają integrację z dynamicznymi treściami stron trzecich poprzez interfejsy API wykorzystujące Ajax. (Obejmuje to podłączenie do interfejsu API, który mógłby obsługiwać własne zabezpieczenia).

Tim Grant
źródło
17
Myślę, że jest to niebezpieczne stwierdzenie - technologie po stronie serwera są często używane, gdy „można to zrobić po stronie klienta”: decyzja o przeniesieniu rzeczy na serwer jest podejmowana ze względów bezpieczeństwa, niekoniecznie funkcjonalnych. - jako takie promowanie postawy „niewiedzy” jest niepokojące: programiści powinni zawsze brać pod uwagę bezpieczeństwo w każdej aplikacji, nawet takiej prostej, jak opisano. Należy dokładnie przemyśleć całe rozwiązanie - czy chcesz mieć „zabezpieczony” obszar treści, zmuszający użytkowników do rejestracji lub polubienia na FB przed podaniem im mp3? (jednak w tym przypadku strona statyczna brzmi dobrze)
Jmons
3
Można również powiedzieć coś o zaletach statycznych generatorów witryn. W przypadku wielu aplikacji witryny statyczne mają najwyższy poziom bezpieczeństwa, ponieważ dosłownie nie ma nic do włamania.
Nathan GoFund Monica Arthur
1
Server-side code is essential for securityniektórzy programiści nie zwracają uwagi na bezpieczeństwo. Nie, dopóki nie rzucisz ich twarzą w ... bałagan. Moja linia mówi, że jeśli potrzebujesz uwierzytelnienia, potrzebujesz zaplecza. Jeśli chcesz przechowywać dane, potrzebujesz zaplecza, w którym dane będą sprawdzane po raz drugi po sprawdzeniu przez klienta.
Walfrat
1
@Walfrat Jeśli potrzebujesz tylko uwierzytelnienia, możesz przenieść to na dowolną liczbę otwartych usług uwierzytelniania i nie używać żadnego zaplecza. Z drugiej strony, jeśli potrzebujesz autoryzacji, możesz potrzebować trochę zaplecza.
corsiKa
56

Przeczytaj o statycznych generatorach witryn. Umożliwiają one tworzenie witryny w sposób programowy (przy użyciu szablonów, danych itp.), A nie przez ręczne tworzenie kodu HTML. Wynikiem jest zestaw statycznego HTML i CSS, który nie wymaga żadnego zaplecza.

https://www.staticgen.com/ wymienia i szereguje szereg takich generatorów typu open source; prawdopodobnie istnieją również oferty o zamkniętym źródle.

9000
źródło
3
+1, nadal działa to w przypadku dynamicznych witryn, które nieco później (np. Blogi i trasy koncertowe). Dopóki treść nie zależy od użytkownika przeglądającego stronę, często wystarcza.
RemcoGerlich,
1
+1. Daty tras koncertowych i przykładowe utwory będą musiały być aktualizowane przez klienta mniej lub bardziej. Generator strony statycznej pozwala mu uniknąć dotykania HTML, a jest to o wiele prostsze i bezpieczniejsze niż (źle utrzymany) CMS.
Bergi,
3
chociaż zgadzam się, że jest to dobra sugestia dla OP, czy naprawdę próbuje odpowiedzieć na zadane pytanie?
Woodrow Barlow,
Oznaczona odpowiedź była bardziej ogólna i zgodna z pytaniem zadawanym jak wspomniał Woodrow Barlow. Zrobiłem jednak +1 za przygotowanie mi dobrego rozwiązania i wielu innych mogło pójść
Deegriz
2
@WoodrowBarlow: Argumentowałbym, że 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?należy wskazać, że istnieje trzecia, w przypadku OP raczej atrakcyjna, opcja IMHO :)
Tobia Tesan
6

Możesz i powinieneś używać tylko strony statycznej, jeśli jest wystarczająca, lub użyć generatora strony statycznej . Dlaczego? Konserwowalność. Kod zawiera błędy. Co kilka tygodni pojawia się kolejna dziura w zabezpieczeniach WordPress. Jeśli korzystasz ze wspólnego CMS, będziesz musiał ciągle go łatać. W przeciwnym razie strona twoich znajomych wkrótce będzie zawierać reklamy nielegalnych narkotyków, propagandę ISIS, złośliwe oprogramowanie, które jest instalowane na komputerach odwiedzających lub gorzej. Nawet jeśli regularnie go załatujesz, możesz być za późno, więc musisz stale sprawdzać, czy nie hacki. Istnieją sposoby zabezpieczenia tego CMS. Zainstaluj „wtyczki bezpieczeństwa”, skonfiguruj zaporę sieciową, taką jak mod_security itp. Wszystko po prostu działa. Muszą również być aktualizowane. Czasami twoje reguły mod_security psują wtyczkę do WordPress, musisz to przeanalizować i naprawić. Więcej pracy.

Możesz pomyśleć, że nikt nie będzie chciał zhakować tej witryny. Ale w przypadku typowych luk w zabezpieczeniach występujących we wspólnych systemach CMS wkrótce pojawią się automatyczne boty, które indeksują / przeszukują sieć i włamują się do WSZYSTKICH witryn używających tego CMS. Chcą tylko rozpowszechniać swoje linki / złośliwe oprogramowanie / propagandę.

W przypadku strony statycznej (utworzonej ręcznie lub za pomocą generatora) nie masz tego problemu.

Jeśli zaimplementujesz własny backend, będzie on miał również luki w zabezpieczeniach (nikt nie jest doskonały), ale najprawdopodobniej nikt nie wykorzysta ich dla tej małej witryny. Ale co chcesz wdrożyć? Jeśli chcesz stworzyć edytor, w którym sam przyjaciel może samodzielnie zmieniać daty tras, zastanów się, ile czasu to zajmie, dopóki nie będzie wystarczająco łatwy w użyciu bez Twojej pomocy. Ile razy możesz po prostu szybko zmienić daty dla niego przy tym budżecie czasowym?

Moim zdaniem, zbyt wiele osób korzysta dziś z systemów CMS dla każdej strony, ponieważ statyczny HTML jest „stary”. Jeśli nie potrzebujesz niczego, co nie jest możliwe w HTML5, użyj kodu po stronie serwera. Ale jeśli go nie potrzebujesz, oszczędzasz mnóstwo czasu bez niego.

Josef
źródło
Co kilka tygodni? Hah, jeśli tylko! Bardziej jak dni
Lekkość ściga się z Moniką
3

Programowanie zaplecza wystarczy tylko wtedy, gdy jest to potrzebne.

Jednak nawet podstawowe funkcje, takie jak formularze e-mail, zwykle wymagają podstawowego programowania zaplecza. Jeśli to tylko witryna displayowa, to tak, jest w porządku.

deek
źródło
1
Jeśli jest to po prostu prosta funkcja, często możesz skorzystać z usługi SaaS, aby ją zastąpić. Na przykład formularz rejestracyjny można wykonać bezpłatnie w Formularzach Google , a następnie połączyć z witryną.
André Paramés
2

Niekoniecznie, ale są pewne problemy, na które możesz napotkać, jeśli utworzysz całą witrynę w zwykłym języku HTML.

Wiele witryn ma takie same elementy menu, nagłówka i stopki na wielu stronach. Jeśli po prostu skopiujesz i wkleisz je z jednej strony na drugą, może to stać się nużące i podatne na błędy w miarę powiększania strony i musisz wprowadzać zmiany w tych obszarach.

W czasach, gdy programowanie po stronie serwera było tak powszechne, powszechnym sposobem rozwiązania tego problemu było użycie ramek do osadzenia tych obszarów na każdej stronie. To wypadło kilka lat temu, więc nie polecam tego robić teraz. Zamiast tego możesz napisać prosty kod po stronie serwera, aby wyświetlić te wspólne elementy na każdej stronie.

Zgodziłbym się z innymi tutaj, którzy zalecili korzystanie z gotowego CMS.

bdsl
źródło
1
Alternatywą dla „kopiowania i wklejania” jest użycie statycznego generatora strony; które powinny zadbać o elementy menu / nagłówka / stopki, pozwalając ci martwić się o treść.
Doktor J