В каталоге документации Express 3 были собраны социальные сервисы, инструменты совместной работы, аналитика и приложения с HTTP API. Названия ниже сохранены как состав той подборки. Они не подтверждают нынешний стек, доступность или поддержку этих продуктов; коммерческие ссылки «Посетите» и рекламные обещания убраны.
Полезнее сравнивать задачи: какую работу выполняет маршрут, что остаётся в базе или очереди, где проверяются права и как клиент получает обновления. Поэтому к каждому историческому примеру добавлен вопрос для разбора архитектуры.
Ленты, публикации и поиск
| Пример из исходной подборки | Задача, описанная в источнике | Что разобрать в своём приложении |
|---|---|---|
| MySpace | Социальный сайт; исходник упоминал его новую на тот момент версию. | Как разделить публичную страницу, личные данные и действия владельца профиля? |
| Storify | Сборка публикации из материалов социальных медиа. | Как валидировать внешние URL и безопасно показывать пользовательский контент? |
| Prismatic | Персонализированная подборка контента по взаимодействиям. | Какие сигналы сохраняет сервер и как отделяется рекомендация от выдачи ленты? |
| Clipboard | Сохранение фрагментов веб-страниц. | Как ограничить размер загрузки и убрать исполняемый код из внешнего HTML? |
| Geekli.st | Публикация достижений и общение разработчиков. | Как проверяются права на изменение записи и видимость профиля? |
| Yummly | Поиск рецептов из разных источников. | Как отделить параметры поиска от хранения и нормализации документов? |
Совместная работа и инструменты
| Пример | Назначение в подборке | Архитектурный вопрос |
|---|---|---|
| LearnBoost | Учебные планы, посещаемость, оценки и отчёты. | Как разграничить доступ преподавателя, ученика и администратора к одной записи? |
| Koding | Редактор, общение и терминал в браузере. | Как отделить HTTP-приложение от исполнения недоверенного кода? Маршрутизатор не является песочницей. |
| Balloons.io | Чат с обновлениями в реальном времени. | Как клиент переподключается и получает пропущенные сообщения? Нужен отдельный транспорт/протокол обновлений. |
| Apiary.io | Описание и документирование REST API. | Как связать спецификацию, обработчики и проверки фактических HTTP-ответов? |
Идентификация и аналитика
| Пример | Назначение в исходнике | Что важно проверить |
|---|---|---|
| Persona / BrowserID | Проект идентификации браузера Mozilla. | Как приложение проверяет результат аутентификации и срок действия утверждения? Старый бренд не является рекомендацией нового провайдера. |
| Countly | Аналитика мобильных приложений. | Какие события действительно нужны, как ограничены объём, сроки хранения и доступ? |
| Segment.io | Передача событий разным аналитическим службам. | Как схема события и список получателей ограничивают распространение персональных данных? |
| Klout | Оценка и сравнение социального влияния. | Что означает метрика, откуда берутся данные и можно ли независимо проверить расчёт? |
Как перейти от названий к коду
Название известного продукта не доказывает пригодность выбранной библиотеки для вашей нагрузки. Для проверки начните с небольшого собственного вертикального сценария: запрос → проверка входа → доступ к данным → статус и ответ. Затем добавьте отказ базы, неверные права, пустой результат и повторный запрос.
- Пример Express 3 и Redis показывает вспомогательный счётчик, его ограничения разобраны рядом.
- Порядок middleware определяет, какая проверка выполнится раньше.
- Согласование содержимого отделяет HTML, текст и JSON.
- Цепочка обработки ошибок помогает завершить неудачный запрос без раскрытия внутренних данных.
- Зафиксированные примеры полезнее рекламного утверждения о числе установок.
Состав исторической подборки: документация Express 3, © 2012 TJ Holowaychuk; русский перевод JSman. Архитектурные вопросы — редакционное дополнение, а не сведения о внутренней реализации перечисленных продуктов.