学习篇:NodeJS中的模板引擎:jade
NodeJS 模板引擎作用:生成页面
在node常用的模板引擎一般是
1、jade ——破坏式的、侵入式、强依赖(对原有的html体系不友好,走自己的一套体系)
2、ejs ——温和的、非侵入式的、弱依赖
本次就汇总一下jade的一些特性和使用方法。
一、Jade
在node中,jade的编写特性有:
1、根据缩进,来划分规定层级
例如:在原始目录下建立一个views目录,来存放该 test.jade
html
head
script
style
body
在node.js中来调用该jade(记得先用npm install jade)
const jade = require('jade') ;
var str = jade.renderFile('./views/test.jade' ,{pretty : true }) //pretty : ture 相当于beauty格式化一下输出的代码
console.log(str)
运行一下,log输出的语句便成了
<html>
<head>
<script></script>
<style></style>
</head>
<body>
</body>
</html>
可以看到在nodejs中的jade模板引擎,是根据缩进输入的情况,来划分规定层级的。
当然,如果你想把该代码输出成一个html文件,我们可以在源目录下新建一个build目录来存放生成的文件
那就将刚才的node.js改成
const jade = require('jade');//加载jade引擎
const fs = require('fs')
var str = jade.renderFile('./views/test.jade' ,{pretty : true }); //pretty : ture 相当于beauty格式化一下输出的代码
fs.writeFile('./buuld/index.html' ,str , function(err){
if (err)
console.log("编译失败");
else
console.log("编译成功");
})
执行完毕会在build目录下生成index.html
以上就是jade初级的使用方法。
但是我们使用模板引擎的目的并不是再此,还是能够添加css/js/data等数据。
2、关于class/style的写法——属性放在()里面,用逗号分隔
如:
html
head
script
style
body
div(class=['aaa','bbb','ccc'])
//class也可以写成div(style="aaa bbb ccc")
div(style={width:'200px' ,height:'300px' ,background:'red'})
//style也可以写成div(style="width:200px;xxxx")
运行一下node.js,则输出结果为
<html>
<head>
<script></script>
<style></style>
</head>
<body>
<div class="aaa bbb ccc">
<div style="width:200px;height:300px;background:red"></div>
</body>
</html>
关于上方输出格式,可以发现,style是可以用json传输的,class是可以采用数组传输进去的。
因此可以在node.js中直接插入相关属性数据,然后在jade文件调用,这样就可以很方便的生成不同框架的模板文件
如果你想插入相关属性数据,并调用的话,应当在node.js中的 jade.renderFile中如此添加数据
/
var str = jade.renderFile('./views/test.jade' ,{pretty : true ,
arr:['aaa' ,'bbb' ,'ccc'], cls:{width :'200px' , height:'200px' , background :'red'}
});
并在test.jade文件中修改如下:
html
head
script
style
body
div(class=arr)
div(style=cls})
运行一下,结果是跟刚才的相同
3、在jade标签中输入数据时,记得在相应标签后,加一个空格
我们通常前端编程的时候,一般都会写到
<div>名称:DobTink</div> //在标签内添加“名称:”之类的数据
<div>年龄:15</div>
<script src='a.js'></script>
<script> //或者在jade中编写JavaScript
window.onload = function(){
console.log('测试输出');
}
</script>
<a href="http://www.dobtink.com">首页</a> //编写a标签、img标签给其src赋予属性
///等等
而在jade中,我们需要这样来写
div 名称:DobTink
div 年龄:15
script(src='a.js' ,xx = '')
script. //注意在script后面加个点"."
window.onload = function(){
console.log('测试输出');
}
a(href="http://www.dobtink.com") 首页
执行一下,便如上所示。
4、在jade中使用if else switch while 等语句
有些情况下,我们需要从后天拿取数据,并对数据在jade中进行数据处理操作,而在jade中的 这些语句还是很方便地
代码如下:
4.1 、jade中的 if 使用
html
head
body
-var a = 15;
-if(a%2==0)
div(style={background:'red'}) 偶数
-else
div(style={background:'green'}) 奇数
4.2 、jade中的 switch 使用
html
head
body
-var a = 3;
case a
when 0
div aaa
when 1
div bbb
when 2
div ccc
when 3
div ddd
default
|默认
在jade中,switch是不存在的,被转义成了case,使用方法跟switch一致。
在该段代码中 “|”符号,是直接输出后面数据, "-"号之后的语句,jade会默认为是逻辑执行代码语句,之后的语句它并不会要求每行都需要添加"-"符号。
来源:https://segmentfault.com/a/1190000016281552
学习篇:NodeJS中的模板引擎:jade的更多相关文章
- nodejs学习(二) ---- express中使用模板引擎jade
系列教程,上一节教程 express+nodejs快速创建一个项目 在创建一个项目后,views目录下的文件后缀为 .jade . 打开 index.jade,具体内容如下图(忽略 header.j ...
- node.js中的模板引擎jade、handlebars、ejs
使用node.js的Express脚手架生成项目默认是jade模板引擎,jade引擎实在是太难用了,这么难用还敢设为默认的模板引擎,过分了啊!用handlebars模板引擎写还说的过去,但笔者更愿意使 ...
- Express ( MiddleWare/中间件 路由 在 Express 中使用模板引擎 常用API
A fast, un-opinionated, minimalist web framework for Node.js applications. In general, prefer simply ...
- nodeJs学习-09 模板引擎 jade、ejs
模板引擎: jade -破坏式.侵入式,强依赖:用了之后不能随便用别的引擎 ejs - 温和.非侵入时.弱依赖 jade使用 const jade = require('jade'); var str ...
- nodeJs学习-12 consolidate适配各种模板引擎
const express=require('express'); const static=require('express-static'); const cookieParser=require ...
- js 模板引擎 jade使用语法
Jade是一款高性能简洁易懂的模板引擎,Jade是Haml的Javascript实现,在服务端(NodeJS)及客户端均有支持. 功能 · 客户端支持 · 超强的可读性 · 灵活易用的缩进 · 块扩展 ...
- knockoutJS学习笔记02:jsRender模板引擎
上一篇最后提到了模板,并尝试自己编写一个最简单版本:有些朋友可能用过 jqtmpl,这是一个基于jquery的模板引擎,不过它已经不再更新了,而且据说渲染速度比较慢.这里介绍另外一个模板引擎:jsRe ...
- 第115天:Ajax 中artTemplate模板引擎(一)
一.不分离与分离的比较 1.前后端不分离,以freemarker模板引擎为例,看一下不分离的前后端请求的流程是什么样的? 从上图可以看出,前后端开发人员的工作耦合主要在(3)Template的使用.后 ...
- express中ejs模板引擎
1.在 app.js 中通过以下两个语句设置了 引擎类型 和页面模板的位置: app.set('views', __dirname + '/views'); app.set('view engine' ...
随机推荐
- 基于id3算法根据房价数据进行画图预测python
根据已给的波士顿房价数据,对波斯顿房价进行预测.即,实现给出若干条件(如房间数.社区的低收入阶层的比率和镇上学生与教师数量比例的部分数据),要能说出给出的条件是否能够有效进行预测,如可以做有效预测,则 ...
- C言语--冒泡排序
/* 冒泡排序,从小到大 */ include<stdio.h> int main(void) { int i; int t; int p; int val; int a[6]; for( ...
- ZERO:新手应该如何学习SEO优化
http://www.wocaoseo.com/thread-325-1-1.html 有一个10000小时理论,说是在各行各业,想成为大师级的人物就要付出10000小时的努力,在SEO这边也是如此. ...
- “计数质数”问题的常规思路和Sieve of Eratosthenes算法分析
题目描述 题目来源于 LeetCode 204.计数质数,简单来讲就是求"不超过整数 n 的所有素数个数". 常规思路 一般来讲,我们会先写一个判断 a 是否为素数的 isPrim ...
- 前端修仙之路---一、如何用gulp搭建一套web前端开发框架
引言 相信从事web前端开发的朋友都知道,现在流行的Vue.AngularJS等框架中,它们都有独立的脚手架来创建项目,比如Vue有vue-cli,Angular有angula-cli.脚手架可以一键 ...
- 聊一聊RocketMQ的注册中心NameServer
前言 上次我们一起了解了RocketMQ的基本架构原理,那简单的回顾一下RocketMQ的架构组成. RocketMQ其实包含了四个核心部分,NameServer.Broker.Producer.Co ...
- android尺寸问题(转)
android尺寸问题(转) (2013-01-15 16:55:36) 转载▼ 标签: 杂谈 分类: LINUX 最近公司做的项目中涉及到屏幕自适应的问题.由于做的是电视版的项目,因此屏幕自适应问题 ...
- 广州做假证c
广州做假证[电/薇:187ヘ1184ヘ0909同号]办各类证件-办毕业证-办离婚证,办学位证书,办硕士毕业证,办理文凭学历,办资格证,办房产证不. 这是一个简单的取最大值程序,可以用于处理 i32 数 ...
- 【python开发】迈出第一步,这可能是我唯一一次的Python开发了
好久没写博了,今天就瞎唠唠吧 背景: 组内有个测试平台,是基于Python2+tornado 框架写的,之前自己维护了一套系统的UIweb自动化代码,现在需要集成进去.这很可能是自己唯一一次基于pyt ...
- SpringCloud 服务负载均衡和调用 Ribbon、OpenFeign
1.Ribbon Spring Cloud Ribbon是基于Netflix Ribbon实现的-套客户端―负载均衡的工具. 简单的说,Ribbon是Netlix发布的开源项目,主要功能是提供客户端的 ...