LINUX.ORG.RU

Фреймворк для клиент-сайд веб-приложений


1

6

Господа, фигачу сайты-одностраничники (двух-страничники, трех-страничники, короче мало-страничники). Планирую юзать следующую говноархитектуру: на сервере - REST API + continuations/comet/polling + бэкенд, всё остальное на клиенте.

Нужен клиент-сайд-ориентированный веб-фреймворк :) Посоветуйте?

Немножко юзал angular, что про него думаете? Продолжать?

Особенно круто, если этот фреймворк будет уметь искаропки интегрироваться с популярными серверными фреймворками. В порядке важности: Java/Scala Play2, PHP Symfony2, PHP Yii2, Python Django, Ruby on Rails. Например, angular пришлось допиливать до интеграции с play2, но так как я кривой инвалид, в результате получилось полное говнище - хотелось бы что-нибудь получше.

Особенно круто, если этот предполагаемый фреймворк будет знать об nginx, статическом кэше html, итп.

Совершенно небоходимо, чтобы он мог сосуществовать рядом с jQuery и Dojo, т.к. рядовой жаваскриптер ничего дальше jQuery не желает, а в Dojo (точнее его либе Dijit) самые клёвые котролы из бесплатных. И не конфликтовал с названиями стилей Bootstrap3 (я пытаюсь использовать LESS-версию, и инкапсулировать бутстраповские стили внутрь стилей с нормальными семантическими названиями, но так делают не все).

В предыдущем треде советовали http://www.meteor.com/, но насколько понял, это надстройка над Нодой, а Нода несовместима с русскими шаред-хостингами чуть менее чем полностью, и есть печальные предположения насчет прочухивания им нагрузок на дохлых впс типа hetzner VQ7 (если есть аргументы против, прошу историй успеха, сколько можно впихнуть в VQ7 сайтов-визиток, прежде чем пользователь начнет видеть тормоза).

★★★★☆

Я вот backbone.js использую, хотя он слегка низкоуровневый - ничего магического в нём нет, многое надо делать руками. Впрочем, на вкус и цвет же, ну ты понял.

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

в общих чертах - правильно. А конкретно, не нужен фреймворк для CSS-дизайна (он уже есть, Bootstrap3), нужен фреймворк для JS-логики, позволяющей осуществлять классические «серверные» операции на клиенте. Система псевдо-URLов, роутер по таким URLам, «экраны», «модальные диалоги», MVW/MVVM/MVC, ORM итп. Рельсы, только на клиенте. Конкретные запросы к БД будут через REST/Comet сосаться с сервера.

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

раскрой?

В нём есть каркас для MVC (базовые классы для Model и View), некоторая интеграция с jquery и underscore.js (от последнего есть набор встроенных методов и шаблоны, впрочем, никто жестко не ограничивает в выборе). Ещё в нём есть роутинг (хэшбанги или html5 history, с фоллбэком), и возможность «автоматически» выдёргивать данные из указанного для модели урла, то есть достаточно просто написать класс в пару строк, указать урл и вызвать fetch - он вытащит нужные данные и раскидает по моделям (правда, нужен определённого вида json). Ну и встроенная система событий.

Вот, наверное, и всё, если ничего не забыл. На самом деле этого довольно мало. Например, нет встроенной возможности «привязать» данные к html-инпуту, чтобы они обновлялись в реалтайме. Сделать это несложно, но надо таки писать обработчики событий руками.

Кода получается на выходе не всегда мало, но зато он выглядит довольно стройно и аккуратно. Вообще, рекомендую хотя бы попробовать, вдруг понравится. У нас три средненьких проекта на нём было (хитрый калькулятор для спецтехники, сложный терминал на базе сайта с тач-интерфейсом и ещё одна штука), вроде ничего получилось.

risenshnobel ★★★
()

Думаю стоит продолжать с angular, еще можно глянуть knockout.

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

Нашел офигенный обзор: http://habrahabr.ru/post/177115/

про твой backbone говорят, что в него нужно плагины. Что ты считаешь самым крутым и полезным понапихать в него?

про angular и ember говорят, что негибкие. В первую очередь эта повторяющаяся фраза настораживает, надо же много всяких посторонних вещей понапихать.

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

Нашел офигенный обзор: http://habrahabr.ru/post/177115/

Я с перечисленными там библиотеками работал не так много, а что-то толстое писал только на бэкбоне, потому вряд ли могу авторитетно что-то откомментировать.

про твой backbone говорят, что в него нужно плагины. Что ты считаешь самым крутым и полезным понапихать в него?

Никаких плагинов не использовал, хотя один раз был соблазн, но потом прошло:) У нас каждое решение было заточено под конкретный сервер-сайд (причем иногда довольно странный), потому попыток набрать плагинов для «конвейерной работы» не было - каждый раз приходилось бороться с новыми проблемами, но это всё вина серверной части.

