Существует ли проект (открытый исходный код), который берет виджеты и плагины для jQuery UI, но позволяет нам использовать их, не настраивая HTML?
Отчасти как Ext-js и Sproutcore, но без случайной сложности и отсутствия текучести, и больше как Капучино, но не требуя Mac и ужасное время загрузки от Цели-j (который также не имеет никакой поддержки IDE). Кроме того, больше как Ukijs, но с большим количеством виджетов. И отчасти как Пижама и GWT, но без отсутствия виджетов, предварительно компилируя шаг и/или Java. Например:
uki({
view: "Button", text: "Hello world!",
rect: "120 80 180 24",
click: function() { alert(this.text());
}).attachTo( document.getElementById("test") );
Причина я беру jQuery, состоит в том, потому что это - единственная веб-платформа, которая поддерживает все 30 существенных средств управления (данный с достаточным количеством плагинов).
Я не думаю, что на данный момент существует подходящий DSL, самое близкое, что я могу придумать, это CoffeeScript
http://jashkenas.github.com/coffee-script/
Он также был бы хорошей отправной точкой для создания.
Что мешает вам использовать JavaScript и jQuery UI прямо сейчас?
Насколько мне известно, для загрузки веб-страницы в браузере текущего поколения требуется документ (X)HTML, но ничто не мешает вам сделать этот документ заглушкой и построить свое приложение полностью на JavaScript.
Посмотрим, правильно ли я понял вопрос. Вместо
<script>
$(function(){
$('a').button();
});
</script>
<body>
<button id="foo">Foo</button>
<button id="bar">Bar</button>
</body>
Вы хотите
<script>
$(function(){
$('body').append($('<button>').attr('{ id: "foo" }').html('Foo').button());
$('body').append($('<button id="bar">Bar</button>').button());
});
</script>
<body>
</body>
Это соответствует вашим потребностям? В конце концов, вам все равно нужно будет указать детали кнопки (где она находится, ее текст, что происходит, когда вы нажимаете на нее) независимо от синтаксиса.
DHTMLX похож на ExtJS, но, к сожалению, имеет некоторые из его недостатков.
Как указал «Мистер Блестящий и Новый», следующий код будет работать:
$('body').append($('<button>').attr('{ id: "foo" }').html('Foo').button());
Однако стиль, который вы ищете, можно получить, используя функцию appendTo ():
$('<button id="foo"></button>')
.button({
label: "Hello world!",
}).click(function () {
//doSomething
}).appendTo('#test');
Кроме того, приведенный выше код возвращает объект «кнопка», который позволяет вам назначить объект переменной для повторного использования в будущем:
// set up the button
var a = $('<button/>').button({
label: 'Hello world!'
}).offset({
top: 80,
left: 120
}).width(180).height(24)
.click(function () {
// dosomething
}).appendTo('body');
// hide then show and rename (if it takes your fancy)
a.hide(300, function () {
a.show(300, function () {
a.button( "option" , {
label: 'Hello to the world again!'
});
});
});