Pull to refresh

Comments 36

Backbone не определяет структуру страницы. Вообще не определяет никакую структуру — есть три базовых класса и крутись как хочешь:) Сходу можно сказать, что вообще в NikaFramework рамки гораздо строже. Иногда это лучше.
Все равно он не диктует расположение файлов, например.
Согласен. Не диктует.
(Впрочем, у меня это рельсы делают. И за сборкой в один упакованный файл в продакене следят они же...)
Очень хороший вопрос к стате, так как NKF сам по себе похож на Backbone.js хотя бы тем что тот тоже по сути являеться по большей части архитектурный.
Но во первых, NKF не навязывает вам стиль написания как это есть в Backbone (если не возможность в Backbone писать в стиле jQuery way).
Так же оптимизация трафика, так как все ресурсы тянуться одним файлом — index.htmlz, локализация на лету, семантика DOM и другое. Но об этом в продолжении.
смущает вот такой кусок:
    el.find("a").attr({
        href: value.url,
        "data-id": value.id
    }).text(value.name);

Не лучше ль было предусмотреть какой-то шаблонизатор (а желательно, с возможностью замены на свой)?
Я негативно отношусь к шаблонизаторам (я лично работал с проектом, шаблоны которого были порядка 1000 строк очень сложных макарон), так как последнии зачастую ведут к тому что код который должен был быть простым, оказываеться через-чур сложным в итоге.
Сначала код простой, и там лишь подстановка данных объекта. Но потом, нужно добавить проверку на возможность пользователя видеть какой-то блок — уже у нас проверка. Дальше появляеться нужда в итерации, пройтись по чем-то и на основании какой-то логики показывать тот или иной кусок… В этоге шаблон превращаеться в смесь HTML и Логики (ala JavaScript).
Поэтому я предпочитаю писать куски XHTML отдельно, а в логике строить сколько угодно сложный DOM. Шаблоны этим сильно ограничены, потому что если посмотреть — то шаблоны это сильно упрошенный ЯП.
Ну… вам попадались плохие шаблонизаторы, очевидно.
Нет, скорее, не умеет их готовить.
я предпочитаю писать куски XHTML отдельно, а в логике строить сколько угодно сложный DOM

Что мешает вынести «куски» в отдельные небольшие шаблончики, а потом подставлять в шаблон верхнего уровня, как готовые строки? Ровно тот же подход получится.
Еще раз. Я не люблю шаблоны из-за того что логика оказывается в двух местах: частично в шаблоне, и в JS. Плюс у вас всегда есть соблазн написать в шаблон лишнего, благо на сегодняшний день шаблонизаторы мощные.
Таким образом, я предпочитаю разделять мух от котлет.

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

С этой точки зрения я, для себя лично, «хорошими» считаю наиболее простые и понятные шаблонизаторы без всякого навернутого функцинала. Что-нибудь типа handlebarsjs.com/ Но кому-то может нравиться что-то другое — не принципиально.
И, простите за интимный вопрос — что у вас с русским языком? Я вижу, что вы из Львова, но у вас прямо-таки англицизмы в тексте (притом на сайте английский со славянизмами).
Справедливости ради, ExtJS это далеко не только UI fw. Там и работа с данными, и MVC, и шаблонизация, т.д.
С выходом Sencha Cmd каркас аппликухи вообще парой строк в консоли делается. А потом минифифицируется и всякое такое.
Имхо — не совсем уместное сравнение.

В доках смутило:
.htaccess — need for correct working framework
Зачем статике апач?

По работе с сервером что-то тоже ничего не нашел готового в доках — руками работать?
Там в доках авторизация вообще интересная:

        if (username && password) {
          //Do login, if any credentials were entered
          $.cookie("isLogin", true, {path: "/"});
             ...
        } else {
          alert("Please enter login and password!");
        }


Ну спишем на упрощение для примера.

Хотя на сайте написано — Architectural Web UI Single-Page Application (SPA) Framework.
Тогда тем более с экстом и т.п. сравнивать не нужно, это он UI — ный)
Ну бы поделил фреймворки на UI и архитектурные. UI это изначально нацелены на создание графического интерфейса, типа гриды, листы, батоны и все такое. То есть все унифицировано, все быстро, все по шаблону.
Архитектурные — такие как Backbone.js — они на UI не завязаны. Пиши на чем хочешь. У них цель другая. Это помочь с архитектурой UI.
Тем более я не сравниваю их, а наоборот говорю что они в корне отличаються
> Первое что нужно понять, что это не UI-ный фреймворк, как напр. ExtJS или SmartClient.

На счет .htaccess — посмотрите в него и сразу поймете зачем он.

> Зачем статике апач
Этого я не понял…

> По работе с сервером
нечаянно отправило…

> По работе с сервером что-то тоже ничего не нашел готового в доках
Это frontend… он не диктует на чем написан backend… либо я не понял вопроса

> Architectural Web UI Single-Page Application (SPA) Framework
Не просто UI а Web UI… А Web UI — это специальность, в которой программист использует три ключевых технологии, это: HTML,CSS и тонны JavaScript
Ну вот я о том и говорю, что экст не просто хелпер для быстого создания графического интерфейса типа гридов etc, это вполне себе полноценный mvc fw, я не согласен что можно сказать экст — это UI-ный фреймворк. В общем-то, никто не мешает не юзать экстовый UI — хоть джейквери цепляй да отображай как хочешь.

> Зачем статике апач
Этого я не понял…


