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

OSCHINA-MIRROR/fuhai-fasty

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

Fasty — более быстрый шаблонизатор на JavaScript

Fasty — это простой и очень быстрый шаблонизатор, который использует специальное решение для кэширования при рендеринге шаблонов, достигая производительности во время выполнения, близкой к пределам JavaScript. В то же время он поддерживает как NodeJS, так и браузер.

Скорость рендеринга Fasty в 100+ раз выше, чем у других шаблонизаторов JavaScript.

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

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

var template = '<div> hello {{ name }} </div>'
var data = {name: "fasty"}

var fasty = new Fasty();
var result = fasty.render(template,data);
// результат: <div> hello fasty </div>

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

var template = ' {{attr}} hello {{ func1(name) }}'
var data = {name: "fasty"}

var fasty = new Fasty({
    //общие данные или функции шаблона
    share : {
        attr:'text...',
        func1:function (v){
            return v + " kiss~~"
        },
    }
});

var result = fasty.render(template,data);
// результат: text... hello fasty kiss~~

Грамматика Fasty

Вывод

// #1 Переменная
{{~ var x = 100}}
{{x}}
//вывод: 100


// #2 строка
{{"hello world"}}
//вывод: hello world


// #3
{{1+2+3}}
//вывод:6
{{100 / 100}}
//вывод:1
{{10%3 * 100}}
//вывод:100


// #4 escape
{{! "<div> hello world </div>"}}
//вывод: &lt;div&gt; hello world &lt;/div&gt;


// #5 unescape
{{@ "&lt;div&gt; hello world &lt;/div&gt;"}}
//вывод: <div> hello world </div>

Определение переменных

// #1
{{~ var a =100}}

// #2
{{~ var a =100,b = 200,c=300}}

// #3
{{~ let a =100}}

// #4
{{~ let a =100,b=200,c=300}}

// #5
{{~ const a =100}}

// #6
{{~ const a =100,b=200,c=300}}

if-else

// #1
{{~ if (x == 100) }}

{{~ elseif(x == 200) }}

{{~ else if(x == 300) }}

{{~ else}}

{{~ end}}


// #2
{{~ if (x == 200) }}
output....
{{~ /if}}
  • оба поддерживают 'elseif' или 'else if'
  • поддерживают использование {{~ /if}} для завершения

for-loop

// #1
{{~ for (item of array) }}

{{~end}}

// #2
{{~ for (item in array) }}

{{~end}}

// #3
{{~ for (let item of array) }}

{{~end}}

// #4
{{~ for (const item in array) }}

{{~end}}

// #5
{{~ for (key of Object.keys(item) )}}

{{~end}}

// #6
{{~ for (var x = i;x < 100;x++) }}

{{~ end }}

// #7
{{~ for (item of someMethodInvoke().other()) }}

{{~end}}

// #8
{{~ for (var x = i;x < someMethodInvoke().other();x++) }}

{{~ end }}

// #9
{{~ for (var x = i;x < someMethodInvoke().other();x++) }}

{{~ /for }}
  • поддерживают использование {{~ /for}} для завершения

безопасный доступ

// #1
{{a?.b?.c}}

// #2
{{a.bbbb?().ccc?.ddd}}

Рекурсивные вызовы

var template1 = '{{~for (item of items)}} {{ myRender(item)}} {{~end}}';
var template2 = '{{~for (item of childItems)}} {{ myRender(item)}} {{~end}}';
var fasty = new Fasty({
    share : {
        //настраиваемая функция рендеринга
        myRender:function (data){
            return fast.render(data,template2)
        },
    }
});

var data = {
  items: [
    {
      otherAttr: "value1",
      childItems: [
        {
          otherAttr: "value1",
          childItems: [],
        },
        {
          otherAttr: "value1",
          childItems: [],
        },
      ],
    },
    {
      otherAttr: "value1",
      childItems: [
        {
          otherAttr: "value1",
          childItems: [],
        },
        {
          otherAttr: "value1",
          childItems: [],
        },
      ],
    },
  ],
};
fast.render(data,template1);

Инициализация с помощью параметров

var options = {
    //общие данные шаблона или функции
    share : {
        attr:'text...',
        func1:function (v){
            return v + " kiss~~"
        },
    },

    //по умолчанию false
    shareDataFirst: false,

    //по умолчанию true, но не поддерживается IE
    safelyAccess: true,
    
    //поддерживает объекты окна, по умолчанию false
    windowObjectEnable: false,
    
    //какие объекты окна поддерживаются, по умолчанию null
    //тип данных: массив, например: ['$','JQeury']
    windowObjects: null,
    
    //имя корневого параметра метода render()
    rootParaName:'$DATA',
    
    //пользовательский метод экранирования 
    $escape:function

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

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

Введение

Это быстрый шаблонизатор JavaScript, который работает в браузере и на Node. Развернуть Свернуть
MIT
Отмена

Обновления (1)

все

Участники

все

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

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