@unfapable

Какие есть способы разделения javascript-кода?

Суть в чём, есть один js-файл, например, scripts.js - в котором хранится весь javascript-код сайта. Если сайт небольшой, то и кода немного (в основном подключение всяких библиотек, слайдеров, немного jquery). Однако в случае более менее крупного проекта, этот самый scripts.js становиться чудовищно большим файлом, в котором естественно много кода, причём такого, который используется не на всех страницах. А теперь вопрос: какие есть принципы, способы, приёмы разделения кода? Как я себе представляю, в scripts.js должен быть код, который используется на всех страницах сайта, а весь остальной, специфичный код выносить в отдельные файлы (news.js - для списка новостей, cart.js - для корзины, в общем что-то типа модули) и просто подключать через тег скрипт там, где это нужно? Но это не совсем то, что я хотел, может есть альтернативы?

К примеру большой файл js, подключенный на всех страницах сайта, хотя очевидно, что не весь код файла нужен для всех страниц www.oldi.ru/bitrix/templates/oldi_new/js/script.js... (не сочтите за рекламу или что-то подобное, просто хотелось показать пример, подобное можно много где увидеть). Получается своего рода "толстый" контроллер, если оперировать терминами MVC. Хотя мне не очень нравится, когда на странице десятки тегов script, конечно кода в таких файлах мало, но опять-таки много запросов и т.п.

И ещё попутно вопрос: часто замечаю, что мало кто пользуются пространством имен, т.е если посмотреть на код по ссылке выше, то нету, к примеру, глобального объекта приложения, в котором находится весь код. Где можно найти примеры использования неймспейсов в js?
  • Вопрос задан
  • 1756 просмотров
Пригласить эксперта
Ответы на вопрос 3
modestguy
@modestguy
full-stack web developer
Вам необходимо познакомиться с такими вещами как grunt или gulp. С их помощью можно разбивать один большой файл js на несколько и потом собирать всё это дело в один. Почитайте документацию. Причём сборщик можно настроить так, что он автоматом будет пересобирать.
Ответ написан
easimonenko
@easimonenko
Любитель
В ES6 и TypeScript есть поддержка модульности и пространств имён, локальных объявлений. Разбиваете код на модули и классы по отдельным файлам. Перед запуском собираете всё в один bundle, например, с помощью browserify. Сторонние модули и библиотеки можно в bundle не линковать, а подключать традиционным способом с CDN. Автоматизировать процесс помогают такие средства как gulp.
Ответ написан
Комментировать
IonDen
@IonDen
JavaScript developer. IonDen.com
В целом есть 2 варианта:
1. Собирать в 1 файл на стадии сборки проекта, в этом вам помогут Gulp/Grunt (туториал)
2. Воспользоваться специальными библиотеками, которые умеют подключать нужные кусочки кода когда нужно. Это Webpack, Require.js и другие.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы