1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/moasp-PithyJt

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

PithyJt

Razor-синтаксис в JavaScript-шаблонизаторе.
Поддерживает некоторые простые проверки синтаксиса, может определить номер строки с ошибкой синтаксиса.
Есть поддержка кэширования, для обеспечения уникальности кэша используется Crc32.
Расширения позволяют быстро создавать HTML-элементы и обеспечивают неограниченное наследование шаблонов.
Если вы не привыкли к Razor-синтаксису, расширения позволяют использовать hmtltag для определения шаблона.

Использование

Ссылка на Pjt:

<script src="pithy.teemplate.js"></script>

Компиляция шаблона:

var codes = Pjt.compile('<h3>@title</h3><p>@description</p>');

Рендеринг данных:

var text = Pjt.render(codes, {
	title : 'Заголовок Pjt', 
	description : 'Описание: Razor-синтаксический JavaScript-шаблонизатор'
});

Результат:

<h3>Заголовок Pjt</h3><p>Описание: Razor-синтаксический JavaScript-шаблонизатор</p>

Структура файлов

resources	несколько примеров использования распространённых методов
src	Pjt-код
	pithy.ajax.js	необязательный, но полезный плагин для запросов ajax
	pithy.teemplate.js	обязательный Pjt-ядро
	pithy.teemplate.helper.js	необязателен, но содержит удобные функции для быстрой работы
	pithy.teemplate.htmlhelper.js	необязателен, позволяет быстро генерировать элементы HTML-форм без вызова каких-либо функций, автоматически включается после ссылки
	pithy.teemplate.extends.js	необязателен, реализует расширение функциональности Pjt
	pithy.teemplate.htmltag.js	необязателен, автоматически реализует расширение функциональности HTML-тегов, включается после ссылки без необходимости вызова каких-либо методов

demo	простые примеры
	extends.html	пример расширения Pjt
	htmlhelper.htmlhtml	пример генерации элементов HTML-формы
	index.htmlhtml	базовый пример
	layouts.htmlhtml	используется в примере extends для макета содержимого

index.html	онлайн компиляция и рендеринг

В каталоге src файл pithy.teemplate.js является основным файлом, обязательным для Pjt.
Остальные файлы в каталоге являются расширениями.
Файл pithy.ajax.js представляет собой простую библиотеку запросов AJAX, которая включает require для использования модулей, соответствующих спецификации AMD.

Файлы pithy.teemplate.*.js представляют собой четыре библиотеки расширений, которые могут расширить функциональность Pjt. Их можно напрямую ссылаться через теги script или использовать AJAX.require.

Пример данных

{
	name : 'anlige',
	age : 23,
	list : [
		{date : '1986-9-1', text : 'birthday'},
		{date : '1998-9-1', text : 'schrool'},
		{date : '2009-6-21', text : 'work'}
	],
	basic : {
		sex : 'boy',
		works : 9
	}
}

Вызов JavaScript-методов

Без использования helper

///инициализация экземпляра

///компиляция шаблона
var code = Pjt.compile('<p>@name</p>');

///рендеринг данных
id('result2').innerHTML = Pjt.render(code, {name : 'Jazor'});

С использованием helper (цепочка вызовов)


PjtHelper
	.compile('<p>@name</p>')
	.render({name : 'Jazor'})
	.appendTo('result');

Метод appendTo присваивает результат рендеринга тегу result.

С использованием helper (без цепочки вызовов)

///компиляция
var render = PjtHelper.compile('<p>@name</p>');

///рендеринг
var appender = render.render({name : 'Jazor'});

///присвоение значения
id('result3').innerHTML = appender;

Здесь значение appender присваивается тегу result3.

Метод bind

/*
	PjtHelper.bind(data, src, dest);
	data : данные для рендеринга
	src  : HTML-элемент, содержащий текст шаблона для компиляции
	dest : 1. HTML-элемент для отображения результата рендеринга,
	      2. функция обратного вызова, первый параметр которой является результатом рендеринга
*/

PjtHelper.bind({name : 'Jazor'}, '_template', 'result3');

// эквивалентно
PjtHelper.bind({name : 'Jazor'}, '_template', function(res){
	document.getElementById('result3').innerHTML = res;
});

Синтаксис шаблонов похож на Razor, но более гибкий

Присвоение значений

<div>name = @name</div>
<div>age = @age</div>
<div>4 years later = @(age + 4)</div>
<div>sex = @basic['sex']</div>
<div>works = @basic.works</div>

Поддерживаются основные выражения, при необходимости можно использовать «()» в качестве разделителя выражений. Для вывода символа @ в шаблоне используйте @@.

Блок кода

@{
	var r = 255, g = 0, b = 0;
}
<div style="color:rgb(@r, @g, @b)">color:rgb(@r, @g, @b)</div>

Используйте @, за которым следует {для обозначения начала блока кода, код внутри блока будет рассматриваться как обычный текст, но будет участвовать в рендеринге переменных. Этот блок в основном используется для включения тегов style или script в шаблон, хотя не рекомендуется включать их в шаблоны, а вместо этого использовать только HTML-теги.

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

@if( age > 23){
	<p>больше 23 лет</p>
}else{
	<p>меньше или равно 23 годам</p>
}

Оператор цикла for (нативный JS)

<ul>
@for(var i = 0; i < list.length; i++){
	<li>@list[i].date</li>
}
</ul>

Оператор each (для массивов)

<ul>
@each list as value{
	<li>дата =  @value.date</li>
}
</ul>
<ul>
@each list as key, value{
	<li>ключ = @key, дата =  @value.date</li>
}
</ul>

Оператор foreach (для обычных объектов JS, здесь мы называем их парами ключ-значение)

<ul>
@foreach basic as key, value{
	<li>@key = @value</li>
}
</ul>

Операторы each и foreach являются синтаксическим сахаром и компилируются в нативный JS.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Шаблонизатор на JavaScript, имитирующий синтаксис Razor, поддерживает некоторые простые проверки синтаксиса, позволяет определить в консоли номер строки с ошибкой. Поддерживает кеширование, использует Crc32 для уникальной проверки кеша. Благодаря расширениям можно быстро создавать HTML-элементы, шаблоны поддерживают неограниченное наследование... Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/moasp-PithyJt.git
git@api.gitlife.ru:oschina-mirror/moasp-PithyJt.git
oschina-mirror
moasp-PithyJt
moasp-PithyJt
master