Ответ 1
Я не думаю, что на данный момент существует подходящая DSL, самая близкая вещь, о которой я могу думать, это CoffeeScript
http://jashkenas.github.com/coffee-script/
Это также будет хорошей отправной точкой для создания.
Есть ли проект (с открытым исходным кодом), который использует виджеты и плагины для jQuery UI, но позволяет нам использовать их без настройки HTML?
Похоже на Ext-js и Sproutcore, но без обычной сложности и отсутствия текучести, и больше похоже на Cappuccino, но без необходимости использования Mac и ужасных времен загрузки из Objective-j (который также не имеет поддержки IDE). Кроме того, больше похоже на Ukijs, но с большим количеством виджетов. И вроде как Pajamas и 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/
Это также будет хорошей отправной точкой для создания.
Посмотрим, понимаю ли я этот вопрос. Вместо
<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, к сожалению, включает в себя некоторые из его недостатков.
Вы должны взглянуть на Google Closure:
http://code.google.com/closure/
По-моему, он соответствует именно тому, что вы просите.
Что мешает вам использовать JavaScript и jQuery UI, как сейчас?
Насколько я знаю, для загрузки веб-страницы в веб-браузере текущего поколения требуется (X) HTML-документ, но ничто не мешает вам сделать этот документ заглушкой и полностью создать приложение на JavaScript.
Как "Mr. Shiny and New" отметил, что следующий код будет работать:
$('body').append($('<button>').attr('{ id: "foo" }').html('Foo').button());
Однако стиль, который вы ищете, можно получить с помощью функции appendTo():
$('<button id="foo"></button>')
.button({
label: "Hello world!",
}).click(function () {
//doSomething
}).appendTo('#test');
Кроме того, приведенный выше код возвращает объект "button", который позволяет назначать объект переменной для последующего повторного использования:
// 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!'
});
});
});