По поводу статьи - отмеченные там вещи, которые «отсутствуют», в простых случаях достаточно быстро реализуются своими силами при необходимости. Если делать много, наверно может и надоесть, не знаю.

risenshnobel ★★★
()

Angular на данный момент лучший. Единственно что не завелось никакими костылями - routing когда приложение встраивают как iframe приложение вконтакте. Но это из разряда «такой же, только с крыльями»

angular пришлось допиливать до интеграции с play2

Как? Где? ЧЕМ?

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от anonymous

Ember

NOOOOOO!

Да он уже мемом стал из-за своей ущербности. Ничего не понятно, работает магически, обычно не работает. Проще хаскелль выучить

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 3)

ember, backbone.
По ember какая-то омская документация и по тем promises я просто в положении лётчика.


Angular надо бы глянуть, но вряд ли осилю.

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

да много чем. Например, как совместить роутинг ангулара и роутинг плея? Простейшая вещь: я хочу чтобы по урлу (в т.ч. роботу гугла и переходу из гугла) грузилась одиночная страничка, а при ручном открытии сайта - та же страничка была html anchor, и догружалась лениво только если чел кликнет по ссылке, которая перебросит на этот якорь или вручную доскролит колёсиком. Первая часть реализуется со стороны плея, вторая - со стороны клиента. И я хочу, чтобы роутинг был единым, а генерация таких вещей - прозрачной и незаметной, так что для разработчика разница между ресолвингом со стороны клиента и со стороны сервера (и прямым ресолвингом, и обратным) была не видна. Есть урлы, есть экраны, есть маппинг, как оно будет собираться каждый конкретный раз - уже дело фреймворка, а не разраба. Т.е. я это таки сделал, но получилось неприятно. Наверняка кто-то, кто знает все эти штуки по-настоящему, а не по туториалам «как написать бложик за 60 секунд», сможет сделать то же гораздо лучше.

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от vertexua

Angular на данный момент лучший.

знаешь какой-нибудь хороший гид для новичков по нему? (хорошо, но не обязательно - на русском, тут есть похапэшник, как-то умудряющийся жить без английского, но он лишен чтения хороших гидов =)

stevejobs ★★★★☆
() автор топика

angular(frontend) + laravel(backend)

umren ★★★★★
()

не заморачиваться на two-way data binding(или оно там называется) как в Angular, идея красивая но angular еще не достиг совершенства, и фигачить в императивном стиле, то вместо зоопарка backbone+jquery+underscore+require+jqueryUI, лучше взять yui3 там все это есть, все в едином стиле и наголову выше, например по виджетам

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

а насколько возможно/разумно сочетать ангуляр с классическими вещами? Например, сторонний чел наколбасил страничку на jquery вообще без оглядки на ангуляр (он о нем не знает), насколько легко ее будет интегрировать, есть подводные камни?

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от bismi

мда, похоже это как в армии, «достигается упражнением», надо сделать реальный сайтик на нём и потрахаться с поддержкой)

stevejobs ★★★★☆
() автор топика

Переписал одну вещь на angular, нраица.

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

не я, мой партнер. Он офигенен :3
stevejobs

Ахтунги на LORe!

anonymous
()

Нода несовместима с русскими шаред-хостингами чуть менее чем полностью

Такие разве ещё существуют? А сайты-визитки таки и бесплатно можно хостить. Есть же там всякие appfog, Heroku, OpenShift, etc.

Sense
()

Кто-нибудь, кстати, dartlang использовал? Классная, вроде, вещь.

Sense
()

А что местные эксперты ответят, если к критериям топикстартера добавить такие вещи как порог вхождения, дружественность документации и активность сообщества?

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

Sunil
()
Ответ на: комментарий от Sense

ни один из этих хостингов на бесплатном тарифе не справляется даже со стремной нагрузкой. У меня artifactory крутится на опеншифте - самом мощном из твоего списка, так вот если забежать на него и начать кликать мышкой, то виртуалка убьет сервер по переполнению квоты (чего - процессора или рамы - хз, там все под завязку). А перезапуск ох какой небыстрый.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от Sunil

рельсы и джанго.

есть куча народа на плее, но там ты быстро становишься одним из той толпы народа, которая все пилит-пилит, да никак недопилит)

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

На бесплатном тарифе appfog можно до 8 инстансов запускать, 8ГБ рамы*. Если домашняя страничка на этом не способна работать, я не знаю на чём она вообще будет работать. * - для новых аккаунтов, правда, таки порезали квоту. Теперь только 2ГБ.

Sense
()
Ответ на: комментарий от stevejobs

Кстати, кому интересно, ещё koding.com есть. Для того, чтобы что-то там хостить, наверное, не годится. А вот поиграть с чем-то новым - подходит просто отлично. Даётся VM с Убунтой. Можно эксперементировать. Использую для изучения 3rd party кода с github, которым не хотел бы захламлять собственную систему.

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