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 pug

Teraz, 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 comment

Ten 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) URL

Otwó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) URL

Ta 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 Up

Kiedy 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.pug

FOOTER.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 .