pug模板引擎——jade

随着前端项目工程化的发展,代码结构越来越复杂,代码却越来越简单,为了将更多的精力集中在业务功能上面,对页面的快速构建需求日益剧增,同js、css一样,html也出现了各种各样的工具,即模板引擎,本文不研究各种模板引擎的实现技术原理,主要介绍jade的使用;

1.常见的模板引擎的

常见的模板引擎有mustache、Handelerbars、Underscore Templates、ejs(Embeded JS Templates)、jade
各种模板的比较可以参考我的另外一篇文章传送门
本文主要介绍pug模板引擎的使用,pug原名不叫pug,而是众所周知的jade,jade中文含义为美玉翡翠,其原来的logo为一只精灵的白兔,而pug中文含义为哈巴狗,现在logo也改成了憨态可掬的哈巴狗,至于为何将美玉改为哈巴狗,该开源项目在github给出的解释为jade的商标被人抢先注册了(这个理由也是让人服);

2.pug结构语法

pug模板引擎兼容html,即可以在代码中直接书写html;

  1. 标签:
    - 默认在每行文本开头(或紧跟白字符部分)书写html标签的名称;
    - 使用缩进来表示标签之间的嵌套关系
    - 自动识别闭合和非闭合标签,也可以在标签后加上/显示声明闭合标签

     如:
             ```
                 div
                     a: p 这里是输出字符
             ```
     渲染结果:`<div><a><p>这里是输出字符</p></a></div>`
  2. 内容
    - 管道文本:最简单的向模板添加纯文本的方法,在空白或标签后加上一个|字符,如:p | 这里是管道文本
    - 标签内文本:标签内添加文本,在索要添加的文本和标签元素之间输入一个空格即可,如:p 这里是标签内文本
    - 嵌入大段文本:在标签后输入一个.即可,注意标签和.之间无空格,如插入脚本:

         ```
         script. 
             if (true)
                 console.log('这里是脚本片段1');
             else
                 console.log(‘这里是脚本片段2’)
         ```
  3. 属性
    - 单行属性:标签属性与html语法相似,及普通js表达式,多个属性间用逗号或空格分隔,如:a(href=''baidu.com'',class='link') 百度
    - 多行属性:多行属性与单行属性类似,分多行些即可;
    - 长属性:长属性按照JS表达式书写即可;
    - 特殊字符:特殊字符可用''或""括起来即可,如:div(class='box' "(click)"="play()"
    - 转移属性:默认情况下,所有属性都经过转义(即将特殊字符串换成转义序列)来防止跨站脚本攻击之类方式
    - 布尔值:布尔值可直接使用,不指定值时默认为true;
    - class和id: 类可以使用.className、id使用#idname语法来使用,如:a.btn p#content
    - 行内样式:样式属性与其他属性一样,可以为字符串或对象,如:a(style={color:'red',background:'#333'})
  4. 注释
    - 单行注释:与javascript注释类似,采用//此时注释会输出,//-此时注释不会输出;
    - 块注释:与javascript类似,采用//换行即可;
    - 条件注释:
  5. JS代码
    - 不输出的代码:用-符号开始一段不直接输出的代码;
    - 输出的代码: 用=符号开始一段代码;
    - 不转义的输出代码:用!=开始的代码不会被转义;
  6. 变量
    pug文件中变量来源有三种,其内部变量优先级最高,其余两种按命令先后顺序,以后面的为准:
    ①pug文件内部,直接使用,如:-var name='内部变量'
    ②命令行参数:使用--obj参数在命令行中传递,如pug test.pug -P -w --obj "{name:'命令行参数'}"
    ③外部json文件:使用-O 跟随一个文件路径名,如pug test.pug -P -w -O test.json
    - 内容变量:使用=#{}来进行真实变量的替换,如:

         ```
         - var url='baidu.com';
         p | 链接地址为 #{url}
         a(href=url)
         ```
     - 
  7. 条件
    pug的条件语句类似于JavaScipt,不同之处在于不用书写(){}符号;
  8. 循环
    pug目前支持两种主要迭代方式:each和while
    - each:如'each value,index in [1,2,3,4,5]';
    - while:
  9. 混入
    混入允许pug中重复使用一整个代码块、传入参数的方法,同时也支持属性方式传入参数;如:

     ```
         mixin list(name)
             p #{name}
    
         +list(复用1)
         +list(复用2)(class='btn')
     ```
  10. 文件包含
    包含(include)功能允许把另外的文件内容插入进当前文件,如果包含文件为js或css则会当做文本引入如:

    ```
        //- index.html
        doctype html
            html
                include includes/header.pug
                body
                // index.html文件内容
                include includes/footer.pug
    `` `
  11. 文件继承
    - 覆盖:使用blockextends关键字进行模板的继承,一个称之为块的代码块,可以被字模板覆盖替换。该过程是递归的。
    - 扩展:语序去替换(默认的行为),prenpend(向头部添加内容)、或appned(向尾部追加内容)

--end

转载于:https://www.cnblogs.com/hbzyin/p/7752542.html

Pug是一种模板引擎,可用于生成HTML。您可以使用Pug轻松地创建登录注册页面。以下是一个示例代码: ``` doctype html html(lang="en") head title Login/Register Page style. body { background-color: #f2f2f2; font-family: Arial, Helvetica, sans-serif; } .container { background-color: #fff; width: 500px; margin: 0 auto; padding: 20px; border-radius: 5px; box-shadow: 0px 0px 10px rgba(0,0,0,0.2); } h1 { text-align: center; margin-bottom: 30px; } input[type=text], input[type=password] { width: 100%; padding: 12px 20px; margin: 8px 0; display: inline-block; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; } button { background-color: #4CAF50; color: white; padding: 14px 20px; margin: 8px 0; border: none; border-radius: 4px; cursor: pointer; } button:hover { background-color: #45a049; } body .container h1 Login/Register form(action="/login" method="post") label(for="username") Username input(type="text" placeholder="Enter Username" name="username" required) label(for="password") Password input(type="password" placeholder="Enter Password" name="password" required) button(type="submit") Login form(action="/register" method="post") label(for="username") Username input(type="text" placeholder="Enter Username" name="username" required) label(for="password") Password input(type="password" placeholder="Enter Password" name="password" required) label(for="password") Confirm Password input(type="password" placeholder="Confirm Password" name="confirm_password" required) button(type="submit") Register ``` 这段代码使用Pug语法构建了一个登录注册页面。其中,使用了HTML元素和Pug独有的缩进语法。在这个示例中,我们使用了两个表单来实现登录和注册功能。在每个表单中,我们使用了`label`元素和`input`元素来实现表单输入。我们还使用了CSS样式来美化页面。 如果您有任何问题或需要更多帮助,请告诉我。我会尽力回答您的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值