Natknąłem się na coś, czego nigdy wcześniej nie widziałem. W źródle przykładowej aplikacji TODO Backbone.js ( Przykład TODO Backbone ) mieli szablony wewnątrz <script type = "text/template"></script>
, które zawierały kod, który wygląda jak coś z PHP, ale ze znacznikami JavaScript.
Czy ktoś może mi to wyjaśnić? Czy to jest legalne?
type="text/tcl"
czym widziałem w dokumencie W3C ? Jak tego użyć? (Czy powinienem zadać kolejne pytanie?)Odpowiedzi:
Te tagi skryptowe 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 zrozumiały dla przeglądarki, więc przeglądarka po prostu go zignoruje. Pozwala to na umieszczenie w nim wszystkiego, co można później wyodrębnić i wykorzystać w bibliotece szablonów do wygenerowania fragmentów HTML.
Backbone nie zmusza cię do korzystania z żadnej konkretnej biblioteki szablonów - jest ich całkiem sporo: Wąsy , Haml , Eco , szablon Google Closure i tak dalej (ta, której użyto w przykładzie, z którym się łączyłeś , to underscore.js ). Będą one używać własnej składni do pisania w obrębie tych znaczników skryptu.
źródło
.innerHTML
, dlatego jest to obecnie powszechna praktyka wśród silników szablonów.<template />
tag. html5rocks.com/en/tutorials/webcomponents/template & caniuse.com/#search=template<template>
jest tutaj, ale strony nadal używają tej techniki, takie jak reddit.com. : FTo jest legalne i bardzo przydatne!
Spróbuj tego:
Kilka bibliotek szablonów JavaScript używa tej techniki. Handlebars.js jest dobrym przykładem.
źródło
Ustawiając tag skryptu
type
inny niżtext/javascript
, przeglądarka nie będzie wykonywać wewnętrznego kodu tagu skryptu. Nazywa się to mikro szablonem. Ta koncepcja jest szeroko stosowana w aplikacji jednostronicowej (aka SPA).W przypadku mikro szablonu typ znacznika skryptu to
text/template
. Jest to bardzo dobrze wyjaśnione przez twórcę Jquery Johna Resiga http://ejohn.org/blog/javascript-micro-templating/źródło
Aby dodać do odpowiedzi Box9:
Backbone.js jest zależny od underscore.js, który sam implementuje oryginalne mikrotemplaty Johna Resiga.
Jeśli zdecydujesz się użyć Backbone.js z Railsami, koniecznie sprawdź klejnot Jammit. Zapewnia to bardzo czysty sposób zarządzania pakowaniem zasobów dla szablonów. http://documentcloud.github.com/jammit/#jst
Domyślnie Jammit używa również mikrotemplatów JResiga, ale pozwala także na wymianę silnika szablonów.
źródło
Jest to sposób dodawania tekstu do HTML bez renderowania lub znormalizowania.
Nie różni się niczym od dodania go w następujący sposób:
źródło
<img src="image.jpg">
wewnątrz obszaru tekstowego nie spowoduje pobraniaimage.jpg
przeglądarki, przeglądarka wie, że treść wewnątrz obszaru tekstowego nie jest przeznaczona do renderowania.</script>
, nie możesz jej użyć w znaczniku skryptu, więc możesz wtedy użyć obszaru tekstowego i odwrotnie.<script type = “text/template”> … </script>
jest przestarzały.<template>
Zamiast tego użyj tagu.źródło
<template>
tag nadal nie jest obsługiwany przez Internet Explorer od IE 11.<template>
. Większość głównych przeglądarek stacjonarnych obsługuje ten<template>
tag. Zdecydowanie zalecam używanie go od teraz. developer.mozilla.org/en/docs/Web/HTML/Element/…Szablony jQuery to przykład czegoś, co używa tej metody do przechowywania HTML, który nie będzie renderowany bezpośrednio (to jest cały punkt) wewnątrz innego HTML: http://api.jquery.com/jQuery.template/
źródło