Комментарии 36
под кат бы часть статьи…
0
А чем NikaFramework лучше Backbone'а?
+2
Backbone не определяет структуру страницы. Вообще не определяет никакую структуру — есть три базовых класса и крутись как хочешь:) Сходу можно сказать, что вообще в NikaFramework рамки гораздо строже. Иногда это лучше.
0
Ну это если голый backbone. А если с плагинами, то может и определять.
Тот же github.com/marionettejs/backbone.marionette
Тот же github.com/marionettejs/backbone.marionette
0
Очень хороший вопрос к стате, так как NKF сам по себе похож на Backbone.js хотя бы тем что тот тоже по сути являеться по большей части архитектурный.
Но во первых, NKF не навязывает вам стиль написания как это есть в Backbone (если не возможность в Backbone писать в стиле jQuery way).
Так же оптимизация трафика, так как все ресурсы тянуться одним файлом — index.htmlz, локализация на лету, семантика DOM и другое. Но об этом в продолжении.
Но во первых, NKF не навязывает вам стиль написания как это есть в Backbone (если не возможность в Backbone писать в стиле jQuery way).
Так же оптимизация трафика, так как все ресурсы тянуться одним файлом — index.htmlz, локализация на лету, семантика DOM и другое. Но об этом в продолжении.
0
смущает вот такой кусок:
Не лучше ль было предусмотреть какой-то шаблонизатор (а желательно, с возможностью замены на свой)?
el.find("a").attr({
href: value.url,
"data-id": value.id
}).text(value.name);
Не лучше ль было предусмотреть какой-то шаблонизатор (а желательно, с возможностью замены на свой)?
+1
Я негативно отношусь к шаблонизаторам (я лично работал с проектом, шаблоны которого были порядка 1000 строк очень сложных макарон), так как последнии зачастую ведут к тому что код который должен был быть простым, оказываеться через-чур сложным в итоге.
Сначала код простой, и там лишь подстановка данных объекта. Но потом, нужно добавить проверку на возможность пользователя видеть какой-то блок — уже у нас проверка. Дальше появляеться нужда в итерации, пройтись по чем-то и на основании какой-то логики показывать тот или иной кусок… В этоге шаблон превращаеться в смесь HTML и Логики (ala JavaScript).
Поэтому я предпочитаю писать куски XHTML отдельно, а в логике строить сколько угодно сложный DOM. Шаблоны этим сильно ограничены, потому что если посмотреть — то шаблоны это сильно упрошенный ЯП.
Сначала код простой, и там лишь подстановка данных объекта. Но потом, нужно добавить проверку на возможность пользователя видеть какой-то блок — уже у нас проверка. Дальше появляеться нужда в итерации, пройтись по чем-то и на основании какой-то логики показывать тот или иной кусок… В этоге шаблон превращаеться в смесь HTML и Логики (ala JavaScript).
Поэтому я предпочитаю писать куски XHTML отдельно, а в логике строить сколько угодно сложный DOM. Шаблоны этим сильно ограничены, потому что если посмотреть — то шаблоны это сильно упрошенный ЯП.
-2
Ну… вам попадались плохие шаблонизаторы, очевидно.
+1
Нет, скорее, не умеет их готовить.
Что мешает вынести «куски» в отдельные небольшие шаблончики, а потом подставлять в шаблон верхнего уровня, как готовые строки? Ровно тот же подход получится.
я предпочитаю писать куски XHTML отдельно, а в логике строить сколько угодно сложный DOM
Что мешает вынести «куски» в отдельные небольшие шаблончики, а потом подставлять в шаблон верхнего уровня, как готовые строки? Ровно тот же подход получится.
+1
Еще раз. Я не люблю шаблоны из-за того что логика оказывается в двух местах: частично в шаблоне, и в JS. Плюс у вас всегда есть соблазн написать в шаблон лишнего, благо на сегодняшний день шаблонизаторы мощные.
Таким образом, я предпочитаю разделять мух от котлет.
Приведите мне хороший пример шаблона по вашему мнению (на jsfiddle напр.), чтобы можно было аргументированно обсуждать дальше.
Таким образом, я предпочитаю разделять мух от котлет.
Приведите мне хороший пример шаблона по вашему мнению (на jsfiddle напр.), чтобы можно было аргументированно обсуждать дальше.
0
Если вы внимательно посмотрите мой коммент, можете заметить, что я как раз не считаю, что дело в «хорошести» шаблонизатора. И вполне согласен с отделением логики и шаблонов. Но это ни коим образом не противоречит идее шаблонизаторов. Просто не нужно все толкать в один шаблон.
Ну, например, у вас есть таблица, строки которой зависят от прав пользователя, исходных данных, выбранного пользователем скина и еще кучи проверок. Если эти проверки толкать в один шаблон — согласен, получится лапша.
Но почему бы не сделать несколько «шаблонов для строки» и (анализируя все условия) не отрендерить эти строки по отдельности? Потом в итоговый шаблон можно подать просто список готовых строк и там не будет никакой логики.
С этой точки зрения я, для себя лично, «хорошими» считаю наиболее простые и понятные шаблонизаторы без всякого навернутого функцинала. Что-нибудь типа handlebarsjs.com/ Но кому-то может нравиться что-то другое — не принципиально.
Ну, например, у вас есть таблица, строки которой зависят от прав пользователя, исходных данных, выбранного пользователем скина и еще кучи проверок. Если эти проверки толкать в один шаблон — согласен, получится лапша.
Но почему бы не сделать несколько «шаблонов для строки» и (анализируя все условия) не отрендерить эти строки по отдельности? Потом в итоговый шаблон можно подать просто список готовых строк и там не будет никакой логики.
С этой точки зрения я, для себя лично, «хорошими» считаю наиболее простые и понятные шаблонизаторы без всякого навернутого функцинала. Что-нибудь типа handlebarsjs.com/ Но кому-то может нравиться что-то другое — не принципиально.
0
И, простите за интимный вопрос — что у вас с русским языком? Я вижу, что вы из Львова, но у вас прямо-таки англицизмы в тексте (притом на сайте английский со славянизмами).
0
Справедливости ради, ExtJS это далеко не только UI fw. Там и работа с данными, и MVC, и шаблонизация, т.д.
С выходом Sencha Cmd каркас аппликухи вообще парой строк в консоли делается. А потом минифифицируется и всякое такое.
Имхо — не совсем уместное сравнение.
В доках смутило:
.htaccess — need for correct working framework
Зачем статике апач?
По работе с сервером что-то тоже ничего не нашел готового в доках — руками работать?
Там в доках авторизация вообще интересная:
Ну спишем на упрощение для примера.
Хотя на сайте написано — Architectural Web UI Single-Page Application (SPA) Framework.
Тогда тем более с экстом и т.п. сравнивать не нужно, это он UI — ный)
С выходом 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 — ный)
+1
Ну бы поделил фреймворки на UI и архитектурные. UI это изначально нацелены на создание графического интерфейса, типа гриды, листы, батоны и все такое. То есть все унифицировано, все быстро, все по шаблону.
Архитектурные — такие как Backbone.js — они на UI не завязаны. Пиши на чем хочешь. У них цель другая. Это помочь с архитектурой UI.
Тем более я не сравниваю их, а наоборот говорю что они в корне отличаються
> Первое что нужно понять, что это не UI-ный фреймворк, как напр. ExtJS или SmartClient.
На счет .htaccess — посмотрите в него и сразу поймете зачем он.
> Зачем статике апач
Этого я не понял…
> По работе с сервером
Архитектурные — такие как Backbone.js — они на UI не завязаны. Пиши на чем хочешь. У них цель другая. Это помочь с архитектурой UI.
Тем более я не сравниваю их, а наоборот говорю что они в корне отличаються
> Первое что нужно понять, что это не UI-ный фреймворк, как напр. ExtJS или SmartClient.
На счет .htaccess — посмотрите в него и сразу поймете зачем он.
> Зачем статике апач
Этого я не понял…
> По работе с сервером
0
нечаянно отправило…
> По работе с сервером что-то тоже ничего не нашел готового в доках
Это frontend… он не диктует на чем написан backend… либо я не понял вопроса
> Architectural Web UI Single-Page Application (SPA) Framework
Не просто UI а Web UI… А Web UI — это специальность, в которой программист использует три ключевых технологии, это: HTML,CSS и тонны JavaScript
> По работе с сервером что-то тоже ничего не нашел готового в доках
Это frontend… он не диктует на чем написан backend… либо я не понял вопроса
> Architectural Web UI Single-Page Application (SPA) Framework
Не просто UI а Web UI… А Web UI — это специальность, в которой программист использует три ключевых технологии, это: HTML,CSS и тонны JavaScript
0
Ну вот я о том и говорю, что экст не просто хелпер для быстого создания графического интерфейса типа гридов etc, это вполне себе полноценный mvc fw, я не согласен что можно сказать экст — это UI-ный фреймворк. В общем-то, никто не мешает не юзать экстовый UI — хоть джейквери цепляй да отображай как хочешь.
Статику (css, js… ) лучше раздает nginx, а он .htaccess не понимает. Ну хотя это не большая проблема.
Я имею ввиду — мне нужно отправить запрос на сервер. Ну например для той же авторизации. Или для CRUD. Аякс руками писать? В коробке никаких аяксов нету?
> Зачем статике апач
Этого я не понял…
Статику (css, js… ) лучше раздает nginx, а он .htaccess не понимает. Ну хотя это не большая проблема.
> По работе с сервером что-то тоже ничего не нашел готового в доках
Это frontend… он не диктует на чем написан backend… либо я не понял вопроса
Я имею ввиду — мне нужно отправить запрос на сервер. Ну например для той же авторизации. Или для CRUD. Аякс руками писать? В коробке никаких аяксов нету?
0
Не спорю, ExtJS это уже монстр, посравнению какой он был когда-то… Но я его отношу к UI потому что это его основное предназначение. То что он MVC — это побочный эффект того, что он стал очень мощный, и нужно все это как-то разруливать. Просто сказать что ExtJS архитектурный фреймворк язык не поворачивается. В первую очередь его достоинство — это UI. Хотя конечно в нем есть часть по работе с архитектурой, но в рамках своего же продукта…
P.S. я тоже люблю ExtJS :)
Да, можно и nginx. Просто делаете соответствущие настройки…
К стате вы не внимательно читали, там не придеться тянуть CSS, JS и прочие… Это уже все будет упаковано в один файл на выходе — index.xhtmlz
В коробке есть класс NetworkManager и StorageManager. Но это просто посредники, которые удобно использовать когда приложение работает в online/offline режимах. Тогда через класс NetworkManager должна тянутся уже сохраненная инфа с StorageManager, а тот в свою очередь смотрит от куда вытянуть данные (Memory, Cookie, LocalStorage). Но оно во первых не дописано до конца, во вторых нормально не тестировалось.
Я напр. использую $.ajax() и не вижу смысла использовать хелперы, если конечно не требуеться вышеописаный механизм.
Как я и говорил — NKF не навязывает свой стиль написание. Главная задача это организация кода, возможность верстать в классическом виде, оптимизация траффика через упаковку всех ресурсов, локализация на лету.
P.S. я тоже люблю ExtJS :)
Статику (css, js… ) лучше раздает nginx, а он .htaccess не понимает. Ну хотя это не большая проблема
Да, можно и nginx. Просто делаете соответствущие настройки…
К стате вы не внимательно читали, там не придеться тянуть CSS, JS и прочие… Это уже все будет упаковано в один файл на выходе — index.xhtmlz
Я имею ввиду — мне нужно отправить запрос на сервер. Ну например для той же авторизации. Или для CRUD. Аякс руками писать? В коробке никаких аяксов нету?
В коробке есть класс NetworkManager и StorageManager. Но это просто посредники, которые удобно использовать когда приложение работает в online/offline режимах. Тогда через класс NetworkManager должна тянутся уже сохраненная инфа с StorageManager, а тот в свою очередь смотрит от куда вытянуть данные (Memory, Cookie, LocalStorage). Но оно во первых не дописано до конца, во вторых нормально не тестировалось.
Я напр. использую $.ajax() и не вижу смысла использовать хелперы, если конечно не требуеться вышеописаный механизм.
Как я и говорил — NKF не навязывает свой стиль написание. Главная задача это организация кода, возможность верстать в классическом виде, оптимизация траффика через упаковку всех ресурсов, локализация на лету.
0
Не в упрек ТС и авторам фреймворка лично, но — отдача index.xhtmlz подразумевает, что после каждого изменения исходников требуется сборка/компиляция проекта. А компиляция веб-приложения, имхо, на корню убивает весь фан от разработки (вместо
Интересно, мне одному это не нравится?
Ctrl+S, Alt+Tab, F5
теперь Ctrl+S, Alt+Tab, make build + пауза, Alt+Tab, F5
). Интересно, мне одному это не нравится?
0
Лечица легко
* inotify under linux
* builders under IDE
* inotify under linux
* builders under IDE
0
Не панацея — для любого проекта крупнее Hello World сборка будет занимать как минимум несколько (очень раздражающих) секунд. Так что все равно надо будет альт-табиться в консоль и смотреть, собралось уже или нет.
На предыдущем проекте у меня было именно так, и бесило жутко.
P.S. А пустой проект на GWT вообще собирается минимум полминуты, брр.
На предыдущем проекте у меня было именно так, и бесило жутко.
P.S. А пустой проект на GWT вообще собирается минимум полминуты, брр.
0
OK. Возьмем для примера средний проект в котором 30 JS файлов. Вы представляете как мучаеться браузер пока сделает 30 реквестов и начнет рендерить. К тому же известно, что любой тег script останавливает работу по загрузки ресурсов, пока
JS файл не будет скачан до конца. Даже если использовать аттрибут async тогда нарушаеться последовательность подключения JS файлов, что приведет к ошибке, так как какой-небудь модуль будет вызван прежде нежели будет определен (то есть скачан и исполнен). Даже если обходить этот методом динамической вставки script тега в DOM, все же остаеться латентность на время выкачивания ресурса браузером (напр., на много быстрее будет скачать один большой файл нежели 100 но маленьких файлов).
Так что даже спростой cat всех файлов в один даст очень большой прирость произодительности.
Тем более процес компиляции идет на NodeJS и занимает в среднем 1 секунду.
JS файл не будет скачан до конца. Даже если использовать аттрибут async тогда нарушаеться последовательность подключения JS файлов, что приведет к ошибке, так как какой-небудь модуль будет вызван прежде нежели будет определен (то есть скачан и исполнен). Даже если обходить этот методом динамической вставки script тега в DOM, все же остаеться латентность на время выкачивания ресурса браузером (напр., на много быстрее будет скачать один большой файл нежели 100 но маленьких файлов).
Так что даже спростой cat всех файлов в один даст очень большой прирость произодительности.
Тем более процес компиляции идет на NodeJS и занимает в среднем 1 секунду.
0
У меня был проект из 188 файлов. Собиралось оно питоном и далеко не одну секунду. Но проблема не только в этом, а в том, что дебажить ЭТО — сущий кошмар.
На стадии разработки мне пофиг, сколько там кряхтит браузер.
В текущем 162 файла (и это еще даже не половина). В девелоперском окружении все подключается с помощью requirejs, и, знаете — получается быстрее, чем работает сборщик на grunt'е.
На стадии разработки мне пофиг, сколько там кряхтит браузер.
В текущем 162 файла (и это еще даже не половина). В девелоперском окружении все подключается с помощью requirejs, и, знаете — получается быстрее, чем работает сборщик на grunt'е.
0
Но проблема не только в этом, а в том, что дебажить ЭТО — сущий кошмар.
там есть два режима сборки, обычный и production. Так вот в production все сжимаеться, а в обычном у вас нормальный JavaScript код, который нормально дебажиться.
0
увидел логотип, дальше не читал.
+3
ТС, сложно баги на гитхаб скинуть?
Меня больше пугает отсутствие доков на github.com/itherz/NikaFramework
Плюс история коммитов github.com/itherz/NikaFramework/commits/master — ниччо не ясно — что делалось, зачем делалось?
Меня больше пугает отсутствие доков на github.com/itherz/NikaFramework
Плюс история коммитов github.com/itherz/NikaFramework/commits/master — ниччо не ясно — что делалось, зачем делалось?
0
дока (пока что) — nikaframework.com/docs/nutshell/
баги лучше кидать на JIRA — bugs.nikaframework.com/
на счет коммитов согласен. Нужно писать нормальные комменты
баги лучше кидать на JIRA — bugs.nikaframework.com/
на счет коммитов согласен. Нужно писать нормальные комменты
0
Custom Jira? НЕНАВСИТЬ!
bugs.nikaframework.com/secure/Dashboard.jspa
Зарегиться где-то там? Неет!
Я уже, да не я — мы все на гитхабе сидим и у него есть issue`и. Давайте уж там тада.
Плюс для него даже для эклипса есть mylyn-коннектор — во как уже товарищи продвинулись.
bugs.nikaframework.com/secure/Dashboard.jspa
Зарегиться где-то там? Неет!
Я уже, да не я — мы все на гитхабе сидим и у него есть issue`и. Давайте уж там тада.
Плюс для него даже для эклипса есть mylyn-коннектор — во как уже товарищи продвинулись.
0
Про доки — то, что скинуто — это что-то подробное.
Возможно чуть менее подробно и в README.md — будет само то.
Лицензия какая?
Возможно чуть менее подробно и в README.md — будет само то.
Лицензия какая?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Введение в NikaFramework (NKF). Часть 1