Использую в своём проекте React. На реакте обычно используются ES6 или CommonJS модули и npm. У меня же bower, AMD. Соответственно мне затруднительно искать плагины, который я вообще могу подключить для себя. НО. При загрузки моего SPA у меня загружается минимальное количество приложений. Даже форма регистрации загружается при клике на кнопку, для того, чтобы пользователь очень быстро получил загруженную страницу и не был в ожидании. На сколько я знаю CommonJS собирается обычно в один файл, а если несколько - то всех нужно подключать сразу в html. С AMD я же просто ничего не пакую, минифицирую и всё, чтобы добиться моего результата.
Подскажите, всё ли я правильно делаю? Как решить мою проблему иначе? Приложение большое, статического кода будет много.
Заранее всех благодарю за отзывчивость.
Максим @maxfarseer
а если вы будете использовать require.ensure (из мира webpack) - это не решит вашу проблему? подробнее здесь - https://www.youtube.com/watch?v=Om6yGdU_YlQ
CommonJS синхронен и для браузера не подходит из-за этого (поэтому вам нужно всё либо собирать заранее, либо вручную включать в правильном порядке на странице синхронные скрипты), так что только AMD.
Подскажи пжлста, а если я упакую всё в один файл, то при выборе различного функционала пользователем, он же будет получать быстрее именно то, что ему нужно, верно?
Тем не мене, если CommonJS не подходит для браузера, то почему его так активно применяют?
candybooberr: Если вы упакуете всё в один файл, то пользователь будет грузить всё, даже то, что ему совершенно не нужно. Первый раз будет долго, потом всё будет закэшировано, и, возможно (далеко не факт), быстрее.
CommonJS вообще не работает в браузере, если вы присмотритесь. Вы его как таковой не используете, а используете вместо него кучу инструментов чтобы заставить работать. Почему? Не знаю, но предполагаю, что это разработчики, которые привыкли использовать CommonJS на сервере в окружении Node.js, там оно работает как задумано.
Я просто совершенно не могу понять, что мне делать, когда я нахожу нужный плагин и могу его собраться только из CommonJS модулей с browserify. В итоге туда еще раз включается как зависимость React. А 2 раза на одну страницу грузить React очень странно.
candybooberr: Это печальное состояние современной разработки на JavaScript:) Когда вы ничего не можете сделать без кучи вспомогательных инструментов. Я не использую React, у меня нет совершенно никаких инструментов, которые предназначены для браузера и не используют AMD, но используют CommonJS.
Выбрали экосистему React - делайте как там заведено. Либо переходите на сторону веб-компонентов, у нас всё веселей и можно обойтись вовсе без систем сборки:)
Vladislav: Это совокупное название для: template, custom elements, shadow dom, html imports. Я использую Polymer как библиотеку для удобного создание веб-компонентов: https://www.polymer-project.org/1.0/
Но это уже не относится к самом вопросу)