koa2使用ejs和nunjucks作为模板引擎的使用
一、使用 ejs 作为模板引擎
koa2 如果使用 ejs、jade 这种作为模板引擎的话,直接使用 koa-views 进行模板加载即可。
比如使用 ejs :
安装:
yarn add koa-views ejs
使用:
在使用 render 的时候,需要进行异步文件模板读取,因此 ctx.render 需要使用 await
const app= require('koa')(); const koaViews= require('koa-views'); const path = require('path'); app.use(koaViews(path.join(__dirname, './view'), { extension: 'ejs' })); app.use( async ( ctx ) => { const title = "postbird"; await ctx.render('index', { title }); }); app.listen(3000)
二、使用 nunjucks 作为模板引擎
我实在是讨厌 ejs 的模板引擎语法,觉得太弱也太麻烦,而且新版本中,去除了模板继承,很不方便。
我比较喜欢 nunjucks ,另外我发现了一个 aui-template 的模板引擎,语法使用起来很舒服,速度也很快,可以体验一下。
aui-template 文档地址:
http://aui.github.io/art-template/zh-cn/docs/
1、安装 koa-nunjucks-2
使用 nunjucks 作为模板引擎,不需要安装 koa-views。
并且可以借助别人封装好的中间件 koa-nunjucks-2 来实现,koa-nunjucks 这个名字已经被使用,但是作为很烂,也没维护。
有时间我会看看他的源码,怎么加载的 nunjucks
yarn add koa-nunjucks-2
2、使用 nunjucks
const koaNunjucks = require('koa-nunjucks-2'); app.use(koaNunjucks({ ext: 'njk', path: path.join(__dirname, './views'), nunjucksConfig: { trimBlocks: true } }));
3、渲染模板
同样,异步文件读取,需要使用 await 。
router.get('view', async (ctx) => { var food = { 'ketchup': '5 tbsp', 'mustard': '1 tbsp', 'pickle': '0 tbsp' }; await ctx.render('index',{title:'nunjucks',food}); });
4、模板语法
更多的语法可以看文档:
https://mozilla.github.io/nunjucks/cn/templating.html#for
<body> <h1>{{title}}</h1> <p>循环:</p> <ul> {% for key,value in food %} <li>{{key}} - {{value}}</li> {%endfor%} </ul> </body>
三、效果
四、问题
在使用 koa-nunjucks-2
的时候,发现一个问题:
app.use(nunjucks({}))
必须放在 app.use(router.routes()).use(router.allowedMethods())
前面才能起作用,否则会报错 ctx.render()
不是一个 function。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
JavaScript构建自己的模板小引擎示例
本文实例讲述了JavaScript构建自己的模板小引擎.分享给大家供大家参考,具体如下: 有时候,我们不需要太牛逼太强大的JavaScript模板引擎(比如jQuery tmpl或者handlebarsjs),我们只是需要在简单的模板里绑定一些非常简单的字段,本文将使用非常简单的技巧来帮你实现这个小功能. 首先我们先来定义我们需要的模板,在id为template的script块里: HTML部分: <!doctype html> <html> <head> <me
-
template.js前端模板引擎使用详解
本文介绍了template.js前端模板引擎使用,分享给大家,具体如下: 下载地址:https://github.com/yanhaijing/template.js 作者编写的文档:https://github.com/yanhaijing/template.js/blob/master/README.md 源码学习 默认的开始标签和结束标签分别是: sTag: '<%',//开始标签,可以重写,我项目中使用的是<: eTag: '%>',//结束标签,我项目中使用的是:> 快速
-
常用的JavaScript模板引擎介绍
最近工作内容慢慢接近我的理想化(web前端),所以关注比较多的是前端性能!后台同事介绍使用ajax模板引擎,提高渲染速度! 下面介绍几款 JavaScript 模板引擎 1. Mustache 基于javascript 实现的模板引擎,类似于 Microsoft's jQuery template plugin,但更简单易用! 2. doT.js doT.js 包含为浏览器和Node.js 准备的 JavaScript 模板引擎. 3. jSmart jSmart 是著名的 PHP 模板引擎 S
-
教你使用javascript简单写一个页面模板引擎
于是我又想着能不能写一些简单的代码来完善这个模板引擎,又能与其它现有的逻辑协同工作.AbsurdJS本身主要是以NodeJS的模块的形式发布的,不过它也会发布客户端版本.考虑到这些,我就不能直接使用现有的引擎了,因为它们大部分都是在NodeJS上运行的,而不能跑在浏览器上.我需要的是一个小巧的,纯粹以Javascript编写的东西,能够直接运行在浏览器上.当我某天偶然发现John Resig的这篇博客,我惊喜地发现,这不正是我苦苦寻找的东西嘛!我稍稍做了一些修改,代码行数差不多20行左右.其中的
-
详解Javascript模板引擎mustache.js
本文总结它的使用方法和一些使用心得,内容不算很高深,纯粹是入门内容,看看即可.不过要是你还没有用过此类的javascript引擎库,那么本文还是值得你一读的,相信在你了解完它强大的功能和简单用法之后,一定会迫不及待地将之用于你的工作当中. 1. 从一个简单真实的需求讲起 目前公司做了一个统一的开发平台,后台封装了MVC的接口和数据增删改查的接口,前端我自己用bootstrap+手写各类组件的方式弄了一套开发框架:集成了CAS,在CAS的基础上,首先做了一套统一权限管理系统,这个系统是我们开发平台
-
JavaScript模板引擎用法实例
本文实例讲述了JavaScript模板引擎用法.分享给大家供大家参考.具体如下: 这里介绍的这个模板引擎写得短小精悍,非常值得一看 tmpl.js文件如下: // Simple JavaScript Templating // John Resig - http://ejohn.org/ - MIT Licensed (function() { var cache = {}; this.tmpl = function tmpl(str, data) { // Figure out if we'r
-
JavaScript模板引擎Template.js使用详解
template.js 一款 JavaScript 模板引擎,简单,好用.提供一套模板语法,用户可以写一个模板区块,每次根据传入的数据,生成对应数据产生的HTML片段,渲染不同的效果.https://github.com/aui/artTemplate 1.特性 (1).性能卓越,执行速度通常是 Mustache 与 tmpl 的 20 多倍(性能测试)(2).支持运行时调试,可精确定位异常模板所在语句(演示) (3).对 NodeJS Express 友好支持(4).安全,默认对输出进行转义.
-
javascript轻量级模板引擎juicer使用指南
使用方法 编译模板并根据数据立即渲染出结果 juicer(tpl, data); 仅编译模板暂不渲染,返回一个可重用的编译后的函数 var compiled_tpl = juicer(tpl); 根据给定的数据对之前编译好的模板进行渲染 var complied_tpl = juicer(tpl); var html = complied_tpl.render(data); 注册/注销自定义函数(对象) juicer.register('function_name', function); ju
-
JavaScript模板引擎应用场景及实现原理详解
本文实例讲述了JavaScript模板引擎应用场景及实现原理.分享给大家供大家参考,具体如下: 一.应用场景 以下应用场景可以使用模板引擎: 1.如果你有动态ajax请求数据并需要封装成视图展现给用户,想要提高自己的工作效率. 2.如果你是拼串族或者数组push族,迫切的希望改变现有的书写方式. 3.如果你在页面布局中,存在共性模块和布局,你可以提取出公共模板,减少维护的数量. 二.实现原理 不同模板间实现原理大同小异,各有优缺,请按需选择,以下示例以artTemplate模板引擎来分析. 2.
-
koa2使用ejs和nunjucks作为模板引擎的使用
一.使用 ejs 作为模板引擎 koa2 如果使用 ejs.jade 这种作为模板引擎的话,直接使用 koa-views 进行模板加载即可. 比如使用 ejs : 安装: yarn add koa-views ejs 使用: 在使用 render 的时候,需要进行异步文件模板读取,因此 ctx.render 需要使用 await const app= require('koa')(); const koaViews= require('koa-views'); const path = requ
-
node.js 使用ejs模板引擎时后缀换成.html
这是一个小技巧,看着.ejs的后缀总觉得不爽,使用如下方法,可以将模板文件的后缀换成我们习惯的.html. 1.在app.js的头上定义ejs: 复制代码 代码如下: var ejs = require('ejs'); 2.注册html模板引擎: 复制代码 代码如下: app.engine('html',ejs.__express); 3.将模板引擎换成html: 复制代码 代码如下: app.set('view engine', 'html'); 4.修改模板文件的后缀为.html. 好了,任
-
Node.js的Web模板引擎ejs的入门使用教程
Node 开源模板的选择很多,但推荐像我这样的老人去用 EJS,有 Classic ASP/PHP/JSP 的经验用起 EJS 来的确可以很自然,也就是说,你能够在 <%...%> 块中安排 JavaScript 代码,利用最传统的方式 <%=输出变量%>(另外 <%-输出变量是不会对 & 等符号进行转义的).安装 EJS 命令如下: npm install ejs JS 调用 JS 调用的方法主要有两个: ejs.compile(str, options); //
-
详解在express站点中使用ejs模板引擎
使用 vs创建的express站点,默认使用的是jade模板引擎,但是我不太喜欢这种方式,因为我觉得html本身的语义特性是我喜欢的,另外html本身也足够简洁,使用html自身做为模板语言更符合我的喜好,所以我选择ejs. 1.安装 在网站根目录启动控制台,输入 npm install ejs 程序包会安装到node_modules目录下. 2 修改APP.JS 修改app.js 将view engine修改为ejs.(并将模板的后缀修改为.html) app.set('views',path
-
基于JavaScript写一款EJS模板引擎
目录 1. 起因 2. 基本语法实现 3. Function函数 4 with 5. ejs语句 6. 标签转义 1. 起因 部门最近的一次分享中,有人提出来要实现一个ejs模板引擎,突然发现之前似乎从来都没有考虑过这个问题,一直都是直接拿过来用的.那就动手实现一下吧.本文主要介绍ejs的简单使用,并非全部实现,其中涉及到options配置的部分直接省略了.如有不对请指出,最后欢迎点赞 + 收藏. 2. 基本语法实现 定义render函数,接收html字符串,和data参数. const ren
-
详解nodejs模板引擎制作
关于模板,我倒是用过了不少.最开始要数Java的JSP了,然后接触了PHP的smarty,再就是Python的jinja2, Django内置模板,现在刚开始看Nodejs,也发现了不少类似的模板引擎,ejs, jade等等吧. 模板带来的最直接的好处就是加速开发,前后端分离.除此之外,对于字符串的格式化同样是个比较好的应用.习惯了python中 string = "hello {}".format("郭璞") # hello 郭璞 string = "h
-
基于react后端渲染模板引擎noox发布使用
React 组件化思想受到越来越多开发者的关注,组件化思想帮助开发者将页面解耦成一个一个组件,代码更加模块化, 更易扩展.而目前流行的后端模板引擎如 ejs, swig, jade, art 共同的问题是: 需要学习各类模板引擎定义的语法,如 {{if}}, {{loop}} 对组件化支持不够强,实现复杂,不易用 针对以上痛点,笔者基于 React 造出了 noox 这样一个工具,专注于后端模板的解析,让模板解析更加简单,易用. 使用方法 安装 npm install noox 简单的 demo
-
node前端开发模板引擎Jade的入门
随着 web 发展,前端应用变得越来越复杂,基于后端的 javascript(Node.js) 也开始崭露头角,此时 javascript 被寄予了更大的期望,与此同时 javascript MVC 思想也开始流行起来.为了使用户界面与业务数据(内容)分离,就产生了『模板引擎』这个概念. 说的简单点,模板引擎就是一个字符串中有几个变量待定,通过模板引擎函数把数据动态的塞进去. 今天我们就来聊一聊 Jade 的使用方法和语法说明.Jade官网:jade-lang.com/ Jade 命令行工具
-
Node.js 使用jade模板引擎的示例
在"Node.js开发入门--Express安装与使用"里,我们曾经使用express generator创建了一个HelloExpress网站,express工具为我们生成了基本的目录结构.模板.stylesheet.routers等.虽然那只是一个简单的HelloWorld类的小东西,可里面包含的内容还是有些多了,为了更好的理解Express所支持的jade模板引擎的用法,我们这次提供一个手动创建的小网站,可以显示来访者的IP,并对访问进行计数. 安装jade npm instal
-
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
目录 安装 基本使用 路由 get和post请求都可以 有字符串正则系统 正则表达式 表单提交 中间件 中间件特点: app.use() render() & send() get & post 静态化文件 模板引擎 本文实例讲述了Node Express用法.分享给大家供大家参考,具体如下: 安装 npm install --save express 基本使用 //引用express var express = require('express'); //创建app var app =
随机推荐
- AngularJS 遇到的小坑与技巧小结
- Access使用查询--1.2.用选择查询进行分组数据的计算
- Android Glide图片加载(加载监听、加载动画)
- 详解java开发webservice的几种方式
- MyBatis 延迟加载、一级缓存、二级缓存(详解)
- 关于__defineGetter__ 和__defineSetter__的说明
- javascript委托(Delegate)blur和focus用法实例分析
- 在ABP框架中使用BootstrapTable组件的方法
- javascript中break,continue和return语句用法小结
- Laravel学习教程之广播模块详解
- PHP防CC攻击实现代码
- 国内首款同时支持自定义404/505/rewrite的asp服务器(netbox制作,开放源代码)
- c语言printf函数的使用详解
- 关于C++中的static关键字的总结
- Android仿微信、录制音频并发送功能
- php安全配置 如何配置使其更安全
- fckeditor 防止上传非法文件 增加登录判断
- FckEditor 配置手册中文教程详细说明
- 深入理解React高阶组件
- 将MySQL help contents的内容有层次的输出方法推荐