Серьезный SPA на JavaScript: какие используете фреймворки?
Коллеги, поделитесь опытом, что используете для серьезных SPA (например, система учёта активов сопряжённая с картографией)?
Я рассматриваю вариант: ExtJS или W2UI + OpenLayers или Leaflet.
Но может что-то упустил?
ExtJS тяжеловат...
К W2UI нужно добивать какой-то фреймворк типа Backbone или Angular.
AngularJS, что использовать для UI - зависит от задачи. Обычно можно отдельные директивы на все случаи жизни найти + штуки типа material design от google.
А вот что есть мощного UI-шного, для полноценной эмулцяии GUI десктопа? Сенча и w2ui - всё что приходит на ум. Сенчу не охота, какой-то монстр. А интерфейсы будут в основном либо карты, либо таблицы.
В целом, grid в w2ui идеален. Но не хватает роутинга ну и всяких других вещей, для каркаса. Он чисто уишный.
Павел Китьян: я не люблю классический десктопный UI. Посему ничего не могу сказать. Что до angular vs backbone вы же понимаете что выбираете между фреймворком и библиотекой?
Сергей Протько: Не уверен, что понмаю. Например, JQuery - библиотека, JQueryUI - библиотека UI-компонентов.
Я и не сравниваю подобное с MVVC-фреймворками типа Angular и Knockout.
Но Backbone. Разве не в одном с фреймфорками ряду?
Павел Китьян: Knockout - библиотека дающая вам дата биндинг, она не решает других задач (раутинг, модели, взаимодействие с сервером). Backbone напротив, решает проблему раутинга и взаимодействия с сервером, но не дает вам структуры и view. По сути Backbone удобная библиотека для реализации моделей.
Angular же самодостаточен, предоставляет вам все выше перечисленное + структура приложения + возможность делать тестируемые изолированные его части. Ember туда же.
Сергей Протько: Возникает вопрос. Если мне не нужна шаблонизация, если чёткого view, потому что мне надо связать изменения модели с набором UI-компонент из W2UI ну или даже JQueryUI, то разве Backbone не справится?
И... как может быть роутинг, но не быть view? Нечто вроде контроллера отрабатывает роуты? А значит там же я могу управлять моими UI-компонентами? Нет?
Павел Китьян: ну вот то и значит, что у вас в таком случае бизнес логика и логика представления смешивается. И если мы говорим о серьезном SPA должны быть и шаблоны и кучи других вещей. Иначе это не серьезное SPA а... ну просто SPA.
Вообще решать вам. Хотите, используйте связки всякие типа backbone + marionette, knokout, react, etc...
Сергей Протько: Понятно дело, что решать мне. Но дело именно в том, что нет у меня опыта работы с MVC на фротнэнде (только CodeIgniter на бекэнде) и я не могу понять, за что взяться.
Если бы визуализация была полностью кастомная - тогда наверное точно Angular. Но из-за того, что почти вся визулизация - это обновление контролов либо W2UI, либо картографии OpenLayers/Leaflet, я озадачен...
Ведь даже если я возьму Angular, мне де всё равно придётся в контроллеры пихать управление UI-контролами других библиотек. Так?
Павел Китьян: открою вам тайну, тот MVC который вы использовали на бэкэнде, не совсем MVC. Ну да несуть.
Нет, несли вы возьмете Angular, то все что касается UI это директивы, но не контроллеры. Контроллеры экспортируют данные во view, по сути задают viewmodel.
Павел Китьян: единственное что, готовых наборов директив под w2UI вы под angular не найдете и их придется писать. И скорее всего изучение еще одного фреймворка просто так вам будет не подуше. А angular придется именно учить, разбираться в философии этого фреймворка и т.д.
Сергей Протько: Суть. Поясните, раз открыли тайну, почему же нет? В чём не MVC? В том, что классов view нет? Классы модели есть, классы контроллеров тоже. Дело в том, что view по сути просто шаблоны, с которыми работают контроллеры? Или что?
Сергей Протько: Разберусь, я не против нового. Главное не ошибиться с выбором. Именно взаимодействие с другими UI-библиотеками ставит меня пока что в тупик. Про директивы не слышал - почитаю, спасибо.