ФорумПрограммированиеJavaScript → Выбираю библиотеки, посоветуйте

Выбираю библиотеки, посоветуйте

  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 5 ноября 2011 г. 12:46

    Вот значит нужны решения для таких задач (фронтенд, не админка):

    1. Система классов (наследование и хуе-мое) + обязательно динамическая подгрузка зависимостей. Второе даже важнее. Тут пока что безусловный фаворит ExtJS4. http://www.sencha.com/blog/countdown-to-ext-js-4-dynamic-loading-and-new-class-system . Правда он толстоват, и его бутстрап глюковат. Но мне ж только система классов нужна, по идее можно сделать маленьким

    2. Роутер. Причем такой, который сможет разруливать как анкоры так и через history.api работать. Да еще что б можно было условия ставить - этот роут только через history.api, а другой можно и анкорами. Фаворитов тут пока нет

    3. Шаблонизатор. С поддержкой эскейпинга. Тут кандидатов несколько:

    a) jquery.tpl - до недавнего времени был стандартом для жуйквери, но сейчас он плавно переезжает в жуйквери-уи
    b) ejs - менее интересный проект, но симфоебам первой версии думаю понравится (link_to()) http://embeddedjs.com/
    c) twig.js - свежачек, который сразу стал лидером этого хитпарада. Дело в том, что этот шаблонизатор компилирует на сервере шаблоны в нативные жс-классы. Те же самые мать их шаблоны можно использовать на сервере и на клиенте. Это просто гениально

    4. Валидация данных и форм. Мне необходима возможность описывать часть правил валидации в виже атрибутов тегов (не в классах), при этом иметь возможность руками динамически добавлять правила и расширять своими валидаторами. Пока очень понравилось https://github.com/vivin/regula/wiki/ в стиле явы и сф2

    5. Пересекается с прошлым и с самым первым - что-то для моделей и коллекций. Ну тут Backbone.js наверно. Хотя в Ext'е тоже есть модели

    6. Легкие, кастомизируемые и не сильно хуево сверстанные виджеты, типа табов, дейтпикера, loading mask, автокомплита. Тут пока лидер jQuery-ui.

    7. Хелперы для стандартных типов, при этом не расширяющие эти самые прототипы. Что-то типа Ext.Date, underscore.js

    8. Вебсокеты с fallback-транспортом через флеш. Пока socket.io лидер. Тут еще нужна серверная часть.

    9. mysql-клиент. Еше одна серверная потребность. Хочу с поддержкой named prepeared statements. Пока выбрал mysql https://github.com/felixge/node-mysql , но там только анонимные плейсхолдеры. Хотя в принципе хули там сделать поддержку именованных и заслать патч?

    10. Что-то для переводов. Несложное, но с поддержкой plural-forms и хотя б какой-то минимальной подстановкой плейсхолдеров.

    Вроде ниче не забыл.
    Что подскажете, братюни? Что вы используете?
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 5 ноября 2011 г. 12:55, спустя 8 минут 59 секунд

    ой столько нового! столько нвоого!!!! спасибо тебе брютан! :)
    Сапожник без сапог
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 5 ноября 2011 г. 13:12, спустя 16 минут 34 секунды


    ой столько нового! столько нвоого!!!! спасибо тебе брютан! :)
    +1)))
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 5 ноября 2011 г. 13:31, спустя 19 минут 17 секунд

    ДОбавил статью в избранное :)
    Сапожник без сапог
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 5 ноября 2011 г. 13:55, спустя 23 минуты 36 секунд

    компилирует на сервере шаблоны в нативные жс-классы.

    И генерирует лишний трафик, и пользователь не "грузится" до конца - вместо этого лишний груз на сервер. Я выхожу из этой ситуации так -
    в конец скелета, до </body>, у меня вложен пустой блок с именем script, и если нужно, в шаблоне, я вставляю в него переменные, загоняя их в специальный объект globalDynamicDataHelper:
    {% block script %}{% if db %}<script type="text/javascript">
    globalDynamicDataHelper.started = true;
    globalDynamicDataHelper.requested_id = {{ requested_id }};
    globalDynamicDataHelper.uid = {{ isauth.uid }};
    globalDynamicDataHelper.me = (globalDynamicDataHelper.uid == globalDynamicDataHelper.requested_id);
    </script>{% endif %}{% endblock %}


    И затем уже работаю с этим объектом в клиентской части:

    инициализация
    globalDynamicDataHelper = {};


    использование
    if (globalDynamicDataHelper.started) {
    //alert(globalDynamicDataHelper.requested_id);
    }

  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 5 ноября 2011 г. 14:00, спустя 5 минут 36 секунд

    И да общение с сервером баз данных на жс + эскейпинг на жс - это не дырки случаем?
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 5 ноября 2011 г. 14:02, спустя 1 минуту 35 секунд

    Абырвалг, чо такое грандиозное то собрался вообще делать? может зря такую аммуницию собирешь? :)
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 5 ноября 2011 г. 14:10, спустя 7 минут 36 секунд


    И да общение с сервером баз данных на жс + эскейпинг на жс - это не дырки случаем?

    ну не знаю, на nodejs как-то программят же люди

    phpdude, тут несколько задач в одном проекте. Чятик с поддержкой непрочитанных и сохранением истории. Всякие динамические формы в попапах и табах. Открытие этих попапов и конкретных табов по анкору в урле. В целом ничего военного, просто хочется привести в порядок то, что уже написано + дальше делать по-науке. Ну и все это должно быть мультиязычным.


    И генерирует лишний трафик, и пользователь не "грузится" до конца - вместо этого лишний груз на сервер.

    шаблоны компилятся один раз, передаются на сервер, занимающийся статикой. Там гзиппятся, отдаются с кеширующими заголовками. Не вижу тут никакой нагрузки.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 5 ноября 2011 г. 14:18, спустя 8 минут 20 секунд

    шаблоны компилятся один раз, передаются на сервер, занимающийся статикой. Там гзиппятся, отдаются с кеширующими заголовками. Не вижу тут никакой нагрузки.

    ничего себе :-))

    ну видимо шаблоны сильно крутые раз их приходится кешировать … по мне так похуй на эту мелочь, ведь это происходит на клиенте. и занимает это ну может 1 милисекунду … дольше и сложнее и медленее, особенно на плохом интернете имхо будет качать с сервера эти данные …
    Спустя 8 сек.
    может я конечно не прав :)
    Спустя 104 сек.
    аа блеядь, так twigjs это для нодежс получается? :))
    Спустя 51 сек.
    судя по https://github.com/fadrizul/twigjs/blob/master/tests/parser.test.coffee таки да. дя серверсайд жс-ноджс и прочее шаблонизатор.
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 5 ноября 2011 г. 17:02, спустя 2 часа 44 минуты 37 секунд

    это не тот твигжс) https://github.com/schmittjoh/twig.js вот тот
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 5 ноября 2011 г. 18:17, спустя 1 час 14 минут 23 секунды

    Абырвалг, смотрел Microsoft Ajax Library и вот эту штуку ?
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 5 ноября 2011 г. 18:29, спустя 12 минут 4 секунды

    Абырвалг, цмс пишешь?

    Мне понятно зачем нужны пункты 3, 4, 6, 9, про остальное не понятно, что это и зачем, я их в работе не юзаю.

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

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

    для дейтпикеров использую какую-то хуету вроде жквери.дейтпикер

    плейсхолдеры для mysql использую неименованные, хватает.
    Спустя 157 сек.
    вообще я так скажу. была бы готовая CMF с этими возможностями - я б велосипед не изобретал, взял бы готовое и юзал. ну типа как рельсы
    не всё полезно, что в swap полезло
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 5 ноября 2011 г. 18:35, спустя 5 минут 38 секунд


    Абырвалг, смотрел Microsoft Ajax Library и вот эту штуку ?

    нокаут.жс смотрел, но это внатуре нокаут. Как-то неявно-магически все.

    цмс пишешь?

    нее, я цмс-ок уже написался). Нафига чат в цмс?


    у меня Symfony2, там более-менее охуетительный фреймворк форм, а здесь тема о их клиентской валидации.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 5 ноября 2011 г. 18:52, спустя 17 минут 1 секунду


    Абырвалг, смотрел Microsoft Ajax Library и вот эту штуку ?
    вот эта штука понравилась дуду :-))

    чем то напомнило виндовс интерфейсы построение на уровне шаблонизации
    Сапожник без сапог
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 5 ноября 2011 г. 19:09, спустя 17 минут 10 секунд

Пожалуйста, авторизуйтесь, чтобы написать комментарий!