Усы (система шаблонов)
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения ) |
Оригинальный автор(ы) | Джастин Хайлман, Бруно Сутик, Крис Ванстрат , Рикардо Мендес, Бруно Мишель |
---|---|
Первоначальный выпуск | 2009 год |
Стабильная версия | 4.2.0 / 28 марта 2021 г |
Репозиторий | |
Тип | Система веб-шаблонов |
Лицензия | С |
Веб-сайт | усы |
Mustache — это система веб-шаблонов . Ее описывают как систему без логики, поскольку в ней отсутствуют какие-либо явные инструкции потока управления , например if
и else
условные операторы или циклы for ; однако как цикл, так и условная оценка могут быть достигнуты с помощью списков обработки тегов разделов и анонимных функций (лямбда-выражений). Его назвали «Усы» из-за интенсивного использования брекетов . { }
, которые напоминают косые усы . 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 .
История и принципы
[ редактировать ]Усы-1 были вдохновлены ctemplate и et, [3] и начался как дистрибутив GitHub в конце 2009 года. Первая версия механизма шаблонов была реализована с помощью Ruby и запускала тексты шаблонов YAML . (Сохранившимися) основными принципами были:
- Без логики : нет явных операторов потока управления, все управление осуществляется с помощью данных .
- Четкое разделение задач : логика и представление : невозможно встроить логику приложения в шаблоны.
Входные данные могут быть классом , поэтому входные данные можно охарактеризовать как представление модель-представление-контроллер (MVC). Mustache Шаблон (входные данные) не делает ничего, кроме ссылки на методы в представлении . [3] Вся логика, решения и код содержатся в этом представлении , а вся разметка (например, выходной XML ) содержится в шаблоне . В контексте модель-представление-презентатор (MVP): входные данные берутся из MVP- презентатора , а шаблон Mustache — это MVP- представление .
Примеры
[ редактировать ]Данные
[ редактировать ]Данные JSON передаются в шаблоны Mustache, в результате чего получаются выходные данные. Вот пример данных:
{ "name": "World", "greater than": ">"}
Переменные
[ редактировать ]Простой шаблон Mustache, такой как приведенный ниже, в сочетании с приведенными выше данными выведет Hello World
.
Mustache HTML экранирует По умолчанию данные. Например, приведенное ниже изображение будет отображаться как 2 > 1
.
Чтобы отключить экранирование, используйте &
. Ниже будет отображаться как 2 > 1
.
Операторы if и циклы foreach
[ редактировать ]Ниже приведен шаблон с тегом раздела. Когда x
является логическим значением, тег раздела действует как if условное условие . Когда x
является массивом , он действует как цикл foreach .
Специальная переменная {{.}}
ссылается на текущий элемент при циклическом проходе по массиву или на элемент, проверенный в условном выражении.
Включая другие шаблоны
[ редактировать ]Вы можете указать шаблону Mustache загрузить в него другой шаблон Mustache, используя команду >
символ.
Комментарии
[ редактировать ]Комментарии обозначаются восклицательным знаком.
Технические детали
[ редактировать ]Подсветка синтаксиса доступна в Atom , Coda , Emacs , [4] TextMate , Vim и код Visual Studio . [5]
Поддержка шаблонов Mustache встроена во многие платформы веб-приложений (например, CakePHP ). [ нужна ссылка ] . Поддержка JavaScript включает в себя как на стороне клиента программирование с использованием множества библиотек JavaScript и фреймворков Ajax , таких как jQuery , Dojo и YUI , так и JavaScript на стороне сервера с использованием Node.js и CommonJS .
Спецификация и реализации
[ редактировать ]Существует множество реализаций Mustache Engine , и все они соответствуют общей формальной спецификации (см. внешние ссылки), что для конечных пользователей приводит к общему синтаксису.
По состоянию на март 2011 года последняя версия SPEC_VERSION была 1.1.2. [6]
Все Mustache Engines в архитектуре v1.X имеют метод рендеринга , класс Mustache_Compiler и класс Parser . [ нужна ссылка ]
Вариации и производные
[ редактировать ]Mustache вдохновил создание множества библиотек шаблонов JavaScript, которые развились из первоначальной простоты и добавили определенные функции или возможности использования. [ нужна ссылка ]
Руль
[ редактировать ]Руль.js [7] самоописывается как:
Handlebars.js — это расширение языка шаблонов Mustache, созданное Крисом Ванстратом. Handlebars.js и Mustache — это безлогичные языки шаблонов, которые разделяют представление и код, как мы все знаем, так и должно быть. [8]
Handlebars отличается от своего предшественника тем, что в блочных выражениях (аналогично разделам в Mustache) Helpers позволяют настраивать функции с помощью явного написанного пользователем кода для этого блока.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Авола, Г.; Рааш, Дж. (2012). Прорывная мобильная веб-разработка . ISBN 9781118348123 .
- ^ Кэди, Дж. (2011). Функциональное программирование в применении к шаблонам веб-разработки: отчет MS Project (PDF) (отчет).
- ^ Jump up to: а б «Усы» . Гитхаб . 19 апреля 2022 г.
- ^ "Дом" . веб-режим.org .
- ^ «Усы — торговая площадка Visual Studio» . Visualstudio.com . Майкрософт. 18 августа 2019 г.
- ^ "Изменения" . Усы . Гитхаб. 20 марта 2011 г.
- ^ Кац, Иегуда (2011–2019). «Руль: минимальный шаблон на стероидах» . Handlebarsjs.com .
- ^ Викац, НПМ. «html+руль NPM» . html+handlebars сведения о пакете NPM . Менеджер пакетов узлов . Проверено 20 декабря 2016 г.