Статику (css, js… ) лучше раздает nginx, а он .htaccess не понимает. Ну хотя это не большая проблема.

> По работе с сервером что-то тоже ничего не нашел готового в доках
Это frontend… он не диктует на чем написан backend… либо я не понял вопроса


Я имею ввиду — мне нужно отправить запрос на сервер. Ну например для той же авторизации. Или для CRUD. Аякс руками писать? В коробке никаких аяксов нету?
Не спорю, ExtJS это уже монстр, посравнению какой он был когда-то… Но я его отношу к UI потому что это его основное предназначение. То что он MVC — это побочный эффект того, что он стал очень мощный, и нужно все это как-то разруливать. Просто сказать что ExtJS архитектурный фреймворк язык не поворачивается. В первую очередь его достоинство — это UI. Хотя конечно в нем есть часть по работе с архитектурой, но в рамках своего же продукта…
P.S. я тоже люблю ExtJS :)

Статику (css, js… ) лучше раздает nginx, а он .htaccess не понимает. Ну хотя это не большая проблема

Да, можно и nginx. Просто делаете соответствущие настройки…
К стате вы не внимательно читали, там не придеться тянуть CSS, JS и прочие… Это уже все будет упаковано в один файл на выходе — index.xhtmlz

Я имею ввиду — мне нужно отправить запрос на сервер. Ну например для той же авторизации. Или для CRUD. Аякс руками писать? В коробке никаких аяксов нету?

В коробке есть класс NetworkManager и StorageManager. Но это просто посредники, которые удобно использовать когда приложение работает в online/offline режимах. Тогда через класс NetworkManager должна тянутся уже сохраненная инфа с StorageManager, а тот в свою очередь смотрит от куда вытянуть данные (Memory, Cookie, LocalStorage). Но оно во первых не дописано до конца, во вторых нормально не тестировалось.
Я напр. использую $.ajax() и не вижу смысла использовать хелперы, если конечно не требуеться вышеописаный механизм.

Как я и говорил — NKF не навязывает свой стиль написание. Главная задача это организация кода, возможность верстать в классическом виде, оптимизация траффика через упаковку всех ресурсов, локализация на лету.
Не в упрек ТС и авторам фреймворка лично, но — отдача index.xhtmlz подразумевает, что после каждого изменения исходников требуется сборка/компиляция проекта. А компиляция веб-приложения, имхо, на корню убивает весь фан от разработки (вместо Ctrl+S, Alt+Tab, F5 теперь Ctrl+S, Alt+Tab, make build + пауза, Alt+Tab, F5).

Интересно, мне одному это не нравится?
Лечица легко

* inotify under linux
* builders under IDE
Не панацея — для любого проекта крупнее Hello World сборка будет занимать как минимум несколько (очень раздражающих) секунд. Так что все равно надо будет альт-табиться в консоль и смотреть, собралось уже или нет.
На предыдущем проекте у меня было именно так, и бесило жутко.

P.S. А пустой проект на GWT вообще собирается минимум полминуты, брр.
Ааа… Тогда надо вводить некий режим разработки, когда можно сразу смотреть, без компиляции.

Баг на гитхаб забейте :)
OK. Возьмем для примера средний проект в котором 30 JS файлов. Вы представляете как мучаеться браузер пока сделает 30 реквестов и начнет рендерить. К тому же известно, что любой тег script останавливает работу по загрузки ресурсов, пока
JS файл не будет скачан до конца. Даже если использовать аттрибут async тогда нарушаеться последовательность подключения JS файлов, что приведет к ошибке, так как какой-небудь модуль будет вызван прежде нежели будет определен (то есть скачан и исполнен). Даже если обходить этот методом динамической вставки script тега в DOM, все же остаеться латентность на время выкачивания ресурса браузером (напр., на много быстрее будет скачать один большой файл нежели 100 но маленьких файлов).
Так что даже спростой cat всех файлов в один даст очень большой прирость произодительности.
Тем более процес компиляции идет на NodeJS и занимает в среднем 1 секунду.
У меня был проект из 188 файлов. Собиралось оно питоном и далеко не одну секунду. Но проблема не только в этом, а в том, что дебажить ЭТО — сущий кошмар.

На стадии разработки мне пофиг, сколько там кряхтит браузер.

В текущем 162 файла (и это еще даже не половина). В девелоперском окружении все подключается с помощью requirejs, и, знаете — получается быстрее, чем работает сборщик на grunt'е.
Но проблема не только в этом, а в том, что дебажить ЭТО — сущий кошмар.

там есть два режима сборки, обычный и production. Так вот в production все сжимаеться, а в обычном у вас нормальный JavaScript код, который нормально дебажиться.
Да, но если все слито в один скрипт длинной 20 тысяч строк, то все равно это дебажить нереально.
Ой, да ладно — у nginx`а вон тоже его вообще не было, а основной сайт до сих пор не образец дизайну. И чо?

Хотя черепаха пугает :)
Я так понимаю TortoiseSVN вы тоже не используете ;)
Custom Jira? НЕНАВСИТЬ!

bugs.nikaframework.com/secure/Dashboard.jspa

Зарегиться где-то там? Неет!

Я уже, да не я — мы все на гитхабе сидим и у него есть issue`и. Давайте уж там тада.

Плюс для него даже для эклипса есть mylyn-коннектор — во как уже товарищи продвинулись.
Про доки — то, что скинуто — это что-то подробное.

Возможно чуть менее подробно и в README.md — будет само то.

Лицензия какая?
Sign up to leave a comment.

Articles