Вы всегда должны программировать серверную часть для веб-сайта?


38

Я собираюсь начать создание сайта музыкального проекта для друга. Пока все должно быть довольно просто: никакого динамического контента (даты тура и т. Д.) И всего лишь несколько встроенных примеров песен или ссылок SoundCloud. Я не собираюсь использовать ничего, кроме ванильного JavaScript и Bootstrap или Foundation для адаптивной сетки.

Однако этого достаточно? Могу ли я просто загрузить файлы HTML, CSS и JS на хост и покончить с этим, или мне нужно время, чтобы запрограммировать внутренний сервер на Node или PHP?


54
Это достаточно? Какую проблему вы решите, имея динамический бэкэнд? Делай это глупо просто, пока не сможешь.
RubberDuck

25
Максимизировать работу не сделано. YAGNI.
RubberDuck

9
Вероятно, вам лучше всего будет установить готовую CMS, если все, что вы собираетесь делать, это написать текст, загрузить несколько картинок и несколько музыкальных файлов / вставить несколько видеофайлов / YouTubes ... WordPress и т. Д. будьте идеальны, и большинство хостинговых компаний предлагают установщики в один клик, чтобы вы могли приступить к работе в течение нескольких минут ... существует множество CMS.
Kinnectus

11
Интересно, почему такой вопрос вызвал столько голосов? Это все равно что спросить: «Нужно ли мне создавать базу данных для моего программного обеспечения, даже если для этого не нужно хранить какие-либо данные?». Меня не удивит, если это будет вопрос новичка, но не тогда, когда вы достаточно опытны, чтобы создать проект начальной загрузки.
Махди

14
@ Махди, за это проголосовали, потому что все задавались вопросом об этой проклятой вещи в течение 5 лет, и ни у кого не хватило смелости просто спросить об этом.
Джехлин

Ответы:


86

Если вы не знаете, нужен ли вам серверный код, вы, вероятно, не *

* Предостережение : код на стороне сервера важен для безопасности, когда вы хотите внутренне контролировать доступ к контенту, данным или функциям. (Это не обязательно должен быть ваш сервер, см. Последний абзац.)

Спросите себя, какую проблему решат серверные технологии. Если вы не можете думать ни о чем (и в вашем случае я тоже не могу), тогда они вам не нужны.

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


17
Я думаю, что это опасное утверждение - технологии на стороне сервера часто используются, когда вы «можете сделать это на стороне клиента»: решение о переносе вещей на сервер принимается по соображениям безопасности, а не обязательно функционально. - как таковой вызывает беспокойство продвижение позиции «не знать»: программисты всегда должны учитывать безопасность в любом приложении, даже в простом, как описано. Необходимо продумать все решение - хотите ли вы иметь «защищенную» область контента, заставляющую пользователей регистрироваться или что-то подобное в FB, прежде чем дать им mp3? (однако в этом случае статический сайт звучит нормально)
Jmons

3
Также есть что сказать о преимуществах безопасности статических генераторов сайтов. Для многих приложений статические сайты обеспечивают максимальную безопасность, поскольку взломать буквально нечего.
Натан GoFundMonica Артур

1
Server-side code is essential for securityдовольно многие разработчики не заботятся о безопасности. Пока ты не бросишь их лицо в их ... беспорядок. Моя линия: если вам нужна аутентификация, вам нужен бэк-офис. Если вам нужно хранить данные, вам нужен бэк-офис, где данные будут проверяться во второй раз после проверки клиентом.
Уолфрат

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?нужно указать, что существует третий, в случае ОП довольно привлекательный вариант, ИМХО :)
Тобия Тесан

6

Вы можете и должны использовать только статический сайт, если этого достаточно, или использовать генератор статического сайта . Зачем? Ремонтопригодность, Код имеет ошибки. Каждые несколько недель обнаруживается еще одна дыра в безопасности WordPress. Если вы используете обычную CMS, вам придется постоянно ее исправлять. В противном случае сайт ваших друзей скоро будет содержать рекламу нелегальных наркотиков, пропаганду ИГИЛ, вредоносных программ, которые устанавливаются на компьютерах посетителей или еще хуже. Даже если вы регулярно исправляете его, вы можете опоздать, поэтому вам придется постоянно проверять наличие хаков. Есть способы защитить эту CMS. Установите «плагины безопасности», настройте брандмауэр веб-приложения, например, mod_security и т. Д. Они также должны быть обновлены. Иногда ваши правила mod_security нарушают плагин для WordPress, вы должны проанализировать это и исправить это. Больше работы.

Вы можете подумать, никто не захочет взломать этот сайт. Но из-за общих брешей в безопасности, обнаруженных в распространенных системах CMS, вскоре появятся автоматические боты, которые сканируют / ищут в Интернете и взламывают ВСЕ сайты с помощью этой CMS. Они просто хотят распространять свои ссылки / вредоносные программы / пропаганду.

Со статическим сайтом (созданным вручную или с генератором) у вас нет этой проблемы.

Если вы реализуете свой собственный бэкэнд, у него также будут дыры в безопасности (никто не идеален), но, скорее всего, никто не будет использовать их для этого маленького веб-сайта. Но что вы хотите реализовать? Если вы хотите создать редактор, в котором ваш друг сам может менять даты тура, подумайте, сколько времени это займет у вас, пока он не станет достаточно простым для использования без вашей помощи. Сколько раз вы можете просто быстро изменить даты для него с этим временным бюджетом?

На мой взгляд, сегодня слишком много людей используют системы CMS для каждого сайта, потому что статический HTML «старый». Если вам не нужно ничего, что невозможно с HTML5, используйте код на стороне сервера. Но если вам это не нужно, вы сэкономите много времени без него.


Каждые несколько недель? Ха, если бы только! Больше похоже на дни
Легкость Гонки с Моникой

3

Вам нужно только программировать бэкэнд, когда вам это нужно.

Однако даже базовые функции, такие как формы электронной почты, обычно требуют базового программирования на сервере. Если это просто демонстрационный сайт, тогда да, все в порядке.


1
Если это просто простая функция, вы можете использовать ее для замены. Например, регистрационная форма может быть сделана бесплатно в Google Forms , а затем связана с сайтом.
Андре Парамес

2

Не обязательно, но есть некоторые проблемы, с которыми вы можете столкнуться, если сделать весь сайт в обычном HTML.

Многие сайты имеют одинаковые элементы меню, верхнего и нижнего колонтитула на нескольких страницах. Если вы просто скопируете и вставите их с одной страницы на другую, это может стать утомительным и подверженным ошибкам, поскольку сайт становится больше, и вам нужно продолжать вносить изменения в этих областях.

В те дни, когда программирование на стороне сервера было настолько распространенным, одним из распространенных способов решения этой проблемы было использование фреймов для встраивания этих областей в каждую страницу. Это упало в пользу несколько лет назад, поэтому я не рекомендую делать это сейчас. Вместо этого вы можете написать простой код на стороне сервера, чтобы отобразить эти общие элементы на каждой странице.

Я бы согласился с другими здесь, которые рекомендовали использовать готовую CMS.


1
Альтернативой «копированию и вставке» является использование статического генератора сайтов; это должно заботиться об элементах menu / header / footer для вас, позволяя вам просто беспокоиться о контенте.
Доктор J
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.