node前端模板引擎Jade之标签的基本写法


Posted in Javascript onMay 11, 2018

1、文档声明

我们在开始写一个 html 页面的时候,首先要写上 DOCTYPE 文档声明的,现在通常情况下我们都是采用 HTML5 的文档声明方式,那么在 jade 里面我们应该怎么写呢?

在 jade 里面编写文档声明有2种方式:

  1. 我们可以直接在 jade 文件里面写 doctype html 即可
  2. jade 为我们提供了一个简单的写法,(不过好像 jade 在升级之后的新版本中不推荐使用此方法了 -_-||| )

当然,jade 还默认支持其他类型的文档声明,只需要使用 doctype 跟上下面的选项即可。jade 默认支持的有:

var doctypes = exports.doctypes = {
 '5': '<!DOCTYPE html>',
 'xml': '<?xml version="1.0" encoding="utf-8" ?>',
 'default': '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
 'transitional': '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
 'strict': '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
 'frameset': '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">',
 '1.1': '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">',
 'basic': '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">',
 'mobile': '<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">'
};

doctype 对大小写是不敏感的, 所以下面两个是一样的效果:

doctype Default
doctype default

例如:如果我们要想写 XHTML 1.0 Strict 文档声明,则可以这样写:

doctype strict

编译结果如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

2、标签

jade 中的标签的写法非常的简单,就是一个单词。

doctype html
html
 head
 title
 body

以上代码会被编译成:

<!DOCTYPE html>
<html>
 <head>
 <title></title>
 </head>
 <body></body>
</html>

jade 是以严格的缩进来区分标签的开始和结束的,默认为2个空格表示缩进。

如果我们要写一个标签并且带有内容,比如说要写一个标题,我们只需要在标签单词后面加一个空格,然后跟上内容即可。

h1 this is a title.
p this is a paragraph.

编译结果为:

 <h1>this is a title.</h1>
 <p>this is a paragraph.</p>

有的时候,我们会需要输出一些特殊排版格式的文本或者是为了提高代码的阅读性,需要显示出如下的效果:

<p>
  1. 001
  2. 002
  3. 003
  4. 004
</p>

那么我们在 jade 中应该怎么写呢,这里 jade 给我们提供了两种方式,第一种是在每一行前面加上一个 | 和空格:

p
 | 1. 001
 | 2. 002
 | 3. 003
 | 4. 004

第二种方法是:在标签名后面紧跟一个 . 号。则此标签下面的内容会被 jade 解析为一个代码段:

p.
 1. 001
 2. 002
 3. 003
 4. 004

这下有的同学就傻傻分不清了,这两种方式到底有什么区别呢?这里我们就不得不说到标签混排,如果我们有这样一个需求,在上面的代码中 1 的后面需要加一个 strong 标签。

首先我们说第一种情况下,我们的写法:

p
 | 1. 001
 strong aaa
 | 2. 002
 | 3. 003
 | 4. 004

如果是第二种写法的话,我们就需要这样写:

p.
 1. 001
 <strong>aaa</strong>
 2. 002
 3. 003
 4. 004

编译结果如下:

<p>
  1. 001
  <strong>aaa</strong>
  2. 002
  3. 003
  4. 004
</p>

3、标签的属性和属性值

h1 p 等等这些标签,我们通常都会给他们写上id & class属性的,那么这在 jade 中应该怎么写呢?和 zen coding 的语法一样,我们只需要这样写:

h1#id.class this is a title.
p#j-text.text this is a paragraph.

编译结果为:

<h1 id="id" class="class">this is a title.</h1>
<p id="j-text" class="text">this is a paragraph.</p>

等等,那我要是想添加多个 class 怎么办呢?这样办:

h1#id.class1.class2.class3 this is a title.
p#j-text.text this is a paragraph.

编译结果为:

<h1 id="id" class="class1 class2 class3">this is a title.</h1>
<p id="j-text" class="text">this is a paragraph.</p>

什么?写 div 写烦了?那就不写咯。

#id.class
#id.class1.class2 this is a div without tags.

编译结果为:

<div id="id" class="class"></div>
<div id="id" class="class1 class2">this is a div without tags.</div>

这里要说明一下,在 jade 的语法里面,只有 div 标签能够省略不写.

说完了 id 和 class,我们再来说一下标签其他的属性应该怎么添加。jade 里添加其他属性和值的语法也和 zen coding 类似,我们需要在标签后面加上小括号(),然后按照(属性名=属性值)的格式写就好了,如果有多个属性,中间以逗号进行分割。

比如上面的 id 和 class 的写法我们就可以改写成:

h1(id="id", class="class") this is a title.
p(id="j-text", class="text") this is a paragraph.

结果是一样的:

<h1 id="id" class="class">this is a title.</h1>
<p id="j-text" class="text">this is a paragraph.</p>

说来说去还是这两个属性,烦了?那我们换一个吧:

a(herf="/index.html", title="this is a link.", target="_blank", data-uid="1000") index.html

编译结果为:

<a herf="/index.html" title="this is a link." target="_blank" data-uid="1000">index.html</a>

那么问题就来了,如果我们要写一个单属性应该怎么写?比如给表单元素添加 checked属性:

input(type="checkbox", name="all", checked, value="全选")

编译结果为:

<input type="checkbox" name="all" checked="checked" value="全选"/>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery前台数据获取实现代码
Mar 16 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
Apr 12 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
Nov 23 Javascript
js返回上一页并刷新的多种实现方法
Feb 26 Javascript
浏览器窗口加载和大小改变事件示例
Feb 27 Javascript
Node.js重新刷新session过期时间的方法
Feb 04 Javascript
基于AngularJS前端云组件最佳实践
Oct 20 Javascript
js微信支付实现代码
Dec 22 Javascript
jQuery扩展_动力节点Java学院整理
Jul 05 jQuery
微信小程序 循环及嵌套循环的使用总结
Sep 26 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
Aug 19 Javascript
wx-charts 微信小程序图表插件的具体使用
Aug 18 Javascript
JS实现的简单下拉框联动功能示例
May 11 #Javascript
JS实现table表格内针对某列内容进行即时搜索筛选功能
May 11 #Javascript
node前端开发模板引擎Jade的入门
May 11 #Javascript
Node.js 使用jade模板引擎的示例
May 11 #Javascript
Node.js Express安装与使用教程
May 11 #Javascript
Node.js创建HTTP文件服务器的使用示例
May 11 #Javascript
Node.js引入UIBootstrap的方法示例
May 11 #Javascript
You might like
PHP简单系统查询模块代码打包下载
2008/06/07 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
php使用Jpgraph创建3D饼形图效果示例
2017/02/15 PHP
js jquery做的图片连续滚动代码
2008/01/06 Javascript
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
解决vue项目使用font-awesome,build后路径的问题
2018/09/01 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
Python是编译运行的验证方法
2015/01/30 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
python 默认参数相关知识详解
2019/09/18 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
新东网科技Java笔试题
2012/07/13 面试题
群众路线自我剖析材料
2014/10/08 职场文书
上诉状格式
2015/05/23 职场文书
二胎满月酒致辞
2015/07/29 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers