2010-04-19 21 views
5

Czy mógłbyś mi wyjaśnić, jak działają szablony silników w JavaScript? Dziękuję Ci.Jak działają szablony silników w JavaScript?

JSON

{ "color" : "red"} 

Szablon

<strong><%=color%></strong> 

Wynik

<strong>Red</strong> 
+0

Twoje pytanie nie jest zbyt jasne. Czy możesz podać więcej kontekstu? –

+2

Myślę, że ogólnie rzecz biorąc, podejście do tworzenia silnika szablonów polega na wybraniu odpowiednich algorytmów i wdrożeniu ich przy użyciu technik najlepszych praktyk w celu osiągnięcia pożądanego rezultatu. – Pointy

Odpowiedz

2

Mogą one różnić w zależności od implementacji, ale jeden mówisz wygląda jak to działa w następujący sposób:

  1. Analizować strony patrząc na klucze w <%= %> tagów

  2. dopasować klucz do pary klucz/wartość w formacie JSON

  3. Zamień znaczniki/klucz na wartość.

8

Jako punkt wyjścia Polecam wam dać wygląd metody String.prototype.replace i specjalnie stosując swoją funkcję callback:

function replaceTokens(str, replacement) { 
    return str.replace(/<\%=([^%>]+)\%>/g, function (str, match) { 
    return replacement[match]; 
    }); 
} 

var input = "<strong><%=color%></strong>"; 
replaceTokens(input, { "color" : "Red"}); 
// returns <strong>Red</strong> 

replaceTokens("<%=var1%> <%=var2%>", { "var1" : "Hello", "var2": "world!"}); 
// returns "Hello world!" 

Daj spojrzeć na te artykuły:

+0

John Resing jest najlepszym wariantem – zloctb

2

To nie jest bardzo różni się od innych rozwiązań szablonowych (na poziomie koncepcyjnym).

{ "color" : "red"} 

Określa atrybut color z wartością red.

<strong><%=color%></strong> 

oznacza „użyć wartości color gdziekolwiek mam <%=color%>. Na podstawie Wahat masz, tym szablonów silnikiem prawdopodobnie spacery DOM i stwierdza węzły, które mają wartości, które odpowiadają <%=somestring%>. Następnie sprawdza, czy tam jest atrybutem, który odpowiada wartości somestring Jeśli istnieje, zastępuje wartość <%=somestring%> o wartości określonej w JSON (który w tym przypadku jest red)

to w końcu daje:..

<strong>Red</strong> 
Powiązane problemy