Mustache (tizim andozasi)

Mustache(ˈməsˌtaSH) — bu  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 va XQuery uchun ilovalar mavjud bo'lgan veb-andoza(veb-shablon) tizimi.

Mustache Logic-Less tizimi sifatida tavsiflanadi, chunki unda  va  shartlari yoki for loops kabi aniq boshqaruv oqimi bayonotlari mavjud emas. Biroq, loop va shartli baholashga bo'lim teglarini qayta ishlash ro'yxatlari va anonim funksiyalar (lambdas) yordamida erishish mumkin.

Yon mo'ylovga o'xshash  qavslardan ko'p foydalanilgani uchun u "Mustache"(Mo'ylov) deb nomlangan.

Mustache asosan mobil va veb-ilovalar uchun ishlatiladi.

 Tarix va tamoyillar 
Mustache-1 ctemplate va et-dan ilhomlangan va 2009–yil oxirida GitHub orqali tarqatilishi boshlangan. Shablon mexanizmining birinchi versiyasi YAML shablon matnlari bilan ishlaydigan Ruby bilan amalga oshirilgan. Asosiy (saqlab qolingan) tamoyillar quyidagilar edi:
 Logic-less: aniq nazorat oqimi bayonotlari yo'q, barcha boshqaruv ma'lumotlarga asoslangan.
 Strong separation of concerns (logic from presentation): shablonlarga logic dasturini kiritish mumkin emas.
Kirish ma'lumotlari sinf bo'lishi mumkin, shuning uchun kirish ma'lumotlari model-view-controller (MVC) ko'rinishi sifatida tavsiflanishi mumkin. Mustache shabloni (kirish ma'lumotlari) ko'rinishida mos yozuvlar usullaridan boshqa hech narsa qilmaydi.
Barcha mantiq, qarorlar va kodlar ushbu ko'rinishda va barcha belgilar (masalan, output XML) shablonda mavjud. Model-view-presenter (MVP) kontekstida: Mustache shabloni MVP-view hisoblanib, kiritilgan maʼlumotlar MVP-presenterdan olingan.

 Misollar 
Oson andoza:
Hello {{name}}

Bo'lim tegi bilan andoza:
{{#x}}
Some text
{{/x}}
Bu yerda x Boolean qiymat hamda bo'lim tegi if shartli buyrug'i kabi ishlamoqda. Lekin, x massiv bo'lsa, foreach loop singari ishlaydi.

Un-escaped andoza:
{{&body}}
Bu yerda, agar  qismida HTML mavjud boʻlsa, unda un-escaped bo'ladi.

 Manbalar