require('modules') in the browser





Component package manager 
for building a better web.




«Модуль» — это популярная реализация паттерна, инкапсулирующего приватную информацию, состояние и структуру, используя замыкания.  Это позволяет оборачивать публичные и приватные методы и переменные в модули, и предотвращать их попадание в глобальный контекст, где они могут конфликтовать с интерфейсами других разработчиков. Паттерн «модуль» возвращает только публичную часть API, оставляя всё остальное доступным только внутри замыканий.
- Паттерны для масштабируемых JavaScript-приложений, Эдди Османи 
Преимущества Browserify

  • Использование NPM модулей в браузере
  • Поддержка process.nextTick(), ___dirname, ____filename
  • Node Core Libraries
  • Тестирование с testling-ci


Преимущества Component


  • В одном модуле можно хранить скрипты,  cтили, картинки и шаблоны
  • Удобный механизм для создания скелета компонента
  • Установка модулей с GitHub
  • Поиск модулей прямо из командной строки
  • Возможность организовать приватное хранилище кода
Плюсы использования модулей

1) Независимые куски кода

2) Чистая глобальная область видимости
3) Дерево зависимостей
4) Развязывание кода
5) Возможность покрытия Unit тестами

Оптимизация производительности с помощью модулей


"Классический пример"


Он же, но с закешированным файлом


Оптимизация производительности с помощью модулей


Ленивая загрузка


Оптимизация производительности с помощью модулей


Модульный подход


Оптимизация производительности с помощью модулей


Модульный подход с кешированнием





Почему Component?


1) Возможность создать свой репозиторий компонентов

2) Быстрая установка на проекты

3) Возможность контролировать / обновлять компоненты

4) Возможность хранить все assets нужные для модуля

5) Возможность делать не только JS модули, но и CSS/SCSS  модули (можно сложить туда reset'ы, mixin'ы)

COMMON.JS

By Kirill Kaysarov