由于版权问题,现已改名pug.但无须担心,几乎没什么区别.就算依然使用jade也不会有太大影响. 慢慢迁移过渡即可

 
  1. # 官网
  2. https://pugjs.org
  3.  
  4. # github
  5. https://github.com/pugjs/pug
  6.  
  7. # 文档地址
    https://pugjs.org/language/inheritance.html
  8.  
  9. # 入门指南
    https://pugjs.org/api/getting-started.html
 

安装pug

 
  1. # 全局安装cli
  2. npm install pug-cli -g
  3.  
  4. # 本地安装
  5. npm install pug --save-dev
 

为了符合大众教材,依然使用jade也无伤大雅

 
  1. # 创建文件夹和文件
  2. mkdir jade-test && touch index.js index.jade
  3.  
  4. # 安装依赖
  5. npm init -y && cnpm install jade --save
  6.  
  7. # 安装全局jade
  8. cnpm install jade -g
 

index.jade

 
  1. .header
  2. h1 #{title}
  3. p
  4. .body
  5. p #{body}
  6. .footer
  7. div #{By}
  8. a(href="http://www.baidu.com/#{author.twitter}") #{author.name}
  9. ul
  10. each tag, index in tags
  11. li #{tag}
 

index.js

 
  1. var jade = require('jade')
  2. var fs = require('fs')
  3.  
  4. var data = {
  5. title : "my title",
  6. author: {
  7. twitter: "@Lee",
  8. name: "Azat"
  9. },
  10. tags: ['express', 'node', 'javascript']
  11. }
  12.  
  13. data.body = process.argv[2]
  14.  
  15. // jade.compile
  16. fs.readFile('index.jade', 'utf-8', function (error, source) {
  17. var template = jade.compile(source);
  18. var html = template(data)
  19. console.log(html);
  20. })
  21.  
  22. // jade.renderFile
  23. jade.renderFile('index.jade', data, function (error, html) {
  24. console.log(html)
  25. })
 

运行jade: node index.js 'email body'

block 和 extends 、append(后) / prepend(前)

  1. # API官方文档
    https://pugjs.org/language/inheritance.html

layout.pug

 
  1. doctype html
  2. html(lang='en')
  3. head
  4. title= appTitle
  5. body
  6. block content
  7. footer
  8. block footer
  9. | © 2009-2017 CyLeeBlog.com 版权所有 ICP证:粤S-172RM
 

index.pug

 
  1. extends ./includes/layout.pug
  2. block content
  3. h1 #{title}
  4. p Welcome to #{title}
  5. block append footer
  6. script
  7. | window.alert('123')
 

login.jade

 
  1. extends ./includes/layout.pug
  2. block content
  3. h1= title
  4. form(method="post")
  5. | 用户名:
  6. input(name="name")
  7. br
  8. | 密码:
  9. input(nane="pwd")
 

运行效果图如下: 可以看到不仅继承了 layout,在 content 块中添加了个性内容, 还成功的往 footer 块中添加了脚本,进一步灵活和个性化:

除了学到 block 和 extendsappend / prepend 的配合使用。还知道了。只要你不是变量,或者说你想以字符串开始。标签的后面必须是“”来声明。才能正常使用字符串或者 Javascript 脚本。而如果是字符串和变量嵌套,则变量需要使用#{变量}的形式书写。非常简单.


使用cli快速编译为html

(注:需要先安装全局pug-cli)

layout.pug

 
  1. doctype html
  2. html(lang='en')
  3. head
  4. title= title
  5. body
  6. h1= title
  7. p Welcome to #{title}
  8. ul
  9. li
  10. a(href="/") home
  11. li
  12. a(href="/login") login
  13. li
  14. a(href="/reg") reg
  15. block content
  16. footer
  17. block footer
  18. | © 2009-2017 CyLeeBlog.com 版权所有 ICP证:粤S-172RM
 

命令行输入:

 
  1. # 查看帮助
  2. pug --help
  3.  
  4. # 编译为html
  5. pug .\layout.pug -p layout.html
  6.  
  7. # 编译并且赋值
  8. pug .\layout.pug -O "{title: 'fuck you'}" .\layout.html
  9.  
  10. # 监听并且实时改变html
  11. pug .\layout.pug -w layout.html
 

if 条件判断

  1. https://pugjs.org/language/conditionals.html

layout.pug

 
  1. doctype html
  2. html(lang='en')
  3. head
  4. title= title
  5. body
  6. h1= title
  7. p Welcome to #{title}
  8. ul
  9. li
  10. a(href="/") home
  11. if user
  12. li
  13. a(href="/login") publish
  14. li
  15. a(href="/reg") logout
  16. else
  17. li
  18. a(href="/login") login
  19. li
  20. a(href="/reg") reg
  21. article
  22. if success
  23. div= success
  24. if error
  25. div= error
  26. block content
  27. footer
  28. block footer
  29. | © 2009-2017 CyLeeBlog.com 版权所有 ICP证:粤S-172RM
 

