ExpressJS - tworzenie szablonów
Pug to silnik szablonów dla Express. Silniki szablonów są używane do usuwania zaśmiecania naszego kodu serwera za pomocą HTML, łącząc ciągi znaków z istniejącymi szablonami HTML. Pug to bardzo potężny silnik do tworzenia szablonów, który ma wiele funkcji, w tymfilters, includes, inheritance, interpolationitp. Jest wiele powodów do omówienia w tej sprawie.
Aby używać Pug z Expressem, musimy go zainstalować,
npm install --save pugTeraz, gdy Pug jest zainstalowany, ustaw go jako silnik tworzenia szablonów dla swojej aplikacji. tydon'ttrzeba tego „wymagać”. Dodaj następujący kod do plikuindex.js plik.
app.set('view engine', 'pug');
app.set('views','./views');Teraz utwórz nowy katalog o nazwie views. Wewnątrz tworzy plik o nazwiefirst_view.pugi wprowadź w nim następujące dane.
doctype html
html
   head
      title = "Hello Pug"
   body
      p.greetings#people Hello World!Aby uruchomić tę stronę, dodaj następującą trasę do swojej aplikacji -
app.get('/first_template', function(req, res){
   res.render('first_view');
});Otrzymasz wynik jako - Hello World!Mops konwertuje ten bardzo prosto wyglądający znacznik do HTML. Nie musimy śledzić zamykania naszych tagów, nie musimy używać słów kluczowych class i id, a raczej używać '.' i'#'aby je zdefiniować. Powyższy kod jest najpierw konwertowany na -
<!DOCTYPE html>
<html>
   <head>
      <title>Hello Pug</title>
   </head>
   
   <body>
      <p class = "greetings" id = "people">Hello World!</p>
   </body>
</html>Mops jest w stanie zrobić znacznie więcej niż upraszczanie znaczników HTML.
Ważne cechy mopsa
Przyjrzyjmy się teraz kilku ważnym cechom Mopsa.
Proste tagi
Tagi są zagnieżdżane zgodnie z ich wcięciem. Podobnie jak w powyższym przykładzie,<title> został wcięty w <head>tag, więc był w środku. Ale<body> tag był w tym samym wcięciu, więc był rodzeństwem <head> etykietka.
Nie musimy zamykać tagów, gdy tylko Pug napotka następny tag na tym samym lub zewnętrznym poziomie wcięcia, zamyka tag za nas.
Aby umieścić tekst w tagu, mamy 3 metody -
- Space seperated 
h1 Welcome to Pug- Piped text 
div
   | To insert multiline text, 
   | You can use the pipe operator.- Block of text 
div.
   But that gets tedious if you have a lot of text.
   You can use "." at the end of tag to denote block of text.
   To put tags inside this block, simply enter tag in a new line and 
   indent it accordingly.Komentarze
Pug używa tej samej składni co JavaScript(//)do tworzenia komentarzy. Te komentarze są konwertowane na komentarze html (<! - comment ->). Na przykład,
//This is a Pug commentTen komentarz zostanie przekonwertowany na następujący.
<!--This is a Pug comment-->Atrybuty
Aby zdefiniować atrybuty, używamy listy atrybutów oddzielonych przecinkami, w nawiasach. Atrybuty klasy i ID mają specjalne reprezentacje. Poniższy wiersz kodu zawiera definicję atrybutów, klas i id dla danego tagu html.
div.container.column.main#division(width = "100", height = "100")Ten wiersz kodu zostanie przekonwertowany na następujący. -
<div class = "container column main" id = "division" width = "100" height = "100"></div>Przekazywanie wartości do szablonów
Kiedy renderujemy szablon Pug, możemy przekazać mu wartość z naszego programu obsługi trasy, której możemy następnie użyć w naszym szablonie. Utwórz nową procedurę obsługi trasy z następującymi elementami.
var express = require('express');
var app = express();
app.get('/dynamic_view', function(req, res){
   res.render('dynamic', {
      name: "TutorialsPoint", 
      url:"http://www.tutorialspoint.com"
   });
});
app.listen(3000);I utwórz nowy plik widoku w katalogu views o nazwie dynamic.pug, z następującym kodem -
html
   head
      title=name
   body
      h1=name
      a(href = url) URLOtwórz localhost: 3000 / dynamic_view w przeglądarce; Powinieneś otrzymać następujące dane wyjściowe -
 
                Możemy również użyć tych przekazanych zmiennych w tekście. Aby wstawić przekazane zmienne między tekstem tagu, używamy#{variableName}składnia. Na przykład w powyższym przykładzie, gdybyśmy chcieli umieścić Pozdrowienia z TutorialsPoint, moglibyśmy zrobić co następuje.
html
   head
      title = name
   body
      h1 Greetings from #{name}
      a(href = url) URLTa metoda używania wartości jest nazywana interpolation. Powyższy kod wyświetli następujące dane wyjściowe. -
 
                Warunki
Możemy również używać instrukcji warunkowych i konstrukcji pętli.
Rozważ następujące -
Jeżeli użytkownik jest zalogowany, strona powinna się wyświetlić "Hi, User" a jeśli nie, to "Login/Sign Up"połączyć. Aby to osiągnąć, możemy zdefiniować prosty szablon, taki jak -
html
   head
      title Simple template
   body
      if(user)
         h1 Hi, #{user.name}
      else
         a(href = "/sign_up") Sign UpKiedy renderujemy to za pomocą naszych tras, możemy przekazać obiekt, jak w następującym programie -
res.render('/dynamic',{
   user: {name: "Ayush", age: "20"}
});Otrzymasz wiadomość - Hi, Ayush. Ale jeśli nie przekażemy żadnego obiektu lub przekażemy go bez klucza użytkownika, otrzymamy link rejestracyjny.
Uwzględnij i składniki
Mops zapewnia bardzo intuicyjny sposób tworzenia komponentów dla strony internetowej. Na przykład, jeśli widzisz witrynę z wiadomościami, nagłówek z logo i kategoriami jest zawsze stały. Zamiast kopiować to do każdego tworzonego widoku, możemy użyćincludefunkcja. Poniższy przykład pokazuje, jak możemy korzystać z tej funkcji -
Utwórz 3 widoki za pomocą następującego kodu -
HEADER.PUG
div.header.
   I'm the header for this website.CONTENT.PUG
html
   head
      title Simple template
   body
      include ./header.pug
      h3 I'm the main content
      include ./footer.pugFOOTER.PUG
div.footer.
   I'm the footer for this website.Utwórz do tego trasę w następujący sposób -
var express = require('express');
var app = express();
app.get('/components', function(req, res){
    res.render('content');
});
app.listen(3000);Idź do localhost: 3000 / components, otrzymasz następujące dane wyjściowe -
 
                include może również służyć do dołączania zwykłego tekstu, CSS i JavaScript.
Mopsa ma wiele innych funkcji. Ale to jest poza zakresem tego samouczka. Możesz dalej odkrywać Pug w Pug .