Здравствуйте! Не первый раз я сталкиваюсь с этим вопросом. Мне непонятно, как в зависимости от типа сайта, мы подбираем технологию для организации кода. Как понять, какая технология и для какого сайта уместна. И вообще, какие технологии существуют?
Как правильно реализовывать сайты, как правильно разбивать код и какой подход и где используется? Не просто, "а дальше фрейморк" - нет! Для того, чтобы спокойно разобраться в том же фрейморке необходимо глубокое понимание того, как это всё работает. Как ранее разбивался код, использовался подход. Всё зависело от типа сайта(лэндинг, новостной сайт, интернет магазин), или в основе было что-то другое? Какие подходы использовались, какие при этом создавались проблемы, которые способствовали появлению новых подходов. Вы можете ответить, что всё это можно найти в интернете, но для новичка это сложно. В сети нет нормальной статьи/видео по этой теме. Чуть ниже, я напишу просто список непонятных слов, фраз, которые многих вгоняют в ступор.
"подходы разделение кода, шаблонизация, модули, МVC, state, организация кода, биндинг, реактивное программирование, SPA, MPA, Virtual DOM, Нода, Веб-компоненты, Templates, Custom Elements API.” … Что и откуда выходит? Есть ли какие-то блок схемы, на которых это можно увидеть... книги? Можно ли это всё описать одни словом - Паттерны?"
В идеале, если у вас это конечно есть, отлично подошла бы блок-схема, как наглядная демонстрация, что и откуда берётся. Имея такую блок схему, можно было бы с большей лёгкостью двигаться по ней, выучивая каждый блок по отдельности, но уже понимая, куда нужно двигаться и зачем
Простите, но мне сложно сформулировать сразу свой вопрос. Бывает, что получив ответ, я понимаю, что меня не правильно поняли, и задаю уточняющий вопрос) Я разделю свой вопрос на два пункта. Но прежде, оговорюсь, что дело не в заказчиках и не CMS. Мои вопросы не сводятся к ним. Я заказчик и web-разработчик. И я вообще не рассматриваю использование. Считаю, что они убивают развитие начинающего разработчика… У меня есть знания по html/css и уверенная база по js(кроме понимания типов данных, знание о замыкании, лексическом окружении,функции, колбэков, объектов и прототипов, DOM, геттеры и сеттеры, синтаксис ES2015, базовое понимание http запросов, понимание зачем нужен асинхронный код)
1) Представим, что нужно сделать сайт с несколькими страницами. И тут, я как начинающий, сталкиваюсь с вопросами:
- как разделить код, писать всё в одном js файле, или разделить его? Если разделить, то какие механизмы существуют? Я знаю, что в этом случае, нередко используются модули(import export). Но даже здесь нет уверенности в том, что должно быть в главном модуле, куда будут импортироваться другие части js кода
- далее, я слышал про MVC, как про один из паттернов. И опять вопрос, в каком случае его использовать? Для каких типов сайта. И зачем нужны остальные паттерны? шаблоны и шаблонизаторы(мне это вообще ни о чём не говорит)
2) И я так понимаю, что SPA и МPA это всего лишь выбор какой-то методики организации кода, я прав?
Я готовлюсь к началу изучение фрейморка VUE. У меня нет чётко понимания, какие знаниями я должен обладать, чтобы с уверенностью сказать, да, я могу приступать к изучению фрейморка. Нужны ли ниже перечисленные знания, прежде чем начать учить VUE
- Не совсем понятно, где прочитать про отрисовку элементов браузером? Как это называется?
- обязательны ли знания по HTML Templates, Custom Elements, Shadow DOM?
- и что по вашему нужно?
- Что больше относится к VUE, SPA или MPA?
В зависимости от задач, бюджета, времени и желания заказчика.
Мне непонятно, как в зависимости от типа сайта, мы подбираем технологию для организации кода. Как понять, какая технология и для какого сайта уместна. И вообще, какие технологии существуют?
Если у Вас продающий лендинг(без логики и приходящих данных с сервера), то нет смысла пихать туда заумные паттерны проектирования - сойдет обычная статика, либо сайт посаженный на CMS(систему управления сайтом), если у Вас крупный интернет магазин, с огромным колличеством логики, огромными приходящими с сервака данными - вы используете инструменты которые созданы под эту задачу(CMS или фрейморки).
В сети нет нормальной статьи/видео по этой теме. Чуть ниже, я напишу просто список непонятных слов, фраз, которые многих вгоняют в ступор.
В сети есть всё, просто Вы, научившись кататься на велосипеде, пытаетесь сесть на ламборджини, и спрашиваете "а какого хрена тут так много элементов управления, я на велосипеде сидел, и там только педали видел". Всё приходит с опытом разработки. Прыгать с корабля на бал не нужно.
"подходы разделение кода, шаблонизация, модули, МVC, state, организация кода, биндинг, реактивное программирование, SPA, MPA, Virtual DOM, Нода, Веб-компоненты, Templates, Custom Elements API.” … Что и откуда выходит? Есть ли какие-то блок схемы, на которых это можно увидеть... книги? Можно ли это всё описать одни словом - Паттерны?"
У большинства людей вытекут глаза, и из ушей кровь пойдет. Все эти непонятные слова гуглятся, и объясняются очень простым языком.
В идеале, если у вас это конечно есть, отлично подошла бы блок-схема, как наглядная демонстрация, что и откуда берётся. Имея такую блок схему, можно было бы с большей лёгкостью двигаться по ней, выучивая каждый блок по отдельности, но уже понимая, куда нужно двигаться и зачем
Да, такая блок схема есть. В зависимости от выбранного Вами языка - она называется RoadMap. К примеру вы выбрали себе язык Java или PHP - ваш путь на Java Developer Roadmap или Php developer roadmap.
В сети есть всё, просто Вы, научившись кататься на велосипеде, пытаетесь сесть на ламборджини, и спрашиваете "а какого хрена тут так много элементов управления, я на велосипеде сидел, и там только педали видел". Всё приходит с опытом разработки. Прыгать с корабля на бал не нужно.
Полагаю, вы должны задать себе несколько вопросов на определённую тему.
Как пользователь будет работать с сайтом? Предполагается больше мобильных устройств? Или десктопных? Пользователь попадет на одну страницу? Или предполагается несколько последовательных страниц? Все страницы однотипны? Или каждая и выглядит и работают по разному? Какой контент должен размещаться? Предполагается ли что пользователь будет периодически возвращаться на эти страницы? Нужен ли доступ offline?
Отвечайте на эти вопросы. А дальше думайте о том, как добиться наилучшей производительности в описанном сценарии. Например, если предполагается Сайт визитка. В этом случае, у вас есть одна или несколько практически идентичных страниц. Весь контент статический. Вероятно пользователи будут часто возвращаться на этот сайт.
Так как у нас одна или несколько практически идентичных страниц, логично собрать весь функционал (скрипты, стили) для всего в один файл. Вместо того, чтобы создавать отдельные файлы для каждой страницы.
Так как весь контент статический, нет нужны в каких либо CMS или серверной генерации. Весь сайт можно скомпилировать в готовые html файлы которые будут максимально быстро отдаваться клиенту.
Так как предполагается, что пользователи будут время от времени возвращаться на ваш сайт, нужно настроить кэширование файлов.
Так как на сайте предполагается размещение контактов, важно предоставить возможность доступа к сайту offline.
Кто будет работать, что умеет? Сюда я отношу всё что связано с задачей и тем кто будет её выполнять. Если ли ограничения по времени на реализацию? Какой бюджет на разработку? Какие люди есть в команде? Что они умеют? Есть ли в команде люди, умеющие, работавшие ранее с какой-то технологией, которую вы определили ранее? Сколько времени понадобится чтобы разработчик изучил эту технологию с нуля? Целесообразно ли это? Если ли альтернативы из того, что люди в вашей команде уже умеют? Кто будет заниматься поддержкой этого сайта? Поддержку какого рода вы будете предоставлять? Насколько вы хотите продолжать работать с этим клиентом?
Так вы сможете определить технологии которые будут использоваться для разработки. И отталкиваясь от этого определить архитектуру.