Simonzhangs' blog Simonzhangs' blog
首页
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • JS设计模式总结
  • 《Vue》
  • 《React》
  • 《TypeScript 从零实现 axios》
  • TypeScript
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • apple music
  • extension
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Simonzhangs

前端学习探索者
首页
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • JS设计模式总结
  • 《Vue》
  • 《React》
  • 《TypeScript 从零实现 axios》
  • TypeScript
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • apple music
  • extension
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 技术文档

  • GitHub技巧

  • Nodejs

    • 《Node教程》笔记
    • Node基础
    • Koa框架基础
    • Nunjucks模板入门
    • nunjucks模板语法
    • 基于koa与nunjucks实现cookie与session
    • nodejs递归读取所有文件
    • moduleexports和exports区别
  • 博客搭建

  • Ajax

  • 计算机网络

  • 计算机编译原理

  • 涨知识

  • 技术
  • Nodejs
simonzhangs
2022-04-01

nunjucks模板语法

# 一、Nunjucks模板语法

在Nunjucks模板入门[/pages/d9664c/],可以通过render方法来指定渲染的模板的基础用法,此外它还可以向模板传递数据,能够展示更丰富的网页效果。

# 二、循环语句

对于多条类型相同的数据,往往会用数组进行存储,通过循环语句可以动态展现数据列表。

服务端数据传递:

router.get('/', async ctx => {
    let studentList = ['xiaomi', 'xiaohong', 'xiaozhang']
    await ctx.render('index',{
        studentList,
    })
})
1
2
3
4
5
6

模板html文件使用循环语句展现数据,可以得到多条数据的列表:

<ul>
    {% for student in studentList %}
    <li>{{ student }}</li>
    {% endfor %}
</ul>
1
2
3
4
5

# 三、分支语句

在网页中,需要判断用户的登陆状态来展现不同的页面;即页面的内容取决于用户的状态,因此可以使用分支语句制作。

服务端将用户是否登陆状态传递给模板:

await ctx.render('index',{
        studentList,
        isLogin:true,
})
1
2
3
4

模板html文件根据状态展现不同内容:

{% if isLogin %}
    <p>欢迎{{ username }}</p>
{% else %}
    <p>请登陆</p>
{% endif %}
1
2
3
4
5

# 四、模板继承

对于网页来说,页面的头部是公用的,都有相同的导航栏,可以用模板继承功能将公共的部分提取出来,这样更有利于代码复用。

首先新建公共部分views/layout.html,

<div>
    <a href="/">首页</a>
    <a href="/images">图片</a>
    <a href="/video">视频</a>
</div>
{% block content %}
{% endblock %}
1
2
3
4
5
6
7

其他要使用layout布局的页面可以直接继承layout布局:

views/index.html:

{% extends './views/layout.html' %}
{% block content %}
    <h1>模板继承</h1>
    <p>{{ title }}</p>
{% endblock %}
1
2
3
4
5

views/images.html

{% extends './views/layout.html' %}
{% block content %}
    <h1>图片页面</h1>
{% endblock %}
1
2
3
4

配置完路由后,点击不同导航,导航栏可以复用。

# 五、include 语法

对于需要复用的页面模板,但是并不是每个页面都需要使用的,可以使用include 语法,在需要引入的页面引入即可。

比如在首页页面引入页脚:

{% extends './views/layout.html' %}
{% block content %}
{% include './views/footer.html' %}
{% endblock %}
1
2
3
4
编辑 (opens new window)
上次更新: 2022/04/01, 21:54:01
Nunjucks模板入门
基于koa与nunjucks实现cookie与session

← Nunjucks模板入门 基于koa与nunjucks实现cookie与session→

最近更新
01
一些有意思的类比
06-16
02
the-super-tiny-compiler解析
06-06
03
计算机编译原理总概
06-06
更多文章>
Theme by Vdoing | Copyright © 2021-2022
蜀ICP备2021023197号-2
Simonzhans | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
  • 飙升榜
  • 新歌榜
  • 云音乐民谣榜
  • 美国Billboard榜
  • UK排行榜周榜