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

OSCHINA-MIRROR/urain39-ij2tpl.js

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

IJ2TPL.js

A Mustache-подобный шаблонизатор, написанный на TypeScript (<= 4 КБ после минификации).

Быстрее, чем Mustache.js (по крайней мере, не медленнее)!

Английский | 中文

Поддерживается:

  • ES5(>=IE8)

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

// Импортируем ij2tpl.js, например, в nodejs:
const IJ2TPL = require('./dist/ij2tpl.min');

// Анализируем шаблонный источник
let renderer = IJ2TPL.parse('Hello, {name}!');

// Теперь визуализируем его!
renderer.render({name: 'IJ2TPL'}); // -> "Hello, IJ2TPL!"

Комментарии:

{- Комментарий }
{-- Ещё один комментарий --}
{-- Ещё один комментарий --}

{-- Ошибка! --}```

**Секция If:**
```html
{?valid}
	Визуализировать только при валидности
{/valid}

Секция Not:

{!valid}
	Визуализировать только при невалидности
{/valid}

Raw Formatter:

{-- name = '<b>urain39</b>' --}
Hello {#name}

Секция If-Else:

{?valid}
	Только визуализировать при валидности
{*valid}
	Ой, что-то пошло не так?
{/valid}

Тип функции (лямбда):

function toHumanReadableSize(size) {
	var i = 0,
	dataUnits = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB', 'BiB', 'NiB', 'DiB'];

	while (size >= 1024)
		i++, size /= 1024;

	return String(size.toFixed(2)) + dataUnits[i];
}

/* Можно считать это геттером свойства, как и другие форматировщики */
function humanReadableSize(context) {
	var downloadedSize = context.resolve(['downloadedSize', null, null]);
	return toHumanReadableSize(downloadedSize);
}
Downloaded {humanReadableSize}

Mark начала строки (dedent):

{-- Наша реализация `tokenize` позволяет использовать
	пустой комментарий в конце отступа для указания
	на то, что вы хотите удалить отступ для одной строки.

	См. https://github.com/urain39/ij2tpl.js/issues/70
	--}

{-- Например: --}
Hello World
	{-}Hello Wolrd

{-- Эти два приветствия миру одинаковы. }

Пользовательский префикс и суффикс (также известный как разделитель или теги):

IJ2TPL.parse('Hello <%name%>', '<%', '%>');

Частичный шаблон (v0.1.0 добавлено):

{? xxxEnabled }
	{@partial_template}
{/ xxxEnabled }
let renderer = IJ2TPL.parse(source),
	renderer2 = IJ2TPL.parse(source2),
	partialMap = {
		partial_template: renderer2
	};

renderer.render(data, partialMap);

Фильтры и действия (v0.1.0 добавлены):

Hello { name | no-f-word }
IJ2TPL.setFilterMap({
	'no-f-word': function(word) {
		return word.replace('fuck', '****');
	}
});

Действия такие же, как фильтры, но у них нет имени для поиска!

{- Просто -}
{| report}

Различия между типом функции и действиями:

Тип функции всегда будет кэшировать результаты поиска, а действие — нет.

Сложный раздел (вложенный):

{?valid}
	{-}Ваши баллы:
	{?scores}
		{-}Баран: {.}
	{/scores}
{/valid}

Об отладке:

Извините, я не рассматриваю этот вопрос. Я удалил местоположение токена, чтобы улучшить скорость токенизации. Но вы также можете догадаться, что не так, по сообщениям об ошибках, они сообщат вам имя раздела и тип.

Ещё не реализовано:

  • тип функции (поддерживается в версии v0.0.2-dev)
  • подшаблон (он же частичный раздел)
  • формат трубы (он же фильтр)

О Readme:

Опечатка или не понимаете? Пожалуйста, помогите мне улучшить его! Просто откройте новый выпуск или PR в моём проекте, и я отвечу вам, насколько смогу :)

Последнее обновление: 2020-06-27

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

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

Введение

Класс, написанный на TypeScript, представляет собой шаблонизатор Mustache (всего 4 КБ после минификации). Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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