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的更多相关文章

  1. nodejs学习(二) ---- express中使用模板引擎jade

    系列教程,上一节教程  express+nodejs快速创建一个项目 在创建一个项目后,views目录下的文件后缀为 .jade . 打开 index.jade,具体内容如下图(忽略 header.j ...

  2. node.js中的模板引擎jade、handlebars、ejs

    使用node.js的Express脚手架生成项目默认是jade模板引擎,jade引擎实在是太难用了,这么难用还敢设为默认的模板引擎,过分了啊!用handlebars模板引擎写还说的过去,但笔者更愿意使 ...

  3. Express ( MiddleWare/中间件 路由 在 Express 中使用模板引擎 常用API

    A fast, un-opinionated, minimalist web framework for Node.js applications. In general, prefer simply ...

  4. nodeJs学习-09 模板引擎 jade、ejs

    模板引擎: jade -破坏式.侵入式,强依赖:用了之后不能随便用别的引擎 ejs - 温和.非侵入时.弱依赖 jade使用 const jade = require('jade'); var str ...

  5. nodeJs学习-12 consolidate适配各种模板引擎

    const express=require('express'); const static=require('express-static'); const cookieParser=require ...

  6. js 模板引擎 jade使用语法

    Jade是一款高性能简洁易懂的模板引擎,Jade是Haml的Javascript实现,在服务端(NodeJS)及客户端均有支持. 功能 · 客户端支持 · 超强的可读性 · 灵活易用的缩进 · 块扩展 ...

  7. knockoutJS学习笔记02:jsRender模板引擎

    上一篇最后提到了模板,并尝试自己编写一个最简单版本:有些朋友可能用过 jqtmpl,这是一个基于jquery的模板引擎,不过它已经不再更新了,而且据说渲染速度比较慢.这里介绍另外一个模板引擎:jsRe ...

  8. 第115天:Ajax 中artTemplate模板引擎(一)

    一.不分离与分离的比较 1.前后端不分离,以freemarker模板引擎为例,看一下不分离的前后端请求的流程是什么样的? 从上图可以看出,前后端开发人员的工作耦合主要在(3)Template的使用.后 ...

  9. express中ejs模板引擎

    1.在 app.js 中通过以下两个语句设置了 引擎类型 和页面模板的位置: app.set('views', __dirname + '/views'); app.set('view engine' ...

随机推荐

  1. 中文、sci论文写作结构总结

    全文建议:30-40篇参考文献,6-8个图,1-3表,<3000词. 一.题目 1.12~15个词,顶多18个词. 2.6个特点:specific.short.impressive.famili ...

  2. Helix QAC/QAC++—代码静态测试工具介绍—符合功能安全标准MISRA ISO26262

    Helix QAC是静态代码分析工具,依据C和C++编码规则自动扫描代码对规则的违背.开发团队在开发过程的早期就可以用它来检测缺陷,因为此时修改代码是最方便也最经济的.Helix QAC因此自动化强制 ...

  3. python实现对列表的增删查修操作

    #定义一个空列表 list_demo=[] #1,向列表中插入元素 def append_demo(): #第一种使用append,可以在列表末尾添加一个函数 for i in range(2): l ...

  4. fprintfAndFscanf简单操作

    C语言fscanf和fprintf函数的用法详解(格式化读写文件)(代码转载) #include<stdio.h> #define N 2 struct stu{ char name[10 ...

  5. 力扣Leetcode 983. 最低票价

    最低票价 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出.每一项是一个从 1 到 365 的整数. 火车票有三种不同的销 ...

  6. 如何安装CRX格式?Chrome插件离线安装,CRX格式安装方法 JSON-handle Chrome插件下载

    目前,Chrome官方已经禁止非Chrome商店的应用安装了,所以本站的应用还是通过国外服务器从谷歌官方应用市场下载下来的,提供给国内的广大用户使用,下面我们就以 Check my cookies 插 ...

  7. layaair 物理

    box2d http://box2d.org Box2D JS https://sourceforge.net/projects/box2d-js/ Box2D一:基础知识 https://www.c ...

  8. Monkey and Banana(dp,求最长的下降子序列)

    A group of researchers are designing an experiment to test the IQ of a monkey. They will hang a bana ...

  9. Mybatis相关设置

    MyBatis的设置 学习笔记: Mybatis上设置信息可以配置,也可不进型配置,在对Mybatis的setting配置后,会影响到它的运行时行为.以下是相关设置信息的关键字,及所包含的意义: ag ...

  10. 04async await

    async async 函数返回值是一个promise对象,promise对象的状态由async函数的返回值决定   //函数的三种定义 async function hello() { return ...