IJ2TPL.js
A Mustache-подобный шаблонизатор, написанный на TypeScript (<= 4 КБ после минификации).
Быстрее, чем Mustache.js (по крайней мере, не медленнее)!
Английский | 中文
Поддерживается:
Использование:
// Импортируем 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}
Об отладке:
Извините, я не рассматриваю этот вопрос. Я удалил местоположение токена, чтобы улучшить скорость токенизации. Но вы также можете догадаться, что не так, по сообщениям об ошибках, они сообщат вам имя раздела и тип.
Ещё не реализовано:
О Readme:
Опечатка или не понимаете? Пожалуйста, помогите мне улучшить его! Просто откройте новый выпуск или PR в моём проекте, и я отвечу вам, насколько смогу :)
Последнее обновление: 2020-06-27
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )