github.com/markuplab
NPM
Приемущества:
Широко-используемый стандарт модулей CommonJS работающий как на сервере так и на клиенте (webpack/browserify)
Возможность использовать общую code базу в разных окружениях (client-side, desktop, mobile, server-side, etc.)
Широкий выбор инструментов для автоматизации процессов связанных с клиентскими приложениями
Широкий выбор подходов разработки: Single Page, Isomorphic, Hybrid, Server-Side
CommonJS
Модульная система позволяет делить приложение на маленькие части. С помощью современных сборщиков таких как browserify / webpack можно перенести серверные модули на сторону браузера, с незначительными ограничениями.
В последних версиях эти сборщики позволяют осуществлять ленивую загрузку модулей, что позволяет координально изменить взгляд на разработку больших и тяжелых приложений размер которых уже не помещается в бразуер.
Пример современного модуля
Подходы: Изморфность
Принцип разработки при котором результаты выполнения кода не зависят от окружения в котором выполняется код, обычно это server и client.
Плюсы:
SEO совместимость
Единая Code база
Минусы:
Различие интерфейсов окружений
Overhead на 2ую инициализацию
Browser compability заставляет использовать устаревшие API, что ограничивает возможности языка
Много костылей ради достижения результата
Малая нагрузка на сервер
Подходы: Одностраничное приложение
Принцип разработки кода при котором ответственность за работу приложения ложится на плечи клиента и его виртуальной машины (браузера)
Плюсы:
Еще более легкий сервер
Лучший UX
Минусы:
Сильная зависимость от API браузера
Гибкость
Трудная поддрежка производительности
Зависимость от памяти клиента
Есть вещи которые сложно реализовать без поддержки сервера
Подходы: Гибридное приложение
Приложение работа которого совмещает выполнение кода как на сервере так и на клиенте
Плюсы:
Возможность строить гибкое приложение
Минусы:
Overhead на написание двойных интерфейсов для клиента и браузера
Высокая производительность и отзывчивость у клиента
Редкие Memory Leak'и
Гораздо проще написать деградируемое приложение
Реиспользование кода становиться более сложной задачей для больших модулей
Стандарты и инструменты:
Easy to Deploy
Для выкладки и запуска node.js приложения достаточно иметь node.js и npm в этом окружении.
Пример сборки и запуска проекта
$ git clone <repo>
$ cd repo
$ npm i
$ npm i -g gulp
$ gulp build
$ npm start