Так получилось, что мои познания JavaScript остановились на уровне "весьма посредственно". Написать нечто вроде
document.getElementById('xxx').style.display = 'none' ;или даже
$('td:eq(2)', nRow).addClass('even') ;я еще в состоянии, но создать что-то объемное с нуля - зюзьки. Займет кучу времени, а в качестве я сильно сомневаюсь. Поэтому люди, способные создать библиотеки типа jQuery, всегда вызывали у меня искреннее уважение и светлую зависть.
А когда я увидал творение ребят из 280North - я вообще впал в благоговейный экстаз.
Если кратко, то Cappuccino - это фреймворк, позволяющий создавать приложения класса "Десктоп", но для веба.
Cappuccino не первый фреймворк такого класса, достаточно вспомнить, например, Sproutcore, на котором построен сервис MobileMe.
Но вся прелесть Cappuuccino не в том. Авторы пошли дальше - они создали свой язык программирования - Objective-J. Ничего не напоминает? Смотрим пример:
- (int)numberOfRowsInTableView:(CPTableView)tableView {
return [[info contacts] count] ;
}
Ага, ага. Objective-C и Cocoa в своей реализации. Написано нечто вроде транслятора с Objective-J (на выходе получается набор objj_msgSend(..), причем все это на JavaScript. На Objective-J портирована куча Cocoa классов, теперь они не NS.. а CP..
Более того, написана утилита nib2cib Ага, ага. Графический интерфейс можно рисовать в Interface Builder, затем в процессе сборки проекта при помощи jake (опять аналог make на javascript) это все транслируется и потом используется и работает.
Выпущены даже набор шаблонов для XCode, в котором можно создавать и собирать проекты на Cappuuccino.
В первый момент в браузер клиента загружается достаточно большой объем скриптов, но зато потом в делов вступает AJAX и JSON, с которыми в Cappuccino все очень неплохо, и страницы больше не пергружаются. Все происходит в браузере. Поддержки скриптов на стороне сервера не требуется.
Проект постоянно развивается, добавляется поддержка новых CP классов, исправляются ошибки. Единственно что настораживает факт покупки проекта компанией Моторолла в августе этого года.
Что из этого получится - непонятно, но пока у вас есть шанс попробовать.
Недавно я создал страничку контактной информации на mobile.me, фреймворк превращает "базу данных"
{
"fullname":"Павел Цыбулин",
"nickname":"Программист со знанием компьютера",
"contacts":[
{
"contactType":"phone",
"label":"телефон",
"title":"+380 (91) 946-29-45",
"href":"tel:+380919462945"
},
..
{
"contactType":"im",
"label":"skype",
"title":"tsybulin",
"href":"skype:tsybulin?call"
},
..
]
}
Вот в такой вид.
Ой
