LINUX.ORG.RU

JS библиотеки. Помогите разложить по полочкам.

 , , , ,


0

4

Всем привет!

В последнее время стал все чаще натыкаться на советы от «бывалых девелоперов» по использованию какой-либо js библиотеки. Backbone, Ext, Angular, Derby, Ember, etc...

Сам раньше занимался разработкой исключительно серверной части веб-приложений, однако, за последние пол года приходилось активно пописывать кое-что и на клиенте, на javascript (к которому ранее относился очень пренебрежительно). Использовал просто сам Javascript без каких-либо библиотек (оберток) + JQuery (куда уж нам без него). Пока хватало, но сейчас код стал распухать, стал расструктуризовываться, да так, что я сам уже в нем теряюсь(.

Посему, у меня вопрос к знатокам, какую (какие) библиотеку (библиотеки), на ваш сугубо личный взгляд, лучше использовать, если нужно: реализовать некий GUI'шный функционал + структурировать код вообще + удобная работа с ajax + селекторы (не хуже JQuery) + анимация + скорость работы?

Для структуризации кода присматриваюсь в Backbone.js (нравится идея MVC), однако в ext.js работа с виджетами впечатляет.

Короче, что посоветуете, господа).

Заранее спасибо за ответ.

Если ты хочешь переносить существующий код, то больше подойдет backbone, knockout.

Первое тебе поможет с моделями, роутингом и структурирует генерацию вьюх, а второе - использует MVVM и решает задачу биндинга вьюшек и вьюмоделей.

Angular потребует больших усилий, но окупится на большом проекте. У него тоже что-то вроде MVVM, просто фреймворк объемный.

ExtJS - это темная сторона силы. В нем все своим путем. Штука неплохая, но тяжеловесная и требующая месяца-двух интенсивного обучения. Подойдет для админок, псевдо-desktop приложений. На этом сфера применения заканчивается.

noomorph
()

Если тебе нужен GUI максимально похожий на десктоп - то extjs подходит, у него достаточно богатый набор виджетов в комплекте и опять таки, MVC в наличии. Но вот с селекторами(не хуже JQuery) там похуже.

ef37 ★★
()

В плане производительности: приходится иногда писать «мобильные приложения» на apache cordova, который, по сути, представляет собой браузер с одностраничным сайтом, запакованный как приложение. Всё потому, что нужно чтоб сразу и android, и ios, и вчера уже готово, и нет под рукой специалистов по настоящим нативным приложениям.

Главный нюанс - эти мобильные браузеры действительно медленные.

Сначала был взят sencha touch (там всё на базе extjs, виджеты, все дела), который очень огорчил - вполне примитивное приложение (списки с картинками и относительно простая логика) на андроидах тормозило жутко. То ли из-за того, что разметка генерится больно жирная, и рендеринг тормозит, то ли сам фреймворк слишком толстый. На айфонах было повеселее, но тоже не очень.

Потом разочаровались, плюнули, выбросили, заменив на angularjs с гуём от твитор-бутстрапа и мелочью вроде lodash для удобств. И без jquery, чтобы жизнь мёдом не казалась. Первое время было непривычно из-за самого angular (было решено всё делать в «официальном» стиле, чтоб directive вместо работы с DOM из контроллера и т.д.), но потом наступило счастье. Летает, свистит, все довольны, как стадо слонов.

Была мысль попробовать и backbone, который до этого использовали для обычных сайтов, но от него потом вообще отказались в пользу angular - уж больно понравился.

А вообще, это всё вопрос вкуса - все эти фреймворки реализуют MVC в каком-то виде.

risenshnobel ★★★
()

Для интерфейса попробуй Facebook ReactJS. С backbone он должен неплохо интегрироваться. Или же сразу emberjs

anonymous
()

Спасибо за ответы.

Как вам на счет связки: Backbone.js + JQueryUI + Zepto.js ?

KernelPanic
() автор топика

Использовал просто сам Javascript без каких-либо библиотек (оберток) + JQuery (куда уж нам без него)

И это не привело к написанию собственной библиотеки?

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

Использовал просто сам Javascript без каких-либо библиотек (оберток) + JQuery (куда уж нам без него)

И это не привело к написанию собственной библиотеки?

Наверное, с этого все и начинается, да :) ?

KernelPanic
() автор топика
Ответ на: комментарий от KernelPanic

Наверное, просто в этом случае проблемы с

Пока хватало, но сейчас код стал распухать, стал расструктуризовываться, да так, что я сам уже в нем теряюсь(.

просто не замечаешь.

Конечно если требуется фреймворк уровня ангуляра, то при написании с нуля получится скорее всего такая же дребедень, с другой стороны когда отлажен процесс взаимодействия клиента и сервера, да и компоненты уже есть и работают, то особой разницы нет, писать директивы на ангуляре или аналогичные вещи на кастомном фреймворке.

Мне кажется у вас проблема не в отсутствии хорошей жаваскриптовой библиотеки, ибо код на ангуляре (да и любой код, который принудительно не улучшают) так же склонен распухать, запутываться и выходить из под контроля.

ya-betmen ★★★★★
()
Ответ на: комментарий от anonymous

Интересно. А что там в ангуляре насчет слайдеров типа nivo?

Есть, в принципе, angular-animate, который облегчает работу с анимациями и контроллерами angular-а. И примитивная библиотека селекторов в нём есть, что-то вроде урезанной jquery.

Судя по гуглу, кто-то делал слайдеры на angular без jquery, но, имхо, если в задаче требуется много анимации (а слайдер иногда вполне тянет на «много анимации»), то пытаться минимизировать зависимости уже не так важно.

Нам в случае с мобильниками ещё и кроссбраузерность была особо не нужна, так как там везде webkit, потому в описанных мною проектах использовались css transitions и прочая хипстерская моднота. Лишь бы работало на ios, android и FF (на котором я сижу).

risenshnobel ★★★
()
Ответ на: комментарий от KernelPanic

На оф. сайте не работают некоторые примеры

Это бывает, поскольку примеры готовят разработчики отдельных компонентов, а они не всегда аккуратно обновляют примеры вслед за обновлением своего кода. Но вот примеры из sdk не было случая, что бы не заработали

Да и пишут, что глючная эта dojo.

Фигня. Работаем с ней уже пару лет - полет нормальный.

k0valenk0_igor ★★★
()
Ответ на: комментарий от risenshnobel

Да это все понятно, простые слайдеры я тоже находил. Но спасибо.

anonymous
()

мне нравится knockout.js

bvn13 ★★★★★
()

Для структуризации кода присматриваюсь в Backbone.js (нравится идея MVC), однако в ext.js работа с виджетами впечатляет

В ExtJS 4 появился MVC (а в 5 — MVVM). Например, есть грид (view), который подгружает данные с сервера (store), использующий некоторую модель данных (model). Управление всем этим добром и обработка событий — задача соответствующего контроллера (controller). Кстати говоря, стиль объявления обработчиков событий похож на бекбоновский, только структурными единицами являются не элементы DOM, а виджеты ExtJS.

static_lab ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.