[Pug] Template Engine -- Jade/ Pug
Looking at the follow code:
.wrapper
- const upName = name && name.toUpperCase();
h2
| Hello #{name.toUpperCase()}
| Welcome, #{upName}
em How are you? img.img(src="none.jpg" alt=`Dog ${age}`)
1. .wapper: div with wrapper class
div.wrapper
By defualt it consider as div class if you don't wirte div, just give a class name.
2. Define javascript variable:
- const upName = name && name.toUpperCase();
3. Write content is different line:
h2
| Hello #{name.toUpperCase()}
| Welcome, #{upName}
Using '|' we can write content in diffferent line, but it still display in the same line on the interface.
4. Mixin Javascript:
| Hello #{name.toUpperCase()}
| Welcome, #{upName}
5. Attr:
img.img(src="none.jpg" alt=`Dog ${age}`)
6. Write Javascript inside attr:
alt=`Dog ${age}`
7. Define a main layout file with some 'block' placeholder:
doctype html
html
head
title= `${title} | ${h.siteName}`
link(rel='stylesheet', href='/dist/style.css')
link(rel="shortcut icon" type="image/png" href="/images/icons/doughnut.png")
meta(name="viewport" content="width=device-width, initial-scale=1")
body
block header
header.top
nav.nav
.nav__section.nav__section--pages
li.nav__item
a.nav__link.nav__link--logo(href="/")
!= h.icon('logo')
each item in h.menu
li.nav__item
a.nav__link(href=item.slug, class=(currentPath.startsWith(item.slug) ? 'nav__link--active' : ''))
!= h.icon(item.icon)
span #{item.title}
.nav__section.nav__section--search
.search
input.search__input(type="text" placeholder="Coffee, beer..." name="search")
.search__results
.nav__section.nav__section--user
if user
li.nav__item: a.nav__link(href="/hearts", class=(currentPath.startsWith('/hearts') ? 'nav__link--active' : ''))
!= h.icon('heart')
span.heart-count #{user.hearts && user.hearts.length}
li.nav__item: a.nav__link(href="/logout", class=(currentPath.startsWith('/logout') ? 'nav__link--active' : ''))
!= h.icon('logout')
span Logout
li.nav__item: a.nav__link(href="/account", class=(currentPath.startsWith('/account') ? 'nav__link--active' : ''))
img.avatar(src=user.gravatar + 'd=retro')
else
li.nav__item: a.nav__link(href="/register", class=(currentPath.startsWith('/register') ? 'nav__link--active' : '')) Register
li.nav__item: a.nav__link(href="/login", class=(currentPath.startsWith('/login') ? 'nav__link--active' : '')) Log In block messages
if locals.flashes
.inner
.flash-messages
- const categories = Object.keys(locals.flashes)
each category in categories
each message in flashes[category]
.flash(class=`flash--${category}`)
p.flash__text!= message
button.flash__remove(onClick="this.parentElement.remove()") ×
.content
block content block scripts
script(src=`https://maps.googleapis.com/maps/api/js?key=${process.env.MAP_KEY}&libraries=places`)
script(src="/dist/App.bundle.js")
Inside the layout.pug, you can see many 'block', it will use whatever you write under 'block' as default value, and later you can pass the content to replace the default value.
8. Extends main layout and override 'block':
extends layout block content
p Hello
Now the 'block content' in layout.pug will be overrided with 'p Hello'.
[Pug] Template Engine -- Jade/ Pug的更多相关文章
- Vue最常用的组件通讯有三种:父->子组件通讯、子->父组件通讯,兄弟组件通讯.(template用的pug模板语法)
Vue组件通讯 Vue最常用的组件通讯有三种:父->子组件通讯.子->父组件通讯,兄弟组件通讯.(template用的pug模板语法) 1.父->子组件通讯 父->子组件通 ...
- The template engine
Play has an efficient templating system which allows to dynamically generate HTML, XML, JSON or any ...
- 如何选择Javascript模板引擎(javascript template engine)?
译者 jjfat 日期:2012-9-17 来源: GBin1.com 随着前端开发的密集度越来越高,Ajax和JSON的使用越来越频繁,大家肯定免不了在前台开发中大量的使用标签,常见到的例子如下: ...
- [PowerShell]template engine
今天讨论的是如何在Powershell里实现一个简单的Template Engine的功能. 假设模板文件的内容如下:template.tt hello $name welcome $company ...
- JFinal Template Engine 使用
官方文档:JFinal Template Engine 文档
- jade(pug)学习笔记(待填充.......)
深刻认识到总结知识点的重要性,不然遇到似曾相识的问题,要翻老半天的百度才能解决.20171018 pug——文字内部嵌入结构 比如: <a class = "href"> ...
- 【Reship】use of tangible T4 template engine
1.first of all 之前在 “使用T4模板生成代码 – 初探” 文章简单的使用了T4模板的生成功能,但对于一个模板生成多个实例文件,如何实现这个方式呢?无意发现一个解决方案 “Multipl ...
- 最近兰州的js风格写个插件和一个template engine
/* *@Product Name: Rational Framework Author: Calos Description: pager !important: pager */ (functio ...
- Js template engine
P http://www.jquery4u.com/javascript/10-javascript-jquery-templates-engines/ http://www.creativebloq ...
随机推荐
- LuoguP4012 深海机器人问题(费用流)
题目描述 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生物标本.沿途生 ...
- area热点区域
<area>标记:主要用于图像地图,通过该标记可以在图像地图中设定作用区域(又称为热点),这样当用户的鼠标移到指定的作用区域点击时,会自动链接到预先设定好的页面.其基本语法结构如下: &l ...
- angular 子组件与父组件通讯
1. 子组件app-sidebar.compnent.html (click)="goProject()"设置点击事件 <mat-list-item [routerLink] ...
- Redmine安装
http://www.itnpc.com/news/web/146433249372595.html http://www.cnblogs.com/iluzhiyong/p/redmine.html ...
- Leetcode:populating_next_right_pointers_in_each_node题解
一. 题目 对于结构体:struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } ...
- curl如何发起DELETE/PUT请求
curl如何发起DELETE/PUT请求 DELETE: curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); PUT: curl_setopt($ch ...
- 前端面试题(webpack)
(前端面试题大全,持续更新) webpack3升级到4为什么会提升速度? webpack优化有哪些? webpack的css-loader原理讲一下 webpack压缩js css的方法
- python,寻找班级里面名字最长的人
寻找班级里面名字最长的人 我有一串字符串人名:names=(' Kunpen Ji, Li XIAO, Caron Li,' ' Dongjian SHI, Ji ZHAO, Fia YUAN Y,' ...
- app 自动化测试 Appium+Java可以运行的代码
地址:http://www.cnblogs.com/sunny-sl/p/6520465.html
- 浅析C#组件编程中的一些小细节
控件与组件的区别(Control&Component的区别) 作者:作者不详 发布日期:2011-06-30 12:08:41 控件与组件的区别(Control&Component的 ...