Inx
Скачать
Примеры

Inx - русский ответ ExtJS

Что это такое?

Inx - это написанная на JavaScript библиотека для создания RIA (Rich Intrnet Applications).

Базовый набор компонентов

Inx содержит практически все, что может понадобиться прогрессивному человеку: деревья, списки, селекты, формы, панели, кнопочки, пейджеры. Приведенный ниже пример кликабелен, это не картинка:)
inx.mod.inxdev.example.overview
Код подключения

Стиль

Inx использует ООП-парадигму программирования. Синтаксис отчасти напоминает программирование для JQuery, отчасти - Ext JS.
//Пример
var c = inx("myid") // вернет компонент с id="myid"
var c = inx(object) // вернет компонент object
var c = inx({type:"inx.panel",width:300}) // построит и вернет новый компонент с заданными параметрами

// В любом случае, дальше можно будет написать:
c.cmd("html","Мой код");
// Или так:
alert(c.info("html"));
Все взаимодействие между компонентами построено на двух ф-циях: cmd и info. Первая отправляет компоненту команду, вторая - возвращает свойство компонента. Если компонент еще не загрузился, команда становится в очередь и будет выполена после его загрузки. Если компонент не существует, не произойдет никакой ошибки, просто команда не выполнится. Это как в JQuery: если вы напишите $("#noid").html(666) то ошибки не произойдет. В inx - аналогично inx("none").cmd("mycmd"); просто не выполнит никаких действий.

Динамическая загрузка компонентов.

Не обязательно подключать все использующиеся скипты: inx сделает это автоматически. Достаточно указать только класс компонента. Все подключаемые родительские компоненты будут загружены автоматически. Загрузка осуществляется при создании нового компонента в любое время, в том числе и после загрузки страницы.

Взаимодействие с сервером, AJAX

В отличие от других фреймфорков, inx выполяет все запросы через один единственный гейт, передавая ему набор параметров. В нашей реализации серверной части, обсуждение которой выходит за рамки данного обзора, работа сервера осуществляется следующим образом: this.call({cmd:"myclass:mymethod",p1:"wtf",some:"thing"}) Запрос поступает на сервер, сервер вызывает myclass::mymethod(array( p1=>$wtf, some=>thing )); Т.о. мы, фактически, вызываем методы серверного языка из JS. Если на сервере произошла ошибка, inx уведомит об этом пользователя и покажет ошибку. Ничего дополнительно писать не потребуется.

Кроссбраузерная совместимость

inx отлично работает со всеми современными браузерами (ie>=7 :) Некоторые компоненты могут работать не совсем корректно, но это касается в основном редактора кода. Над этим мы работаем.

Отправка файлов на сервер

Для этого используется тот же самый гейт, что и для ajax-команд, все делается при помощи скрытой формы. На сервере вы не заметите никакой разницы.
Код подключения

Навигация через якоря #

Для этого существует специальный компонент inx.direct
inx.mod.inxdev.example.direct
Код подключения

Клавиатура, мышь

inx имеет встроеные компоненты для работы с клавишами, колесиком мыши, горячими клавишами. inx.hotkey("ctrl+s",[this.id(),"save"]);
inx.mod.inxdev.example.hotkey
Код подключения

Хранилище данных на стороне клиента

Используется для автоматического сохранения состояний пенелей, деревьев и т.д. Может быть использовано произвольно.
inx.mod.inxdev.example.storage
Код подключения

Что дальше?

Вы можете скачать библиотеку inx и использовать ее в ваших проектах. Любые комментарии приветствуются.