Как полностью написать сайт с нуля, если ты знаешь только frontend?
Добрый день. Недавно заинтересовался программированием и решил начать с веб разработки, а именно с javascript и всему ему прилегающему. Вычитал, что для того, чтобы написать сайт нужно освоить фронтенд, но так же есть бекенд (Серверная разработка).
В чем, собственно, вопрос. Я уже запутался и не могу понять, как можно самому с нуля написать и поднять сайт для того, чтобы на него можно было заходить хотя бы по локалке?
Неужели для того, чтобы написать простенький сайт без головокружительной графики, гифок и прочей "фигни" нужно для начала:
1) написать клиентский интерфейс самому( если ты можешь во фронтенд)
2) Найти человека, который может в бекэнд и попросить написать его серверную часть
3) Найти человека, который может в фотошоп и попросить нарисовать картинки для блоков, макетов и т.д?
Так вот. Что мне нужно изучить, чтобы я сам смог написать сайт где будет, к примеру, просто информация и электрике и его контакты, фотки работ и часы работы
На данный момент начал активно изучать JS, html, css. Дальше, судя по тому, что пишут в паутине, лучше продолжить с NodeJS
Алексей Костюхин, не заморачивайтесь. Можно сделать отличный статичный сайт без всякого бэк-энда, с самыми крутыми графическими наворотами.
Изучите понятия статический/динамический сайты.
Алексей Костюхин, у статики даже есть свои плюсы - хостинг значительно дешевле (на Рег.ру, к примеру).
Из очевидных минусов - сложность создания многостраничных сайтов. Олдскульно это решалось фреймами, почитайте и про них для общего развития.
Из собственного опыта: я начал изучать серверную часть только после 2 лет изучения фронт-энда. Это было полезно тем, что понятия не смешивались в общую кашу. А тренировался на бесплатном плане Юкоза (тогда он был чуть ли не единственным конструктором, где можно было заниматься исключительно фронтом).
Павел Корнилов, Я тоже создал пару сайтов на юкозе в школе. Но дальше конструктора дело не заходило, потому что я и понятия не имел, как оно все работает)
Все, на что у меня хватало сил это поменять картинки в интерфейсе и подправить заголовки)
Теперь у меня в планах понять, как вообще работает сам сайт - конструктор ucoz)
Алексей Костюхин, изучайте фронт-энд во всей его полноте. Для этого Юкоз вполне подходит.
Вот вам пример полностью статичного многостраничного сайта, основанного на фреймах - old.js-master.ru/SiteOnFrames
Изучайте, попробуйте сделать что-то своё наподобие, используя технологии html5, css3.
UPD
Обновил ссылку. На предыдущей не скачивался архив.
Павел Корнилов, ?,
api js-са не позволяет адекватно сделать отображение контента без перезагрузки? Зачем эти iframe? они ж ограничивают возможность манипуляции DOM и стилизации? Есть методы обхода ограничений - но это костыли.
Hyubert, человек учится практически с нуля. Какой ajax??? И причём тут ifame? Я речь вел о frame.
Работа с фреймами помогает отточить знания html + css. А вот, когда доберётся плотно до JS, зная уже в совершенстве всё вышеперечисленное, я первый подскажу, как сделать простой аякс, хоть на нативе, хоть на фреймворках.
Александр, Павел Корнилов, Hyubert, спасибо большое. На досуге почитаю все. Спасибо. Примерное понятие имею о том, что такое AJAX - показ и загрузка содержимого в реальном времени без перезагрузки страницы.
В остальном многие слова для меня не знакомы, например, DOM // Я пока до него не добрался.
Алексей Костюхин, Document Object Model
В нём содержится вся иерархия структуры html страницы, это если очень кратко.
Но не советую лезть в дебри с самого начала. Все рекомендации я уже дал выше.
PS. Про SPA - согласен с Александр полностью, в т.ч., и в том, что можно делать запросы статическим файлам - без серверной обработки. Но это уже более сложная технология. Хотя на том же jQuery реализуется на раз.
Hyubert, может, вы и правы. Такое мнение действительно есть. Но старые работающие техники, обладающие хоть одиночными, но плюсами, тоже ИМХО, учить нужно.
Аргументирую: что делать в том же SPA с отключённым JS в броузере? А фреймы - будут работать.
Я не спорю с вами, а тоже привожу альтернативное мнение.
Александр, Хотел еще спросить касательно обучения. Нормально ли то, что на начальном этапе даже простые и элементарные задача ставят меня в тупик?
Допустим, прочитаешь какую - то главу и вроде все запомнил, но как решить задачу вообще не понимаешь.
Нормально ли то, что для того, чтобы что-то понять или запомнить нужно перечитывать главу или статью не по 2 раза, а по 5 или даже 7 раз?
Нормально ли то, что на начальном этапе даже простые и элементарные задача ставят меня в тупик?
Нормально, ведь элементарным вещам тоже нужно научиться
Допустим, прочитаешь какую - то главу и вроде все запомнил, но как решить задачу вообще не понимаешь.
Нормально ли то, что для того, чтобы что-то понять или запомнить нужно перечитывать главу или статью не по 2 раза, а по 5 или даже 7 раз?
Это тоже нормально. Желательно читать и сразу же практиковаться
Я бы посоветовал смотреть в сторону cms.
Есть много простых cms, которые позволяют без глубинных знаний с помощью простого визарда "далее-далее-готово" развернуть готовый движок с образцом сайта и базовым функционалом.
Я обычно советую modx, но вам возможно нужно что-то другое.
Достаточно купить виртуальный хостинг.
Большинство популярных хостеров предлагают установку cms в один клик или вообще с предустановленной cms.
Я бы предложил посмотреть в сторону Wordpress очень много документации на русском (на английском и подавно).
После установки получите готовый рабочий сайт. Дальше можно играться с плагинами, а можно начинать выковыривать ему мозги:
- тренироваться в дизайне: прописывать стили, менять имеющиеся
- смотреть функции php в бэкенде, писать плагины, добавлять функционал
Много вопросов гуглится в том числе на StackOverflow. Для начинания, как мне кажется, очень хорошая cms. Локально тоже разворачивается без проблем, если появится такая необходимость.
Неужели для того, чтобы написать простенький сайт без головокружительной графики, гифок и прочей "фигни" нужно для начала:
Для того, чтобы написать простенький сайт, можно просто html.
Вы лукавите, не указывая в вопросе какой именно функционал вы хотите. Если сказать хотелки, можно подсказать какими технологиями они реализуются. Тогда будет понятно куда копать.
Простенький сайтик может быть hello world, а может быть адаптивный "одностраничник со скроллингом" на webassembly.
Всё сильно зависит от целей.
Если нужно просто делать сайты для клиентов, то тут нужны знания фронта и какой-либо CMS.
Если нужны какие-то индивидуальные проекты, то нужно изучить какой-нибудь более-менее популярный фреймворк.
Какой язык изучать на бэке - это уже вам решать. Можно изучать тот, который нравится. Если целью является нормально оплачиваемая работа, то лучше проанализировать рынок вакансий, чтобы понять, что будет оптимальнее.
Потребность в бэкэнде определяется тем, есть ли у Вас в проекте бизнес-логика, которую необходимо обрабатывать на сервере? И это не обязательно что-то навороченное.
Хотите:
- хранить даные в БД, выдавать в шаблон (функционал CMS - разделение контента и представления),
- что-то обрабатывать на сервере - данные из формы обратной связи хотя бы, или калькулятор валют, или ватт в киловатты,
- ещё любые действия с данными, на которые хватит фантазии, и которые Вы не можете реализовать на фронте.
???
Значит надо, так или иначе, думать про бэкенд.
А вот что это будет:
- ваша самописка на PHP или Pythone, например,
- готовая CMS,
- фреймворк.
Это уже зависит от конкретных задач, имхо.
На любой из этих вариантов вы (со временем) или обученный человек (быстрее) сможет прикрутить ваш фронт. Но в зависимости от выбранного решения затраты сил/времени/объем допиливания будут разными!
Постараюсь коротко ответить на то, чего я хочу.
Допустим у меня есть заказчик, он просит создать ему сайт по ремонту и обслуживанию лифтов. на этой сайте можно будет зарегестрироваться, оставь заявку на ремонт лифта, а так же на главной страницы оставлять отзывы о работе компании.
Так же нужно создать чат - бот. Клиенты могут писать без авторизации и с авторизации. По другую сторону будут сидеть авторизованные менеджеры и отвечать на сообщения.
На одной из возможных вкладок на сайте можно посмотреть видео о том, как работает наша компания.
Это к примеру.
Теперь вопрос:
Какие технологии нужны для реализации такого проекта и смогу ли один зная только фронтенд это реализовать (допустим, рисовать я тоже умею) ?
Напрашивается хранение пользователей в БД и какие-то действия с ними на сервере, уже отсюда мы можем говорить, что бэк вам нужен.
Чат-бот - мне кажется, отдельная тема. В формате "какого выбрать/написать" - "как прикрутить к...". Но тут я не силен, м.б. про него отдельный вопрос создать?
Какие технологии нужны для реализации такого проекта
- серверный язык программирования - PHP и Python самые популярные, на мой взгляд,
- БД на сервере - тот же MySQL, например.
Дальше возникает вопрос: работать с этим "в лоб", или использовать какие-то прослойки? С прослойками явно быстрее и удобнее. Я бы все разделил на CMS и Фреймворки. CMS, наверное, проще (например, кто-то проводил параллель "далее - далее - готово" - примерно так ставится тот же Wordpress (на PHP)). Фреймворки, наверное, требуют больше времени на изучение-погружение, но дают большую гибкость и возможности (Laraval, YII2 на PHP, Django на Python, например).
В принципе, считаю что описанный вами сайт (чат-бота пока не рассматриваю) можно сделать и на том, и на том. Наверное на основе чего-то, более похожего на ТЗ, профессионал, владеющий несколькими инструментами ответит, какой из них подойдет лучше. Но это будет с его точки зрения же!
Если говорить о том, что изучать: скорее всего PHP (имхо, применяется пока шире). Или Python. Потом к выбранному языку выбирать инструмент и изучать его. Чтобы в CMS пойи дальше работы в админке, в нее ведь тоже придется погружаться!..
зная только фронтенд
На сервере же что-то должно происходить! Значит одним фронтом не обойдетесь.
для простенького сайтика - достаточно знать html
если вы хотите, чтобы он был красивым - нужны знания html+css+графический редактор для изображений
для каких-то более сложных моментов нужно знать javascript - это для выполнения в браузере
ну а сервер разрабатывать, при необходимости сделать нечто большее, чем позволяют перечисленные выше технологии