博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript基础学习——pug
阅读量:3916 次
发布时间:2019-05-23

本文共 3747 字,大约阅读时间需要 12 分钟。

一、认识pug

pug 是一个高性能的模板引擎,它是用 JavaScript 实现的,并且可以供 Node 使用。通过一套语法把某一段静态的模板,通过模板引擎将动态的数据替换进去,然后将生成的html交给浏览器去解析和渲染。pug是jade的升级版。

二、pug的特点

  1)超强的可读性

  2)客户端支持
  3)灵活易用的缩进
  4)安全,默认代码是转义的
  5)命令行下编译jade模板
  6)模板继承
  7)块扩展
  8)编译及运行时的上下文错误报告
  9)HTML5模式
  10)可选的内存缓存
  11)联合动态的静态标记类
  12)利用过滤器解析树的处理
  13)没有前缀的标签
  14)原生支持 express 模块

三、pug的安装

1、全局安装。

    npm i pug -g
    npm i pug-cli -g

2、在项目中使用pug,需要局部安装pug。

  首先,创建一个package.json文件。
      npm init -y
  再安装pug,并写入到package.json文件中。
      npm i pug --save-dev
            
四、编译

编译语法:pug pug文件名 -o 目标路径 -P -w

Tips:

-P:编译成非压缩格式

-w:实时监听
            
五、pug基本语法    

1、文档声明

    doctype html

2、标签语法

每层级标签之间都采用多一个缩进表示嵌套关系,无需闭合标签,无需尖括号。

3、属性

4、文本

5、注释

6、安全转义与安全非转义

doctype html html   head     title pug语法  body     p.body.p1.hello 这是段落    ul       li 选项一      li 选项二    div.box box1     div(class='box2') box2     -var cls=true     div(class=cls?'box3':'box4') box3    .box4 box4    input(      type='text'      class="username"      name="username"      id="username"    )    input(type='checkbox',checked)    p(style="color:red;font-size:18px")    h2(style="color:yellow;font-size:20px")    div.foo    .foo.bar     div(class="foo bar")    -var classes=['box1','box2','box3']    div(class=classes)    div.bing(class=classes)    div#box     div(id='box')    .oh     #no     #foo.oh.no     h1 这是一个h1标签    .box hello pug     -var obj={name:'tom'}    p #{obj.name} is a man    -var url='http://www.baidu.com'    a(href=url) 百度一下    p       | hello pug      | hello node      | hello worlds    p.      hello pug      hello node      hello worlds    //注释1    //-注释2

六、条件语句

1、if...else

2、if...else if...else

3、unless

4、case

    

doctype html html   head     meta(charset='utf-8')    title 条件语句  body     //if...else    -var flag =true     if flag       p=flag    else       p=flag     //if...else if.else     -var num=1    if num >1      p 10    else if num==1      p 2    else       p=num    //unless:相当于取反    -var num =3    //表示num不等于10    unless num==10      p this num is #{num}    //case    -var friends =5    case friends       when 0        p nobody       when 1        p one       default         p #{friends}

七、循环语句

for

for...in
while
each

doctype html html   head     meta(charset='utf-8')    title 循环语句  body     //for迭代数组    -var arr=[1,2,3,4]    ul      -for(var i=0;i

八、mixin混合

mixin类似一个函数,可传参也可不传。

定义mixin语法:

            mixin mixin名([形参列表])
                代码块
                
调用mixin语法:
                +mixin名(实参列表)

doctype html html   head     meta(charset='utf-8')    title 循环语句  body     //基本用法    mixin study       p test     +study    //传参    mixin study(name,courses)      p=name       ul.course.box        each course in courses          li=course     +study('zs',['web','pug'])    //代码块    mixin show(time)      h3=time       //判断是否存在block      if block         block       else         p no show     +show('2021-11-11')    //传递属性    mixin attrs(name)      p&attributes(attributes) #{name}    +attrs('attrs')(class='p',id='p')    //列表传递    mixin show(name,...shows)      p=name       ul        each show in shows           li=show     +show('binge','sing','dance','sleep')

九、模板继承

用extends继承父模板,哪个文件继承,就调用哪个文件的block为content的模块。

//-extends继承语法,common为继承的文件extends common block content   mixin fn(name,...shows)    p=name     ul       each show in shows         li=show   +fn('binge','sing','dance','sleep')

common.pug

doctype html html 	head 		title pug模板继承	body 		h1 这是pug父模板的内容		//哪个文件继承,就调用哪个文件的block为content的模块		block content

十、包含(include)

允许在文件中插入另一个文件内容。

extends public block content   //-block  index自身模板  mixin show(name,...shows)    p=name     ul       each show in shows         li=show   +show('binge','sing','dance','sleep')

header.pug

meta(charset='utf-8')title pug模板包含link(rel="stylesheet",href="css/style.css")

public.pug

doctype html html   head     //-引入header.pug     include header   body     h1 pug模板    block content

 

转载地址:http://kbvrn.baihongyu.com/

你可能感兴趣的文章
做权限认证,还不了解IdentityServer4?不二话,赶紧拥抱吧,.NET Core官方推荐!...
查看>>
编写第一个 .NET 微服务
查看>>
深入探究.Net Core Configuration读取配置的优先级
查看>>
Blazor带我重玩前端(六)
查看>>
使用 C# 捕获进程输出
查看>>
数据库单表千万行 LIKE 搜索优化手记
查看>>
.NET Core 中生成验证码
查看>>
.NET Core 中导入导出Excel
查看>>
初识ABP vNext(8):ABP特征管理
查看>>
WPF 消息框 TextBox 绑定新数据时让光标和滚动条跳到最下面
查看>>
【BCVP】实现基于 Redis 的消息队列
查看>>
网络安全逐渐成为程序员的必备技能
查看>>
统信发布UOS V20 进军个人市场 生态日益完善
查看>>
【追加功能】OFFICE插件管理工具重整后再上路,更好用易用。
查看>>
BeetleX框架详解-小结
查看>>
打造钉钉事件分发平台之钉钉审批等事件处理
查看>>
2020 中国开源年会(COSCon'20)再启程:开源向善(Open Source for Good)
查看>>
拥抱.NET 5,从自研微服务框架开始
查看>>
开源特训营 - Lesson 4 - 如何运营社区
查看>>
C# 中的 is 真的是越来越强大,越来越语义化
查看>>