Wyjaśnienie

Natknąłem się na coś, czego nigdy wcześniej nie widziałem. W źródle kręgosłupa.przykład JS TODO application (Backbone TODO Example) mieli swoje szablony wewnątrz <script type = "text/template"></script>, który zawierał kod, który wygląda jak coś z PHP, ale ze znacznikami JavaScript.

Czy ktoś może mi to wyjaśnić? Czy to legalne?
Author: Jim Hunziker, 2011-02-06

7 answers

Te znaczniki skryptów są powszechnym sposobem implementacji funkcjonalności szablonów (jak w PHP), ale po stronie klienta.

Ustawiając typ na "tekst/szablon", nie jest to skrypt, który przeglądarka może zrozumieć, a więc przeglądarka po prostu go zignoruje. Pozwala to umieścić tam wszystko, co może być później wyodrębnione i wykorzystane przez bibliotekę szablonów do generowania fragmentów HTML.

Backbone nie zmusza do używania żadnej konkretnej biblioteki szablonów - są całkiem mało tam: wąsy, Haml, Eco,szablon zamknięcia Google i tak dalej (ten użyty w przykładzie, do którego linkowałeś, to underscore.js ). Będą one używać własnej składni do pisania w tych znacznikach skryptu.

 381
Author: David Tang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-21 09:35:13

Jest legalny i bardzo poręczny!

Spróbuj tego:

<script id="hello" type="text/template">
  Hello world
</script>
<script>
  alert($('#hello').html());
</script>

Kilka szablonów Javascript używa tej techniki. [[6]}Kierownice.js jest dobrym przykładem.

 103
Author: Rimian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-28 00:37:13

Ustawiając znacznik skryptu type inny niż text/javascript, przeglądarka nie uruchomi wewnętrznego kodu znacznika skryptu. To się nazywa mikro szablon. Koncepcja ta jest szeroko stosowana w aplikacji pojedynczej strony (aka SPA).

<script type="text/template">I am a Micro template. 
  I am going to make your web page faster.</script>

Dla mikro szablonu Typ znacznika skryptu to text/template. Jest to bardzo dobrze wyjaśnione przez twórcę Jquery John Resig http://ejohn.org/blog/javascript-micro-templating/

 21
Author: Fizer Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-17 05:33:25

Aby dodać do odpowiedzi Box9:

Kręgosłup.js jest zależny od podkreślenia.js, który sam implementuje oryginalne mikrotemplaty Johna Resiga.

Jeśli zdecydujesz się użyć Backbone.js z szynami, koniecznie sprawdź klejnot Jammit. Zapewnia bardzo czysty sposób zarządzania opakowaniem zasobów dla szablonów. http://documentcloud.github.com/jammit/#jst

Domyślnie Jammit używa również Mikrotemplatów JResig, ale pozwala również na wymianę silnika szablonów.

 13
Author: Andrew De Andrade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-23 22:16:06

Jest to sposób dodawania tekstu do HTML bez jego renderowania lub normalizacji.

Nie różni się niczym od dodawania w stylu:

 <textarea style="display:none"><span>{{name}}</span></textarea>
 12
Author: Kernel James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-19 03:34:41

<script type = “text/template”> … </script> jest przestarzały. Zamiast tego użyj znacznika <template>.

 7
Author: Reza Salarmehr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-30 13:05:16

Szablony JQuery to przykład czegoś, co używa tej metody do przechowywania HTML, który nie będzie renderowany bezpośrednio (o to chodzi) wewnątrz innego HTML: http://api.jquery.com/jQuery.template/

 3
Author: Niels Heidenreich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-21 08:02:17