include.js: релиз на github

Nov 10, 2010 13:15

https://github.com/gaperton/include.js Перевел на нее свой рабочий проект, исправил ошибки. Работает, достаточно стабильна.

Библиотека, делающая возможным MVC-программирование в браузере, и радикально упрощающая разработку ajax и оффлайновых веб-приложений. Она использует подход, отличный от распространенного сейчас, и существенно более простой. В основе - динамически подгружаемые модули, и директива include, позволяющая их включать по зависимостям. HTML-шаблоны, и прочий "хитрый" контент - это один из типов модулей.

1. Полная совместимость с require.js, ибо эта штука - адаптер поверх require.js.
2. Новый API, существенно более простой и понятный, чем в require.js.
3. Интерфейс плагинов для добавления модулей с контентом произвольного типа.
4. Плагины:
- HTML-шаблоны с внедряемым JavaScript.
- HAML-шаблоны. Подрубил за 5 минут реализацию с гитхаба, пока не тестил.
- и вообще любые шаблоны, какие захотите. Это сделать просто, как никогда - компилируете текстовыми заменами в плагине свой язык в шаблон ASP-стиля, и дергаете стандартный HTML-plugin.
5. Прямолинейная реализация паттерна MVC, позволяющая разбивать приложение на иерархию компонентов. Если вы ищете способ делать MVC - это самый простой способ.
6. Поддержка jQuery. Можно думать об include.js, как о простом способе определять более продвинутые виджеты.

$.include({
html: "my_template.html" // включаем шаблон из файла
})
.define( function( _ ){ // определяем модуль...
_.exports = function widget( $this, a_data, a_events ){ // который экспортирует функцию...
_.html.renderTo( $this, a_data ); // разворачивающую шаблон внутрь $this.

$this.find( "#ok").click( a_events.on_click ); // пробрасываем событие наверх
$this.find( "#refresh").click( function(){
widget( $this, a_data, a_events ); // и обновляем сами себя. Да, вот так просто.
});
}
});

Ну что я могу сказать, друзья. jQuery, усиленный этой маленькой штучкой, наносит Dojo сокрушительный ответный удар. :) Средства структурирования больших систем у нас в jQuery теперь в стопицот раз круче. Они, не побоюсь этого слова - лучшие.

Сами посудите. Что проще - изучить Dojo, или два вызова API include.js? :)

TODO:
- CSS-модули. Вы сможете включать CSS в ваши виджеты.

- внедрение CSS в HTML-шаблон виджета. Зачем создавать отдельный файл, если надо вставить пару стилей, правда? Вот и я считаю, что достаточно вставить в шаблон виджета несколько тэгов .

- Возможность включать в шаблоне секции с навешенными событиями, указывая там точки стыковки, и дергая функции _контроллера_ из _шаблона_. Таки да. Это возможно.

То есть, если я скажу в шаблоне


, то внутрь этого тэга вставится результат разворота секции my_section, с навешенными событиями в результате вызова ее функции в контроллере.

Что позволит явно указывать точки стыковки секций в шаблоне. И - понять, как конструируется виджет, не заглядывая в код контроллера.

Это очень серьезные изменения, которые сделают встроенные шаблоны одними из лучших на данный момент.

- Тесты. Если вы даете мне пример кода, который не работает - я исправляю багу. И включаю этот код в релиз.
- Примеры. Курилка, дашь свои?
- Документация.
Плагины:
- SASS-модули. Подрубить готовую реализацию SASS в качестве плагина. Маммут, ты этого хотел?
- Поддержка jQuery Templates как еще одного шаблонного движка. Зачем людям отказываться от знакомых вещей? Не наш выбор.
- Ваши плагины, парни. Джанго-темплейты, например, кто сделать хочет? А полноценный mustache.js реализовать? Это все элементарно делается - десятки строк кода. Возможно - проще, чем вам кажется.

PS: Огромное спасибо Курилке, Маммуту, и всем остальным, кто принял участие в обсуждении. Если бы не вы, парни - библиотека была бы унылым говном. Серьезно.

PPS: Если Вы хорошо знаете JavaScript, у вас большой опыт работы с ajax фреймворками - записывайтесь в звездный десант вы можете помочь. Вам кажется, что это не лучший в мире API и способ программирования в браузере, и чего-то в нем не хватает - не стесняйтесь, и напишите об этом в комментах. Будете убедительны - все поправим.

Впрочем, лучше дождаться моей статьи про конструирование гуя на базе данной либы...

javascript, mvc, модули, html templates, include.js

Previous post Next post
Up