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

OSCHINA-MIRROR/fuhai-fasty

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
readme_cn.md 6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 06:53 a9ff471

Fasty: быстрый и простой шаблонизатор на JavaScript

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

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

Особенности Fasty:

  1. Высокая производительность: Fasty компилирует шаблоны непосредственно в исполняемый код, а не использует регулярные выражения, что обеспечивает высокую скорость рендеринга.
  2. Простота: Fasty имеет только две встроенные команды: {{ }} для вывода и {{~ }} для логических операций.
  3. Гибкость: Fasty легко интегрируется с JavaScript, позволяя использовать его вместе с другими библиотеками, такими как JQuery.

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

Пример 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);
// result: text... hello fasty kiss~~

Синтаксис Fasty

Вывод:

  • Переменные: {{~ var x = 100}} {{x}}.
  • Строки: {{"hello world"}}.
  • Вычисления: {{1+2+3}}, {{100 / 100}}, {{10 % 3 * 100}}.
  • Безопасный вывод: {{! "<div> hello world </div>"}}.
  • Принудительный вывод HTML: {{@ "&lt;div&gt; hello world &lt;/div&gt;"}}.

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

  • {{~ var a =100}},
  • {{~ var a =100,b = 200,c=300}},
  • {{~ let a =100}},
  • {{~ let a =100,b=200,c=300}},
  • {{~ const a =100}},
  • {{~ const a =100,b=200,c=300}}.

Условные операторы if-else:

  • Простой if: {{~ if (x == 100) }}.
  • Сложный if: {{~ if (x == 200) }} output.... {{~ /if}}.

Цикл for:

  • Цикл for of: {{~ for (item of array) }} {{~end}}.
  • Цикл for in: {{~ for (item in array) }} {{~end}}.
  • Циклы for let и for const: {{~ for (let item of array) }} {{~end}}, {{~ for (const item in array) }} {{~end}}.
  • Цикл по ключам объекта: {{~ for (key of Object.keys(item) )}} {{~end}}.
  • Другие варианты цикла for: {{~ for (var x = i;x < 100;x++) }} {{~ end }}, {{~ for (item of someMethodInvoke().other()) }} {{~end}}, {{~ for (var x = i;x < someMethodInvoke().other();x++) }} {{~ end }}.

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

  • Доступ через точку: {{a?.b?.c}}.
  • Глубокий доступ: {{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,即: render 方法传入的 data 数据优先
    shareDataFirst: false, //default is false
    
    //是否开启安全访问,这个功能不支持 IE 浏览器
    //IE 下需要设置为 false,同时配置 false 后会得到更高的运行性能
    safelyAccess: true,

    //是否支持直接使用 window 对象,默认值为:false
    windowObjectEnable: false,

    //поддерживать использование каких window объектов
    //например: ['$','JQeury']
    windowObjects: null,

    //render() 方法传入的数据的 ссылка
    rootParaName:'$DATA',

    //пользовательский метод html безопасного вывода
    //когда используется {{* ... }}
    $escape:function (html){return html},

    //пользовательский unescape метод
    //когда используется {{! ... }}
    $unescape:function (value){return value}
}

var fasty = new
``` Фасти (options);
фаст.рендер(темплейт, дата)

作者

License

Fasty лицензирован в соответствии с условиями MIT License.

Опубликовать ( 0 )

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

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