JavaScript
Need help with fest?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.
mailru

Description

javascript templates

125 Stars 28 Forks Other 448 Commits 27 Opened issues

Services available

Need anything else?

Fest Build Status

Fest — это шаблонизатор общего назначения, компилирующий XML шаблоны в самодостаточные JavaScript функции. Для установки требуется Node.js >= 0.8.

Установка

npm install fest

Введение

Шаблоны представляют собой XML документы, содержащие HTML, текстовые данные и управляющие конструкции. Шаблон задается парным элементом

 (с указанием пространства имен 
http://fest.mail.ru
). Например:

Данные передаваемые в шаблон, доступны через переменную с именем, указанным в атрибуте

context_name
элемента
fest:template
:

Чтобы посмотреть результат работы, приведенных выше шаблонов, необходимо воспользоваться встроенной утилитой fest-render или API библиотеки.

fest-render

Утилита

fest-render
используется для компиляции и последующего запуска скомпилированного шаблона из командной строки. В таком случае, для передачи данных в шаблон используется JSON-файл.

hello.json

json
{"name": "John"}

hello.xml

xml

$ ./node_modules/.bin/fest-render --json=hello.json hello.xml
Hello,John!

Замечание: начальные и конечные пробелы в текстовых узлах удаляются при компиляции. Если необходимо вывести символ пробела, можно вопспользоваться

fest:space
.

render()

Функция

render()
API компилирует и исполняет шаблон с заданными параметрами.

hello.js

javascript
var fest = require('fest');
console.log(fest.render('hello.xml'), {name: 'John'});
$ node ./hello.js
Hello,John!

Данные и вывод

fest:value

Служит для вывода значения JavaScript выражения. Поддерживаем 4 режима вывода: html (по умолчанию), text, js и json.

value
value
value
value

fest:var

Устаналивает локальную JavaScript переменную.

Ultimate Question of Life, The Universe, and Everything
question

answer

fest:text

Выводит неформатированный текст.

"Hello"

fest:space

Служит для вывода пробела. Необходим в тех случаях, когда пробел в тектовом узле удаляется при компиляции, например:

Hello,json.name!

fest:set

Объявляет именованный подшаблон. Содержимое

fest:set
не будет выполнено до тех пор, пока не будет вызван блок с таким же имененем с помощью
fest:get
.
John
    F. Kennedy

Для

fest:set
можно использовать атрибут
test
. Операция выполнится, если его значение (JavaScript выражение) истинно.
should not be set

Внутри

fest:set
доступен контекст
params
, передаваемый через
fest:get
.
    Hello,params.username!

{username: "John"}

fest:get

Выводит содержимое блока, объявленного через

fest:set
.
{'some': 'data'}

С помощью

fest:param
можно передавать в блок XML-данные.
    
    
        {
            title: json.title
        }
    
    


    params.doctype
    <value>params.title</value>

    <value output="text">params.content</value>

Внутри атрибута

name
можно использовать JavaScript выражения для вычисления имени блока во время выполнения. Значения выражений, заключенных в фигурные скобки, объединяются с примыкающим текстом. Помимо этого, можно использовать атрибут
select
.
foo
bar

fest:element

Выводит HTML элемент с переменным именем.

    fest code


    fest code

Результат:

fest code
fest code

fest:attributes, fest:attribute

Добавляет атрибуты к родительскому элементы. Все

fest:attribute
должны быть внутри блока
fest:attributes
, который должен идти первым внутри элемента.

    
        json.href
    
    Some link

Существует быстрый способ вывести значение в атрибут:

Some link

Имена атрибутов можно вычислять в момент исполнения шаблона:

Управляющие конструкции

fest:each

Предоставляет механизм итерации по объекту.

    i=obj[i]


    i=v

fest:for

Выполняет итерацию по массиву или числовому ряду.

    json.items[i]


    v


    i

fest:if

Условный оператор.

    It's true!

fest:choose, fest:when, fest:otherwise

Ветвление. Если ни у одного

fest:when
условие не выполнено, будет выбрана ветвь
fest:otherwise
.
    
        one
    

<when test="2">
    <text>two</text>
</when>

<otherwise>
    <text>More than 2</text>
</otherwise>

Остальные конструкции

fest:cdata

Служит для вывода блока CDATA.


fest:comment

Выводит HTML комментарий.

comment

fest:doctype

Задает DOCTYPE генерируемой страницы.

html

fest:script

Служит для выполнения произвольного JavaScript.

Содержимое

fest:script
можно загрузить из файла, указав в атрибуте
src
путь к нему.

fest:include

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


fest:insert

Выводит содержимое файла:

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.