Чи слід завжди програмувати сторону сервера для веб-сайту?


38

Я збираюся розпочати створення веб-сайту музичного проекту для друга. Наразі це повинно бути досить простим: без динамічного контенту (дати турів тощо), і не більше ніж кілька вбудованих зразків пісень або посилань SoundCloud. Я не сподіваюся використовувати щось більше, ніж ванільний JavaScript та Bootstrap або Foundation для чуйної сітки.

Але цього достатньо? Чи можу я просто завантажувати файли HTML, CSS та JS на хост і робити це з ним, чи потрібно витратити час, щоб запрограмувати сервер резервного сервера в Node або PHP?


54
Чи достатньо? Яка у вас проблема, що вирішення динамічного заднього кінця вирішило б. Зробити це нерозумно просто, поки не зможеш.
RubberDuck

25
Максимізуйте не виконану роботу. ЯГНІ.
RubberDuck

9
Вам, мабуть, буде найкраще встановити готовий CMS, якщо все, що ви збираєтеся робити, - це написання тексту, завантаження зображень та декількох музичних файлів / вставлення деяких відеофайлів / YouTubes ... WordPress тощо Будьте ідеальними, а більшість компаній, що займаються хостингом, пропонують інсталяторів одним клацанням миші, щоб ви йшли протягом декількох хвилин .... Є багато CMS.
Кіннект

11
Цікаво, чому таке питання отримало стільки результатів? Це як запитати "чи потрібно створити базу даних для мого програмного забезпечення, навіть якщо для цього не потрібно зберігати будь-які дані?". Мене не здивувало б, якщо це питання для початківців, але не тоді, коли ти достатньо кваліфікований для створення завантажувального / фундаментального проекту.
Махді

14
@ Mahdi це схвалено, тому що всі вже 5 років дивуються цій точній проклятій річці, і ні в кого не було сміливості просто її запитати.
djechlin

Відповіді:


86

Якщо ви не знаєте, чи потрібен вам код на стороні сервера, ви, ймовірно, не *

* Caveat : Код на стороні сервера є важливим для безпеки, коли ви хочете внутрішньо контролювати доступ до вмісту, даних або функцій. (Це не обов'язково, щоб це був ваш сервер, див. Останній абзац.)

Запитайте себе, яку проблему з використанням серверних технологій вирішило б. Якщо ви не можете придумати жодне (а у вашому випадку я не можу і те), вони вам не потрібні.

Будьте в курсі, що набагато більше, ніж ви думаєте, можливо, використовуючи лише код на стороні клієнта. Рамки JavaScript, такі як AngularJS або ReactJS, дозволяють інтегрувати динамічний контент сторонніх сторін через API, використовуючи Ajax. (Це включає підключення до API, який може обробляти власну безпеку.)


17
Я думаю, що це зробити небезпечне твердження - технології на стороні сервера часто використовуються, коли ви могли «зробити це клієнтом»: рішення про переміщення речей на сервер приймаються з міркувань безпеки, не обов'язково функціональних. - як таке, що пропагує ставлення до "невідомого", викликає занепокоєння: програмісти завжди повинні розглядати безпеку в будь-якому додатку, навіть такому простому, як описано. Потрібно продумати все рішення - чи хочете ви "захищену" зону вмісту, змушуючи користувачів зареєструватися або подобається у ФБ перед тим, як дати їм mp3? (однак у цьому випадку статичний сайт звучить нормально)
Jmons

3
Що можна сказати і щодо переваг безпеки генераторів статичних сайтів. Для багатьох програм статичні сайти є найбільшою безпекою в тому, що в буквальному сенсі немає чого зламати.
Nathan GoFundMonica Arthur

1
Server-side code is essential for securityдосить деякі розробники не дають af * ck про безпеку. Поки ти не кинеш їх обличчя в їхній… безлад. Моя лінія - якщо вам потрібна автентифікація, вам потрібен бек-офіс. Якщо вам потрібно зберігати дані, вам потрібна помилка, в якій дані будуть перевірятися вдруге, після перевірки з боку клієнта.
Вальфрат

1
@Walfrat Якщо вам просто потрібна автентифікація, ви можете вивантажити її на будь-яку кількість відкритих служб аутентифікації і взагалі не використовувати жодного сервера. Якщо вам потрібна авторизація, з іншого боку, вам можуть знадобитися деякі допоміжні матеріали.
corsiKa

56

Читайте про генератори статичних сайтів. Вони дозволяють створювати сайт програмно (використовуючи шаблони, дані тощо), а не ручним складанням HTML. Результат - це набір статичних HTML та CSS, який не потребує жодного доповнення.

https://www.staticgen.com/ перелічує та займає ряд таких генераторів з відкритим кодом; Пропозиції із закритим джерелом, ймовірно, теж існують.


3
+1, це все ще працює для динамічних сайтів, які з часом трохи (наприклад, блоги та туристичні маршрути). Поки вміст не залежить від користувача, який переглядає сторінку, досить часто.
RemcoGerlich

1
+1. Дати туру та приклади пісень клієнтом потрібно буде оновлювати більш-менш часто. Генератор статичних сайтів дозволяє уникнути необхідності доторкнутися до HTML, і він набагато простіший і безпечніший, ніж (погано підтримується) CMS.
Бергі

3
Хоча я згоден, що це хороша пропозиція для ОП, чи справді вона намагається відповісти на запитання?
Вудро Барлоу

Помічена відповідь була більш загальною і узгоджувалась із запитанням, про яке згадує Вудро Барлоу. Однак я зробив +1 для того, щоб заздалегідь задати приємне рішення, і багато хто міг би піти на це
Дегріз

2
@WoodrowBarlow: Я б заперечував, що 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?це закликає вказати на те, що є 3-й, у випадку ОП досить привабливий варіант IMHO :)
Tobia Tesan

