Показаны сообщения с ярлыком njst. Показать все сообщения
Показаны сообщения с ярлыком njst. Показать все сообщения

четверг, 28 июня 2012 г.

Node.JS: Вышла новая версия шаблонизатора nJSt — v0.2

Native JavaScript Templaes v0.2, произошли следующие изменения:

  • Теперь парсер возвращает не просто строку, а объект String, который в будущем может пополняться методами и свойствами. На данный момент содержится свойство status, которое может содержать строку "success" или "error", в зависимости от удачного или неудачного парсинга.

    Внимание! При некоторых условиях могут возникнуть проблемы с обратной совместимостью, например: когда результат парсера возвращается в response HTTP-сервера. Для того, чтобы избежать проблем, следует добавлять к результату парсера метод .toString(), который преобразует его в обычную строку;
     
  • Добавлена возможность создания множества экземпляров шаблонизатора, и у каждого могут быть свои уникальные настройки. Объект модуля шаблонизатора — это конструктор, но и этот же самый конструктор работает и как экземпляр самого себя, содержит те же методы и собственные настройки, что обеспечивает обратную совместимость (см. пример под номером №3);
     
  • Теперь nJSt присутствует и в NPM:
    npm install njst
     
  • Некоторые другие изменения, не влияющие на API: шаблонизатор разбит на модули, код лучше задокументирован с стиле JSDoc и прочие исправления.
     
В будущем ещё предстоят изменения. Например планируется всё-таки добавить конструкции <% ... %> %{...} в замену конструкциям с символами решётки: <# ... #> #{...}, — но конструкции с символами решётки по прежнему будут поддерживаться ради сохранения обратной совместимости.

https://github.com/unclechu/njst

пятница, 3 июня 2011 г.

Node.JS: Native JavaScript Templates (nJSt). Шаблонизатор, построенный на нативном JavaScript

Приветствую тебя, читатель. Гоняясь за идеей сделать шаблонизатор, основанный на нативном JavaScript — я кое к чему пришёл. В Node.JS для реализации этой задачи нашлось всё, что я мог пожелать, и выполнить задачу получилось настолько же нативными средствами. Например, главным инструментом послужил модуль VM для выполнения изолированного от внешней среды JavaScript-кода. Шаблонные вставки — это чистый JS, но туда не попадают всяческие опасные инструменты вроде скальпеля, require, global и др.

Перед тем как приступить к подробному разбору полётов, сразу взглянем на пример использования, который скорей нагляднее отразит суть, чем что-либо ещё. Код создания сервера приводить не буду, просто опишу сам шаблон и парсинг под определённым контекстом.

HTML-шабон:
<html>
<head>
    <title>#{PageTitle}</title>
</head>

<body>
    <h1>#{PageTitle}</h1>

    <ul>
    <# for (var i=0; i<List.length; i++) { #>
        <li>
            <#
                if (typeof List[i] !== 'object') {
                    show(List[i]);
                } else {
                    show(List[i].name +' - '+ List[i].note);
                }
            #>
        </li>
    <# } #>
    </ul>
</body>
</html>

Контекст:
var context = {
    PageTitle: 'jJSt test',
    List: ['First', {name:'Second', note:'2th'}, 'Third'],
};
var result = njst.parse(html, context, {debug:1});