NunJucks模板引擎

NunJucks中文文档

模板引擎有很多,我之前就曾用过ejs,都是对页面进行渲染.接下来带大家简单体验一下Nunjucks。真别说,插值语法有点vue的那股味道了。

初试NunJucks模板引擎

  1. 先创建项目文件夹nunjucksExprice
  2. 初始化项目文件
npm init -y
  1. 引入NumJucks

提示

终端输入

npm install nunjucks

等待安装完成后,我们在安装express.js,来搭建一个服务器。

  1. 引入express.js
npm install express
  1. 创建视图文件夹view
  2. 在视图文件夹中创建index.html文件
  3. 创建项目入口文件index.js
  4. 使用express创建服务器
const express = require("express")
const app = express()app.listen('80', () => {console.log('express is running at http://127.0.0.1/');
})

一个简单的服务器就创建好了。

  1. 在入口文件中引入nunjucks,并使用node.js自带的path模块设置模板路径。
const express = require("express")
const nunjucks = require("nunjucks")
const path = require("path")
const app = express()//设置模板存储位置
app.set("view", path.join(__dirname, "view"))
//设置模板引擎
nunjucks.configure("view", {autoescape: true,  //是否自动匹配express: app
})
//设置视图引擎
app.set("view engine", "html")//设置路由,进行页面渲染
app.get("/", (req, res) => {res.render("index")
})app.listen('80', () => {console.log('express is running at http://127.0.0.1/');
})

上面的代码也可以这样写,这两种写法是等价的,唯一不同的区别在于一个设置了视图引擎,所以在渲染页面的时候不用加.html后缀,一个没有设置,就需要加上.html后缀,否则模板引擎找不到页面。

const express = require("express")
const nunjucks = require("nunjucks")
const path = require("path")
const app = express()//设置模板存储位置
app.set("view", path.join(__dirname, "view"))
//设置模板引擎
nunjucks.configure("view", {autoescape: true,  //是否自动匹配express: app
})app.get("/", (req, res) => {res.render("index.html")
})app.listen('80', () => {console.log('express is running at http://127.0.0.1/');
})

功能小试

接下来和我一起了解一下NumJucks的使用方法吧。

ejs一样,NumJucks在渲染页面的时候也可以传值(key:value)的形式。

传递变量

我们创建一个变量str

str = 'Word'
app.get("/", (req, res) => {res.render("index.html",{str})
})

str:ES6语法,键值一样写一个就行。

在页面中这样使用

{{str}}

循环遍历

我们创建一个数组

let list = ['橘子', '桃子', '西瓜']app.get("/", (req, res) => {res.render("index.html",{list})
})

在页面中这样使用

  <ul>{% for item in list%}<li>{{item}}</li>{% endfor %}</ul>

可以看到它的使用方式不再和ejs一样,ejs的模板语法为<%%>,这里要稍加区分。

同时在循环结尾处,必须要有 {% endfor %}

我们创建一个对象数组

var items = [{ name: '张三', age: 20 }, { name: '王五', age: 19 }]

在页面中这样使用

  <ul>{% for item in items%}<ol>{{item.name}} - {{item['age']}}</ol>{% endfor%}</ul>

判断

我们创建一个布尔类型变量

var  isDelete = trueapp.get("/", (req, res) => {res.render("index.html",{isDelete})
})

在页面中这样使用

  {% if isDelete %}<h3>欢迎登陆</h3>{% else %}<h3>请登陆</h3>{% endif %}

同样,{%endif%} 也是不可缺少的。

因为isDelete的值是true,那么页面会显示"欢迎登陆"

输出效果

项目目录

这里就带大家体验了平时开发中比较常用的功能了,更多用法请到官方文档查阅。我已经放到本文首了,方便大家查阅。