6

Можна і потрібно використовувати лише статичний сайт, якщо його достатньо, або використовувати генератор статичних сайтів . Чому? Технічне обслуговування. Код має помилки. Кожні кілька тижнів знайдено ще одну дірку в безпеці WordPress. Якщо ви використовуєте загальну CMS, вам доведеться постійно латати її. Інакше веб-сайт ваших друзів незабаром міститиме рекламу нелегальних наркотиків, пропаганду ISIS, зловмисне програмне забезпечення, яке встановлюється на комп’ютери відвідувачів або ще гірше. Навіть якщо ви регулярно латаєте його, ви можете запізнитися, тому вам доведеться постійно перевіряти на наявність хаків. Існують способи забезпечити цю CMS. Встановіть "плагіни безпеки", налаштуйте брандмауер веб-додатків, наприклад mod_security тощо. Їх також потрібно постійно оновлювати. Іноді правила mod_security порушать плагін для WordPress, вам доведеться проаналізувати це та виправити. Більше роботи.

Ви можете подумати, ніхто не захоче зламати цей сайт. Але для загальних прорізів у безпеці, що зустрічаються у звичайних системах CMS, незабаром існують автоматичні боти, які сканують / шукають в Інтернеті та зламають ВСІ сайти за допомогою цієї CMS. Вони просто хочуть поширювати свої посилання / зловмисне програмне забезпечення / пропаганду.

Зі статичним сайтом (створеним вручну або з генератором) у вас немає такої проблеми.

Якщо ви реалізуєте свій власний бекенд, він також матиме отвори в безпеці (ніхто не ідеальний), але, швидше за все, ніхто не буде використовувати їх для цього маленького веб-сайту. Але що ви хочете реалізувати? Якщо ви хочете створити редактор, де ваш друг сам може змінити дати туру, подумайте, скільки часу це займе у вас, поки йому не стане достатньо простого користування без вашої допомоги. Скільки разів ви можете просто швидко змінити дати для нього з тим часом бюджету?

На мою думку, сьогодні надто багато людей просто використовують системи CMS для кожного сайту, оскільки статичний HTML - "старий". Якщо вам не потрібно нічого, що неможливо з HTML5, використовуйте код сторони сервера. Але якщо вона вам не потрібна, ви економите безліч часу без цього.


Кожні кілька тижнів? Га, хоч би! Більше, як дні
гонки легкості з Монікою

3

Програмувати бекенд потрібно лише тоді, коли це потрібно.

Однак навіть такі основні функції, як форми електронної пошти, зазвичай вимагають базового програмування. Якщо це просто сайт для показу, то так, це добре.


1
Якщо це просто проста функція, ви можете часто використовувати якусь службу SaaS для її заміни. Наприклад, реєстраційну форму можна безкоштовно зробити в Google Forms , а потім зв’язати її з сайту.
Андре Парамеш

2

Не обов'язково, але є певні проблеми, з якими ви, швидше за все, зіткнетесь, якщо весь сайт зробите в простому HTML.

Багато сайтів мають однакові елементи меню, заголовка та колонтитула на кількох сторінках. Якщо ви просто копіюєте та вставляєте їх з однієї сторінки на іншу, то це може стати втомливим і схильним до помилок, оскільки сайт збільшується, і вам потрібно продовжувати вносити зміни в ці області.

За часів, коли програмування на стороні сервера було настільки поширеним, один поширений спосіб вирішити це - використовувати кадри для вбудовування цих областей на кожну сторінку. Це не прихильно кілька років тому, тому я не рекомендую робити це зараз. Ви можете написати простий код з боку сервера, щоб відобразити ці загальні елементи на кожній сторінці.

Я погодився б з іншими тут, хто рекомендував використовувати позаштатний CMS.


1
Альтернативою "копіювання та вставлення" є використання статичного генератора сайту; які повинні піклуватися про елементи меню / заголовка / колонтитула для вас, дозволяючи вам просто турбуватися про вміст.
Doktor J
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.