|
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, время: 21:56. |
|