小试牛刀之NunJucks模板引擎相关推荐

  1. http+nunjucks模板引擎、koa+nunjucks模板引擎

    模板引擎 模板引擎:模板引擎是web应用中动态生成html的工具,负责将数据和模板结合. 常见模板引擎有:ejs.jade(现更名为pug).Handlebars.Nunjucks.Swig等: 使用 ...

  2. Node.js(二)——pug模板引擎,nunjucks模板引擎,在koa中使用pug和nunjucks模板引擎

    目录 1.知识点及课堂目标 2.模板引擎 3.pug模板引擎使用 3.1安装pug 3.2pug常用语法 3.2.1通过缩进关系,代替以往html的层级包含关系. 3.2.2html 元素属性/sty ...

  3. nunjucks 模板引擎常用语法学习总结

    文章目录 nunjucks模板引擎 nunjucks模板注释 koa-nunjucks-2的使用 nunjucks 插值语法 nunjucks 的判断语句 nunjucks 的循环语句 nunjuck ...

  4. Nunjucks模板入门

    一.为什么要用Nunjucks? 我们上节课设置页面内容时,是用模板字符串来写的,但是内容多的时候,这样就不好看,也不方便. 二.安装 1.koa-views:告诉计算机,要用哪个模板引擎 2.nun ...

  5. Node——Nunjucks模板入门

    一.模板引擎概述 之前我们通过Koa创建了一个web服务器,并可以根据用户请求路径的不同响应不同的页面,但是每一个页面的内容都是通过字符串的方式给送给浏览器的,这样的开发方式并不友好,我们更希望直接发 ...

  6. Node-05Nunjucks模板引擎

    1.Nunjucks概述 在之前的例子中 直接在此处写html并不友好,这里需要使用模板引擎直接设置并响应整个html文件,并可以将后台数据绑定到模板中,在发送回客户端,本例选择Nunjucks模板引 ...

  7. js模板引擎Nunjucks

    js模板引擎Nunjucks Nunjucks中文文档

  8. thinkjs能在浏览器html文件,thinkjs框架的默认模板引擎Nunjucks的中文文档

    Node 端使用 $ npm install nunjucks 0 $npminstallnunjucks 下载后可直接 require('nunjucks') 使用 浏览器端使用 可直接使用 nun ...

  9. 说说如何用JavaScript实现一个模板引擎

    前言 不知不觉就很长时间没造过什么轮子了,以前一直想自己实现一个模板引擎,只是没付诸于行动,最近终于在业余时间里抽了点时间写了一下.因为我们的项目大部分用的是 swig 或者 nunjucks ,于是 ...

最新文章

  1. Jmeter使用jp@gc-stepping thread group做性能测试
  2. javaweb设置servlet
  3. vue 多层双层全选_vue多级复杂列表展开/折叠及全选/分组全选实现
  4. 模板类可以使用虚函数,模板函数不能是虚函数
  5. leetcode刷题实录:3
  6. Linux C: 为什么C都必须有一个main函数
  7. 如何在64位WIN7下安装64位的解压版mysql-5.6.37-winx64.zip
  8. java 解析 manifest_解析AndroidManifest.xml之AXMLParser.java | 学步园
  9. Z-BlogPHP导航主题模版源码 绿色完美版
  10. python作用域顺序排列_详解Python函数作用域的LEGB顺序
  11. SpringCloud工作笔记051---SpringCloud打包部署流程
  12. Java中根据URL下载gif图片文件
  13. angular 生命周期钩子 ngOnInit() 和 ngAfterViewInit() 的区别
  14. 浅析EL表达式注入漏洞
  15. C#与Halcon联合编程之如何使Halcon窗口显示的图片适应窗口控件的大小
  16. 网络爬虫爬取时,被封的原因以及防止被封IP策略
  17. 选型笔记之二极管选型
  18. iframe嵌入网页的用法
  19. 女程序员再漂亮也是单身?解析程序员圈的奇怪现象
  20. 简易的应变测量系统实现(一) 直流放大器

热门文章

  1. AndroidStudio导入/第一次新建项目gradle版本错误或者卡住解决方法
  2. MySQL中强大的mysqladmin
  3. yolo模型是什么神经网络,yolo是卷积神经网络吗
  4. 牛客-判断一个链表是否为回文结构
  5. 抽象类和接口不能直接实例?
  6. office 论文 页码_毕业论文word里面怎么弄以下这些页码?第一页不显示。 第二三页是I II ,四页开始以下是1234。求详细方法...
  7. 计算机面试(考研复试)问题整理
  8. 预告:年度乘用车前装超声波雷达市场,哪些供应商表现抢眼
  9. 【面试题】概率题总结(随机数、抛硬币)
  10. 使用ArcGIS API和Three.js在三维场景中实现动态立体墙效果