2012-12-06 9 views
8

Wpadłem na pomysł szablonowania stron po stronie serwera i klienta, ale dust.js trochę mnie myli.jak używać programu dustjs-linkedin jako szablonu strony klienta?

Aby korzystać dust.js dla klienta po stronie szablonów, potrzebne są trzy kroki:

  1. complie szablon
  2. obciążenie szablon
  3. renderować szablon

Prawda?

Ale skąd pochodzą szablony? Widziałem dwie różne metody:

1. <script> template <script> 
2. <div> template </div> 

... Oba znajdują się w DOM. Który jest poprawny?

Zauważam również, że możesz wczytać szablon przez ajax, więc szablon nie będzie widoczny w DOM, ale nie wiem jak to zrobić.

Ponadto obecnie używam jade jako mechanizmu wyświetlania ekspresowego. Czy trzeba przełączyć się na dust.js? Jaka jest korzyść?

Odpowiedz

11

To jest strona wiki LinkedIn Pył JS, które mogą odpowiedzieć na pytania i ma bardzo dobre przykłady: http://linkedin.github.com/dustjs/

Ale odpowiedzi na swoje pytania tutaj:

Tak trzeba skompilować szablon pył, który staje się JavaScript plik, który można dodać do strony za pomocą znacznika <script>, a następnie wywołać metodę dust.render w celu renderowania szablonu. Oto przykład:

  1. zapis następujący kod w pliku szablonu i zapisać go jako sample.tl

    <p>Hi {firstName} {lastName}</p> 
    
  2. kompilacji sample.tl do sample.js przez dustc sample.tl w linii poleceń lub użyj dust.compile("your_template_code", "template_name"), aby skompilować szablon i zapisać dane wyjściowe w pliku JavaScript (sample.js) lub użyj duster.js do obejrzenia i kompilowania szablonów przez: nodejs: https://github.com/dmix/dusterjs

  3. dodać sample.js w HTML:

    <script type="text/javascript" src="sample.js"></script> 
    

    będzie to również zarejestrować swój szablon dust.cache.

  4. w javascript:

    var your_json = {firstName:'James', lastName:'Smith'}; 
    
    dust.render('sample', your_json, function(err, out){ 
    
        your_dom_element.innerHTML = out; 
    
    }); 
    

    Wynik powyżej dust.render metody będzie <p>Hi James Smith</p>

    Więc trzeba przejść 3 argumenty do dust.render: dust.render(template_name, json, callback)

+0

Używam linkedin-dust i express, jak uzyskać dostęp do dust.render po stronie klienta? Zakładam, że muszę dołączyć plik js, ale czy muszę ręcznie dodawać go jako statycznie odciętą zawartość, czy też kurz zawiera procedurę obsługi żądań dla pliku? – James

+0

Tak, musisz dodać dust-core.js do swojej strony, aby wyrenderować szablon kurzu. Musisz również dodać skompilowane pliki szablonów kurzu. https://github.com/linkedin/dustjs/blob/master/dist/dust-core.js –

0

Jak mówi wiki, możesz użyć kurzu w kliencie lub na serwerze. Jeśli używasz go w kliencie, powinieneś pobrać szablon (na przykład z prośbą o ajax), skompilować go w przeglądarce. Będziesz musiał dołączyć plik skryptów przeciwpyłowych na swojej stronie.

Z drugiej strony można użyć kurzu na serwerze (używając rhino lub nodejs). W tym przypadku masz zamiar skompilować i wyrenderować szablon na serwerze, aby przeglądarka otrzymała html.

+2

Przez sposób, to kiepska rada, jeśli interesuje Cię wydajność. Znacznie lepiej, jeśli szablony się nie zmieniają, kompilują je raz, a następnie udostępniają skompilowane szablony bezpośrednio klientowi, zamiast kompilować je po stronie klienta. W ten sposób nie musisz wysyłać dust.js do klienta, a klient nie musi tracić czasu na kompilowanie szablonów. – fabspro

+1

Najlepiej prekompilować podczas kompilacji lub w ramach rozwoju, a następnie skompilować z modelem na kliencie. W ten sposób możesz zezwolić na lokalne buforowanie szablonów. – pilau

Powiązane problemy