Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Qual Framework eu escolho? - #3 Quesito Template Engine

03/04/2020

Na aula de hoje iniciaremos a avaliação dos três frameworks no quesito de template engine, apresentando qual apresenta maior facilidade de uso.

Como vantagens os templates engines trazem:
- reutilização do código
- separação de camadas
- produtividade
- maior velocidade

Django

Primeiramente vamos criar o diretório templates e dentro desse diretório os arquivos main.html e contato.html

main.html

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Meu site</title>
    <link rel="stylesheet" href="{% static 'style.css' %}">
</head>
<body>
    {% block content %}
    {% endblock %}
</body>
</html>

contato.html

{% extends 'main.html' %}
{% block content %}
    meu conteudo 
Meu carro é {{carro}}
{% for arrs in arr %} {{arrs}}
{% endfor %} {% endblock %}

No arquivo views.py configuramos a nossa rota:

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.
def contato(request):
    data = {}
    data['carro'] = 'Uno'
    data['arr'] = ['thiago', 'thais', 'roberto']
    return render(request, 'contato.html', data)

No Django a exibição literal se dá pelas duas chaves {{}} e os comandos pela chave mais % assim {% %}

Para rodar arquivos estáticos (css, js, imagens...) você utiliza:

{% load static %}
<link rel="stylesheet" href="{% static 'style.css' %}">

Express

Para implementar o template engine no express vamos baixar o módulo express-handlebars implementando o seguinte comando:

npm install express-handlebars

No app.js instanciaremos o handlebars:

const express = require('express');
const app = express();
const handlebars = require('express-handlebars');

app.engine('handlebars',handlebars({defaultLayout:'main'}));
app.set('view engine', 'handlebars');
app.use('/static',express.static('static'));

app.get('/contato',function(req,res){
    let name='Thiago';
    let arr=[
        {
            name:'Thiago',
            age: 18
        },
        {
            name:'Thais',
            age: 22
        }
    ];
   res.render('contato',{'name':name, arr});
});

app.listen(3000,function(req,res){
    console.log('Servidor rodando!');
});

Vamos criar os diretórios views/layouts. Dentro de layouts ficará o arquivo main.handlebars:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel='stylesheet' href='/static/style.css'>
</head>
<body>
    {{{body}}}
</body>
</html>

O arquivo contato.handlebars ficará assim:

o que vai mudar 
{{name}} {{#arr}} {{age}}
{{/arr}}

No Express com NodeJS a impressão literal é dada com chaves {{}} e a abertura de comandos é dada assim: {{#if}} {{/if}}

Para arquivos estáticos iremos criar a pasta static e dentro dessa pasta o arquivo css. Posteriormente pra chamar esse arquivo, no app.js faremos:

app.use('/static',express.static('static'));

E linkaremos assim:

<link rel='stylesheet' href='/static/style.css'>

Laravel

No Laravel inicie o servidor PHP. Após isso, acesse seu terminal e rode o comando:

php artisan serve

Vamos fazer a seguinte rota no arquivo routes/web.php:

Route::get('/contato','ContatoController@index');

Criaremos o ContatoController com comando do Laravel:

php artisan make:controller ContatoController

O arquivo ContatoController ficará assim:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ContatoController extends Controller
{
    public function index()
    {
        $arr=['Thiago','Thais','Florença'];
        return view('contato', compact('arr'));
    }
}

Agora dentro de resources/views vamos criar os arquivos main.blade.php e contato.blade.php

main.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="@php echo asset('style.css'); @endphp">
</head>
<body>
    @yield('content')
</body>
</html>

E contato.blade.php:

@extends('main')

@section('content')
    o que vai mudar 
@foreach($arr as $arrs) {{$arrs}}
@endforeach @endsection

No Laravel a impressão literal é através de chaves {{$variavel}} e os comandos são feitos através de @if @for @endfor ou {!! !!}

Os arquivos estáticos devem ficar na pasta public

Para linkar:

<link rel="stylesheet" href="@php echo asset('style.css'); @endphp">

A nossa avaliação ficou assim:

Nota de template engine Django, Laravel ou Express Nodejs

Sucesso nos códigos e na vida!

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Qual Framework eu escolho? - #2 Quesito Projeto, Rotas e Servidor
Na aula de hoje faremos a verificação entre todos os frameworks qual apresenta maior facilidade para criação de um projeto, criação de uma rota e servidor.
Saiba mais!
Qual Framework eu escolho? - #4 Quesito Ajax e JSON
Na aula de hoje trabalheremos com dois conceitos importantes no desenvolvimento que é o uso do Ajax e do JSON. Qual apresenta o melhor desempenho?
Saiba mais!
Framework
Nessa playlist aprenderemos um pouco mais sobre os diferentes frameworks existentes, apontando os defeitos e qualidades de cada um.
Saiba mais!