jade(pug)学习和使用的更多相关文章

  1. jade(pug)学习笔记(待填充.......)

    深刻认识到总结知识点的重要性,不然遇到似曾相识的问题,要翻老半天的百度才能解决.20171018 pug——文字内部嵌入结构 比如: <a class = "href"> ...

  2. pug学习

    pug学习 jade(pug)由于商标版权问题,jade已经改名为Pug.Pug 是一个高性能的模板引擎,它是用 JavaScript 实现的,并且可以供 Node 使用,当然还支持其他语言. 文件后 ...

  3. Jade入门学习笔记

    jade是超高性能的node JavaScript模板引擎,有着非常强大的API和大量杰出的特性.它主要针对node的服务端.由于商标的原因,改为Pug,哈巴狗.Pug有它本身的缺点--可移植性差,调 ...

  4. [Pug] Template Engine -- Jade/ Pug

    Looking at the follow code: .wrapper - const upName = name && name.toUpperCase(); h2 | Hello ...

  5. flag - 待浏览学习网站

    学习:gulp+jade(pug)+sass 待浏览网站如下:http://www.ydcss.com/archives/18#lesson1 https://nodejs.org/en/ https ...

  6. 7、 jade 、 ejs、express集成模板

    jade/ejs 模板引擎 http://jade-lang.com/ http://www.nooong.com/docs/jade_chinese.htm SSR 服务器端渲染 服务器生成html ...

  7. Express全系列教程之(十):jade模板引擎

    一.前言 随着前端业务的不断发展,页面交互逻辑的不断提高,让数据和界面实现分离渐渐被提了出来.JavaScript的MVC思想也流行了起来,在这种背景下,基于node.js的模板引擎也随之出现. 什么 ...

  8. nodeJS学习(3)--- npm 配置和安装 express4.X 遇到的问题及解决

    前言:懒得看前面两篇介绍的也可以从本节直接参考,但建议最好了解下,因为 4.X 的express 已经把命令行工具分离出来 (链接https://github.com/expressjs/genera ...

  9. vscode 配置 Pug Compile Hero Pro 插件步骤

    这个随笔主要介绍 vscode 配置 Pug Compile Hero Pro 插件的步骤,实现快速使用less 以及 scss 等的编程语言 第一步 当然是安装我们的插件啦! 在插件商店里 搜 Sa ...

  10. Express全系列教程之(一):Express的安装 和第一个程序

    前言 ndoe.js,一个基于javsscript运行环境的服务器语言,它的出现使得javascript有能力去实现服务器操作.在gitHub上ndoe.js的star数已接近6万,可见其受欢迎程度: ...

随机推荐

  1. Zookeeper3.4.10 + ActiveMQ-5.15.0 集群搭建

    网上的教程真的是凤毛麟角,就不想说啥了,一次一次把我带入坑. 好了关于Zookeeper的搭建已经说好了,本文说说基于Zookeeper的MQ集群. 第一步.将mq安装包上传到CentOS7,并解压 ...

  2. Codeforces Round #419 (Div. 2)(B)差分数组

    传送门:Problem B https://www.cnblogs.com/violet-acmer/p/9721160.html 题意: Karen有n个关于煮咖啡的食谱,每个食谱都有个煮咖啡的最适 ...

  3. Shell脚本编写及常见面试题

      注意事项 1)开头加解释器:#!/bin/bash 2)语法缩进,使用四个空格:多加注释说明. 3)命名建议规则:变量名大写.局部变量小写,函数名小写,名字体现出实际作用. 4)默认变量是全局的, ...

  4. list 删除一个元素的三种做法--python

    我们以一个字符串为元素类型的 list 为例,进行列表元素的删除: l = ['no surfing', 'flippers'] 法一:remove(val) >>> l.remov ...

  5. Hadoop生态圈-CDH与HUE使用案例

    Hadoop生态圈-CDH与HUE使用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HUE的介绍 1>.HUE的由来 HUE全称是HadoopUser Experi ...

  6. 数据库sql语句例题(转)

    SQL数据库面试题以及答案(50例题) Student(S#,Sname,Sage,Ssex)学生表 S#:学号 Sname:学生姓名 Sage:学生年龄 Ssex:学生性别 Course(C#,Cn ...

  7. PHP7 学习笔记(四)PHP PSR-4 Autoloader 自动加载

    参考文献: 1.PHP PSR-4 Autoloader 自动加载(中文版) 2.PHP编码规范(中文版)导读 3.PHP-PSR-[0-4]代码规范 基本步骤: (1)在vendor 下新建一个项目 ...

  8. springboot使用elasticsearch报No property index found for type错误

    一.前提:项目之前使用springboot+spring-data-mongodb.现在需要加入elasticsearch做搜索引擎,这样mongo和elasticsearch共存了. 二.报错信息: ...

  9. day1 查看当前目录命令:pwd

    用到查看当前目录的完整路径使用:pwd 物理路径和连接路径什么鬼?没明白暂时借鉴别人的记录下 显示当前目录的物理路径 pwd –P 1: [root@DB-Server init.d]# cd /et ...

  10. java生成TXT

    1.由于公司需要生成如下格式TXT: var ovr_parameters={ "changeMainVideoList": [ ], "indexList": ...