Подскажите как написать приложение на чистом js в учебных целях? Знаю js, могу писать скрипты и приложения с небольшим количеством кода в императивном стиле. В большом коде начинается портянка неподдерживаемого кода, нет никакой системы, не понимаю с чего начать, в каких местах объявлять переменные и функции, как делить код. В общем нужна какая-то система, архитектура написания кода. В интернете не нашла ролевантной информации
Стоит задача написать что-то именно на чистом IS, без библиотек? В таком случае, вам нужно будет пройти несколько этапов.
Разбить проект на базовые модули и собственно приложение
Написать базовые модули для работы с DOM, AJAX, событиями, строками, числами, формами, стилями, потоками, cookies, наследованием, роутингом и т. д. (посмотрите дизайн Dojo Toolkit версии 1. X, там эталонная реализация всего этого уже есть).
Разделить приложение на модули, написать их
Собрать из отдельных частей готовый bundle-файл (не знаю, что сейчас стильно-модно-молодёжно, но вроде WebPack популярен, хотя порог входа очень крутой)
1.Что содержит модуль? Это какой-то класс с созданными на основе его объектами?
2.Как модули могут взаимодействовать между собой?
3. Как модуль делать независимым, если код привязан к dom и зависит от других модулей?
Внутри модуля содержится решение 1 (одной) задачи. Например, модуль для создания DOM-объектов. При импорте в проект он должен отдавать всего один объект или функцию, которая делает нужную задачу. Посмотрите, например, в Dojo Toolkit реализацию модулей в каталоге dojo/_base. Скажем, модуль array дает функционал для работы с массивами. Внутри он проверяет, какой уровень поддержки массивов у браузера и при необходимости использует полифиллы. Для того, кто этот модуль использует, нужно знать лишь его API.
Для взаимодействия используется несколько подходов. Первый - внедрение зависимостей, так называемое Dependency Injection. Модуль при вызове импортирует в себя другие модули и использует их функционал. Существует несколько подходов для решения этой задачи. Второй - обмен сообщениями. Вам нужен паттерн "Посетитель", реализация которого описана, например, на Wiki. Если совсем просто, есть некий глобальный объект с двумя методами - subscribe() и publish(). При необходимости передать, например, переменную из одного модуля или объекта в другой вы делаете так: первый подписывается на прослушивание определенного типа событий, а второй эти события по мере необходимости генерирует. Реализация и применение указаны в модуле dojo/topic.
Никак. Если модуль привязан к DOM, то это первый признак быдлокода. Правильным решением является абстрагирование от прямой работы с DOM, особенно от обращения к конкретным ID. Если в вашем коде часто используется document.getElementById(), то мои поздравления: вы используете антипаттерн hard code ("прибито гвоздями"). React и Angular для решения этой проблемы вводят понятие "компонент" - объединение в одном месте разметки и логики.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.