|
Templating System for Node.JS.
Допилил. Наконец-то.
В общем, тем кто ещё не знает, хочу рассказать про свой шаблонизатор для NodeJS. Исходники: https://github.com/B-Vladi/TSN Основные характеристики:
Некоторые моменты:
На данный момент нет такого же классического XML-шаблонизатора для ноды. Да и XML-шаблонизаторов я знаю только 2 - Fest и TSN. Убедительная просьба: не разводить holy war на тему - "Синтаксис XML - говно, юзай Dust". |
Поставлю 12 бубунут под кедами прикручу туда nodeJS и попробую сие творение ;)
|
Gozar, не обязательно, сие заводится даже из-под окон :yes:
|
Довёл до ума документацию: разбил по wiki-страницам, описал остальные моменты. Вникнуть в суть стало теперь намного проще :)
Осталось только написать мануал по API создания тегов. |
:blink: Вышла новая версия - 2.0.3.
Что изменилось: 1. Добавлен тег set, для изменения значения ранее созданной переменной (тег var). Работает точно по такому же принципу, как и тег var. 2. Добавлен атрибут item в теги for и each, что бы не приходилось явно сохранять текущий элемент массива/значение текущего свойства в переменную. |
Я понимаю, что всем похуй, но всё же...
:blink: Вышла новая версия - 2.1.0 Что изменилось: 1. Выпилил тег set за ненадобностью ;) 2. Теперь переменные из внешнего шаблона не доступны в подключаемых, дабы не прострелить себе ногу. 3. Добавлен метод extend, для расширения набора тегов из кода. 4. Пойманы и наказаны несколько багов. 5. Расширилось API тегов. Приведу пример шаблона: page.xml: <tsn:root xmlns:tsn="TSN"> <!-- Создаем скрипт для хедера --> <!-- Сначала сгенерируем конечный результат и сохраним в переменную --> <tsn:var name="header"> <script type="text/javascript"> //<![CDATA[ console.log(); // ]]> </script> </tsn:var> <!-- А при вызове шаблона просто будем возвращать результат --> <tsn:template name="header"> <tsn:echo text="_var.header" /> </tsn:template> <!-- Контент страницы --> <tsn:template name="body"> <div>Body</div> </tsn:template> <!-- Подключаем базовый шаблон --> <tsn:include src="base.xml" context="this.globalData" /> </tsn:root> Файл с базовой разметкой base.xml: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link href="base.css" type="text/css" rel="stylesheet"/> <!-- Здесь будет выводиться стили для конкретной страницы --> <tsn:include name="header" /> </head> <body> <!-- Вставляем навигацию с передачей необходимых данных --> <tsn:include src="common/navigation.xml" context="this.navigation" /> <!-- Вставляем контент, который был определён ранее и унаследован здесь --> <tsn:include name="body" /> <!-- Вставляем футер с передачей необходимых данных --> <tsn:include src="footer.xml" context="this.footer" /> </body> </html> Вроде всё логично и понятно, как думаете? |
Цитата:
|
Цитата:
|
Цитата:
:blink: Вышла новая версия - 2.1.1 Что изменилось: 1. Теперь в теге include абсолютные пути в атрибуте src начинаются с TSN.config.templateRoot. Относительные пути начинаются с папки текущего шаблона или от TSN.config.templateRoot, если текущий шаблон компилируется методом TSN.compile. 2. Пофикшен мелкий баг. Более серьёзных правок не предполагается, все основные моменты, которые хотел реализовать - реализовал. Если пользователи будут предлагать достойные изменения - буду впиливать. |
Цитата:
И между прочем я тебе помогал с тестированием ) |
Часовой пояс GMT +3, время: 19:55. |
|