В настоящее время я готовлю оценки модульной подсистемы JavaScript для своего корпуса. Мы разрабатываем "JavaScript Best Practices" для наших проектов, модуляция - один из центральных вопросов.
С огромным количеством загрузчиков, плагинов, библиотек и т.д. вокруг них.
Ответ 3
Вы написали: "Я не прошу конкретных библиотек и инструментов, а скорее подходит для подходов и спецификаций". однако вы можете приблизиться к окружению ExtJS 5, который удовлетворяет всем вашим требованиям.
Если вы не заинтересованы в таком коммерческом продукте, вы можете просто познакомиться с шаблонами и решениями в нем.
Относительно ваших требований:
Структура кода JavaScript в отдельных файлах.
Он реализует парадигму объектно-ориентированного программирования, поэтому вы можете создавать классы, подклассы, объекты, mixins, плагины. Он соединяет программирование на основе классов и прототипное программирование.
Стоит отметить архитектуру MVVM (View, Controller, ViewModel), привязку данных, сеанс данных (управление клиентскими данными/записи/сущности).
Конфигурация системы также весьма интересна. Это очень удобно. Свойство config
объединяется из родительского класса в подклассы, а также при создании объекта вы можете передать конфигурацию, которая также будет объединена. Это очень полезно, когда мы хотим иметь настраиваемые и гибкие компоненты.
Загрузите соответствующие модули во время выполнения.
Каждый класс может иметь директиву requires
или uses
, которые используются при создании приложения в один файл. Вы также можете вручную загружать файлы.
... без необходимости включать каждый отдельный файл в качестве тега script.
В dev env файлы загружаются динамически (асинхронно или синхронно).
В prod env необходимые файлы были созданы для одного миниатюрного файла.
Поддержка агрегации и минимизации - возможность создания и использования одного мини-оптимизированного файла JavaScript.
Вы можете создать приложение с помощью инструмента Sencha cmd
(и сделать несколько других вещей).
Вы можете использовать три предопределенных env (разработка, тестирование, производство) или создать свои собственные (на основе файлов конфигурации и ant).
Уметь использовать модули в разных комбинациях - часто используются разные веб-страницы/клиенты, которым нужны разные подмножества модулей.
Вы можете использовать workspaces и packages.
Поддерживающая документация (с JSDoc?).
JS Duck, учебник
Подходит для тестирования.
Вы можете сделать модульные тесты (PhantomJS, JSLint, PhantomLint, Жасмин).
Вы можете использовать выделенную инфраструктуру, например Siesta или другие популярные платформы тестирования, такие как Selenium.
Подходит для веб-браузера.
С официального сайта:
Предоставлять приложения в самом широком выборе браузеров и операционных систем с одной базой кода. Ext JS 5 использует возможности HTML5 для современных браузеров при сохранении совместимости и функциональности для устаревших браузеры. Уверенно доставляйте приложения своим конечным пользователям, независимо от того, какой браузер они используют.
Поддержка:
Safari 6+, Firefox, IE 8+, Chrome, Opera 12+, Safari/iOS, Safari/iOS 6+, Chrome/Android, Chrome/Android 4.1+, IE 10+/Win 8
Поддерживает приложение Cordova и PhoneGap.
Разумная поддержка IDE.
Я не очень хорошо знаю IDE с выделенной поддержкой ExtJS, но я работаю над Webstorm, и это прекрасно. Источники библиотеки находятся внутри проекта, поэтому автозаполнение работает (но не на 100% отлично).
Заключение
Я не хочу прославлять ExtJS 5. Среда довольно зрелая и стабильная, но в последней версии фреймворка (v5) есть пара ошибок, и не все отлично. Однако я мог бы пойти глубже и узнать принципы этой структуры, которые разумны, ориентированы в хорошем направлении, но иногда плохо реализованы;)