stringtranslate.com

Усы (система шаблонов)

Mustache — это система веб-шаблонов . Она описывается как система без логики , поскольку в ней отсутствуют какие-либо явные операторы управления потокомif , такие как и else условные операторы или циклы for ; однако и циклы, и условная оценка могут быть достигнуты с помощью списков обработки тегов разделов и анонимных функций (лямбда-выражений). Она названа «Mustache» из-за интенсивного использования фигурных скобок , { }которые напоминают усы, наклоненные вбок . Mustache используется в основном для мобильных и веб-приложений. [1] [2]

Реализации доступны на ActionScript , C++ , Clojure , CoffeeScript , ColdFusion , Common Lisp , Crystal , D , Dart , Delphi , Elixir , Erlang , Fantom , Go , Haskell , Io , Java , JavaScript , Julia , Lua , .NET , Objective-C , OCaml , Perl , PHP , Pharo , Python , R , Racket , Raku , Ruby , Rust , Scala , Smalltalk , Swift , Tcl , CFEngine и XQuery .

История и принципы

Mustache-1 был вдохновлен ctemplate и et, [3] и начался как дистрибутив GitHub в конце 2009 года. Первая версия шаблонизатора была реализована с помощью Ruby , запускающего тексты шаблонов YAML . Основные (сохраненные) принципы были следующими:

Входные данные могут быть классом , так что входные данные можно охарактеризовать как представление модель–представление–контроллер (MVC). Шаблон Mustache не делает ничего, кроме ссылок на методы в представлении (входные данные) . [3] Вся логика, решения и код содержатся в этом представлении , а вся разметка (например, выходной XML ) содержится в шаблоне . В контексте модель–представление–представитель (MVP): входные данные из MVP- представителя , а шаблон Mustache является MVP- представлением .

Примеры

Данные

Данные JSON передаются в шаблоны Mustache, что приводит к выводу. Вот несколько примеров данных:

{ "имя" : "Мир" , "больше чем" : ">" }    

Переменные

Простой шаблон Mustache, такой как представленный ниже, в сочетании с указанными выше данными даст на выходе Hello World.

Привет {{ имя }}

Mustache HTML экранирует данные по умолчанию. Например, нижеследующее будет отображаться как 2 > 1.

2 {{ больше  чем }} 1

Чтобы отключить экранирование, используйте &. Ниже будет отображено как 2 > 1.

2 {{ & больше  } } 1

Операторы if и циклы foreach

Ниже представлен шаблон с тегом section. Когда xлогическое значение, тег section действует как условное выражение if . Когда xмассив , он действует как цикл foreach .

{{ #x }} Какой-то текст {{ /x }}

Специальная переменная {{.}}ссылается на текущий элемент при циклическом прохождении массива или на элемент, проверяемый в условном выражении.

Включая другие шаблоны

Вы можете указать шаблону Mustache загрузить в него другой шаблон Mustache, используя >символ .

<form> {{ > textBox }} {{ > submitButton }} </form>  

Комментарии

Комментарии обозначены восклицательным знаком.

{{!комментарий будет здесь}}

Технические подробности

Подсветка синтаксиса доступна в Atom , Coda , Emacs , [4] TextMate , Vim и Visual Studio Code . [5]

Поддержка шаблона Mustache встроена во многие фреймворки веб-приложений (например, CakePHP ) [ требуется ссылка ] . Поддержка в JavaScript включает как клиентское программирование с использованием многих библиотек JavaScript и фреймворков Ajax, таких как jQuery , Dojo и YUI , так и серверный JavaScript с использованием Node.js и CommonJS .

Спецификация и реализация

Существует множество реализаций Mustache Engine , и все они соответствуют общей формальной спецификации (см. внешние ссылки), что для конечных пользователей приводит к общему синтаксису.

По состоянию на март 2011 года последняя версия SPEC_VERSION была 1.1.2. [6]

Все движки Mustache в архитектуре v1.X имеют метод рендеринга , класс Mustache_Compiler и класс Parser . [ необходима ссылка ]

Вариации и производные

Mustache вдохновил на создание многочисленных библиотек шаблонов JavaScript, которые отталкивались от изначальной простоты, чтобы добавить определенную функциональность или использовать ее. [ необходима цитата ]

Руль

Handlebars.js [7] описывается как:

Handlebars.js — это расширение языка шаблонов Mustache, созданное Крисом Ванстратом. Handlebars.js и Mustache — это языки шаблонов без логики, которые разделяют представление и код, как мы все знаем и должны быть. [8]

Handlebars отличается от своего предшественника тем, что в блочных выражениях (аналогичных разделам в Mustache) помощники позволяют использовать пользовательские функции посредством явного написанного пользователем кода для этого блока.

Смотрите также

Ссылки

  1. ^ Авола, Г.; Рааш, Дж. (2012). Прорывная мобильная веб-разработка . ISBN 9781118348123.
  2. ^ Кэди, Дж. (2011). Функциональное программирование, применяемое к шаблонам веб-разработки: отчет по проекту MS (PDF) (отчет).
  3. ^ ab "Mustache". GitHub . 19 апреля 2022 г.
  4. ^ "Главная". web-mode.org .
  5. ^ "Mustache - Visual Studio Marketplace". Visualstudio.com . Microsoft. 18 августа 2019 г.
  6. ^ "Изменения". Mustache . GitHub. 20 марта 2011 г.
  7. ^ Кац, Йехуда (2011–2019). «Рули: Минимальная шаблонизация на стероидах». Handlebarsjs.com .
  8. ^ wykatz, NPM. "html+handlebars NPM". Подробности пакета html+handlebars NPM . Node Package Manager . Получено 20 декабря 2016 г.

Внешние ссылки