Sintaxis del nodo pug y nunjucks

Motor de plantillas: El motor de plantillas es una herramienta para generar html dinámicamente en aplicaciones web, responsable de combinar datos con plantillas;
instalación de Koa, Koa-router, Koa-views pug
npm i koa koa-router koa-views pug

node.js genera html Estos son los datos

//引入
const Koa = require("koa"); //加载koa框架
const Router = require("koa-router"); //加载路由
const views = require("koa-views") // 加载视图控制

let app = new Koa();
let router = new Router();


//使用
app.use(views(__dirname + "/views", {
    
    
        map: {
    
    
            html: "pug"
        }
    }))
    // app.use(views(__dirname + "/views", { //自动去views里面找
    //     map: {
    
    
    //         html: "pug"
    //     }
    // }));
    //实行异步机制
router.get("/", async ctx => {
    
    
    // ctx.body = "hello";
    await ctx.render("index.pug", {
    
    
        data: "我是数据"
    })
})
app.use(router.routes());
app.listen(3000);//这是端口

Cree un index.pug equivalente a html y escriba una plantilla en él.
Estilo de escritura:

estilo.
.mtdiv { ancho: 200px; altura: 200px; fondo: rojo; }



  • Sintaxis pug: reemplaza la relación de contención jerárquica html anterior mediante sangría. Por ejemplo, una estática simple se puede expresar como, preste atención al uso uniforme de tabulación o sangría de espacio, y no los mezcle.
body 
        h1 我是标签
        div 我是div
        div(class="mtdiv")  我是类名

        #myid  我是有标签的div

        //

        //js结合使用
        div 
            | hello  
            //加一个树干就是div标签  如果不加就是两个标签

        //接收服务器返回的数据
        p #{data}
        //使用自身的数据
        - let str = "你好啊"
        p #{str}

Esta es una representación, podemos ver lo mismo que html
Inserte la descripción de la imagen aquí

Utilice juicio, bucle, función, modo de mezcla en pug

//ciclo
        //- ul 
         
        //-     each item in users     //遍历数据
            
        //-         li 姓名是:#{item.name};年龄事 #{item.age};身高事: #{item.height};
            //-for循环
            - for(let i =0;i<4;i++)
                span 我是循环出来的数据 #{
    
    i}
//juicio
        - let num = "a";
            case num 
                when 1
                    p num 是1
                when 2
                    p num 是2
                when 3
                    p num 是3
                default
                    p num 是其他数

//Modo mezclado

        mixin mydiv 
            div 我是常用的div  
        +mydiv
        

        mixin pet(name,sex)
            p 这是一只#{
    
    name},他的性别是#{
    
    sex}
        +pet("太帝","男")
        +pet("太帝","男")
        +pet("太帝","男")
        +pet("太帝","男")

        script(type="text/javascript").
            console.log("hhh")
js uso combinado
  • script (tipo = "texto / javascript").
    console.log ("hhh")

  • script (src = "onde.js")
    Inserte la descripción de la imagen aquí

  • npm yo pug-cli -g

  • pug index.pug

  • pug index.pug -w -P convertir html a formato normal

npm i koa-static
  • const static = require ("koa-static") // Cargar archivos estáticos
  • app.use (static (__ dirname + “/ static”))

Introducir un
enlace de estilo CSS externo (rel = "stylesheet", href = "index.css")

sintaxis de nunjucks

koa-nunjucks-2

Instalación: npm i koa-nunjucks -2
use

const nunjucks = require("koa-nunjucks-2");
app.use(nunjucks({
    
    
    ext: "html", //指定模板后缀  .njk
    path: __dirname + '/views', //指定视图目录
    nunjucksConfig: {
    
    
        trimBlocks: true //开启转义,防止xss漏洞
    }
}));
uso de la sintaxis de nunjucks

变量 :<p>用户名:{ {username}}</p>

si
<!-- if  -->
    {
    
    % if num>3 %}
    <p>num值大于3</p>
    {
    
    % elif num %}
    <span>num值小于3</span> {
    
    % else %}
    <div>num值等于3</div>
    {
    
    % endif %}
Estructura de bucle para
router.get("/", async ctx => {
    await ctx.render("index", {
        username: "hhh",
        num: 2,
        arr: [{ name: "张三", age: 20, height: "188cm" },
            { name: "李四", age: 10, height: "168" },
            { name: "王五", age: 28, height: "165" }
        ],
        str: "hello world"
    });
})
ul>
        {
    
    % for item in arr %}
        <li>
            姓名是{
    
    {
    
    item.name}} 年龄是{
    
    {
    
    item.age}} 身高是{
    
    {
    
    item.height}}
        </li>
        {
    
    % endfor %}
        <!--   循环结束 -->
    </ul>

{% endfor %} <!-- 循环结束 -->

<!-- 过滤器 --> { { str | replace("world", "bar") | capitalize }}

Tenga en cuenta que nodemon no puede detectar html, así que después de modificar el contenido en html, recuerde reiniciar

Bloque de herencia de plantilla / se extiende

  • Definir la plantilla principal
<h1>我是公共模板</h1>
    <div class="leftContent">
        {
    
    % block left %}
            这边是左侧的内容
        {
    
    % endblock %}
        {
    
    % block right %}
            这边是右侧的内容
        {
    
    % endblock %}
        {
    
    % block somevalue %}
            我是一些数据
        {
    
    % endblock %}
    </div>
Heredar la plantilla principal
{
    
    % extends "common.html" %}
{
    
    % block left %}
    我是左侧的内容1111
{
    
    % endblock %}
{
    
    % block right %}
    我是右侧的内容11111
{
    
    % endblock %}

{
    
    % block somevalue %}
    {
    
    {
    
     super() }}
{
    
    % endblock %}

Supongo que te gusta

Origin blog.csdn.net/weixin_54645137/article/details/115162526
Recomendado
Clasificación