ejs模板
nodejs的模板引擎有很多, ejs是比较简单和容易上手的。常用的一些语法:
- 用<%...%>包含js代码
- 用<%=...%>输出变量 变量若包含 '<' '>' '&'等字符 会被转义
- 用<%-...%>输出变量 不转义
- 用<%- include('user/show') %>引入其他模板 包含 ./user/show.ejs
- 用<%# some comments %>来注释,不执行不输出
- <%% 转义为 '<%'
- <% ... -%> 删除新的空白行模式?
- <%_ ... _%> 删除空白符模式
安装
npm install ejs
bower install ejs
//ejs可以配合express框架使用,或直接在node中/浏览器中使用
基本用法
//template.ejs:
<% if(comic) { %>
<h2><%=comic.name%></h2>
<% } %>
//test.js:
var comic = {name: 'one piece'};
// 渲染文件模板,
// comic.ejs 包含 header.ejs footer.ejs,
// 若include了文件 必须指定 filename参数 , 参数为文件路径,
// 文件所在目录为查找include资源的目录 path.diranme(specialFilepath)
var html = ejs.render( fs.readFileSync('comic.ejs', 'utf8'), {'comic': comic}, {filename: __dirname+'\\abc.js'});
console.log(html);
方法
ejs.compile() ejs.render()
var template = ejs.compile(str, options); //=> function
template(data); //=> html ejs.render(str, data, options); //=>html //or 把str data options都放在一个object中传入
ejs.render(allOptions);- options参数
cache缓存编译后的函数(ejs.compile(..) ,需要filename参数作为缓存的keyfilename用于缓存的key,和includecontext函数的执行上下文compileDebug输出compile的信息来跟踪调试client返回编译后的函数delimiter<% .. %> 指这里的%debug输出ejs.compile()得到函数的函数体strictejs.compile()返回的函数是否执行在严格模式_with是否使用 with(){..} 来访问本地变量localsName保存本地变量的对象名,默认为localsrmWhitespace移除多余空格
include(文件包含)
被包含文件的路径可以是:绝对路径或相对路径,还可以传入data<ul>
<% users.forEach(function(user){ %>
<%- include('user/show', {user: user}) %>
<%});%>
</ul>
include是在运行时被执行的,所以可以支持路径为变量, 如:
<% somePath='some/path' %>
...
<%- include(somePath) %>
自定义模板定界符
var ejs = require('ejs');
var users = ['lufy', 'zoro', 'nami']; //渲染字符串模板时,指定分隔符
//<%= ... %> 输出变量 输出表达式的结果
var ret1 = ejs.render('<?=users.join(" | "); ?> ', {users: users}, {delimiter: '?'});
console.log(ret1); //=>lufy | zoro | nami // 全局指定分隔符
ejs.delimiter = '$';
var ret2 = ejs.render('<$= users.join(" | "); $>', {users: users});
console.log(ret2);页面布局
ejs没有显式的支持布局功能,但是可以通过 include 页头页脚的方式,实现基本的布局。//comic.ejs:
<%- include('header'); %>
<h1>hot comic now: </h1>
<% if(comic) { %>
<h2><%= comic.name %></h2>
<% } %>
<%- include('footer') %> //test.js:
var html = ejs.render( fs.readFileSync('comic.ejs', 'utf8'), {'comic': comic}, {filename: __dirname+'\\abc.js'});
ejs模板的更多相关文章
- ejs模板中的四种表达式输出形式
在ejs模板中,通常会用下面四种方式在HTML中输出服务端的变量或表达式的值: 1. 直接在<%%>中写表达式或变量.这种情况通常只是用来进行表达式计算或给变量赋值,不会有任何输出,被称作 ...
- 如何在 ejs 模板中使用 helper function 外部函数进行特殊处理?
一般我们想要在 ejs 模板中使用外部函数用于特殊的处理,比如:<%= ellipsis(title, 30) %> 通常的做法是: 使用 app.locals 来定义: app.loca ...
- 在express站点中使用ejs模板引擎
在express站点中使用ejs模板引擎 文/玄魂 目录 在express站点中使用ejs模板引擎 前言 1.1 安装 1.2修改app.js 1.3创建测试页面 前言 使用 vs创建 ...
- NodeJS - Express 3.0下ejs模板使用 partial展现 片段视图
如果你也在看Node.js开发指南,如果你也在一步一步实现 microBlog 项目!也许你会遇到本文提到的问题,如果你用的是Express 3.0 本书实例背景是 Express 2.0 而如今升级 ...
- Node.js学习(14)----EJS模板引擎
这个入门教程将从以下几个方面来讲解: 1. 引入EJS 2. 创建一个模板 3. 使用视图工具组件 4. 使用错误处理组件 5. 什么情况下应使用EJS 引入EJS 在我们正式开始前,我们先来做点准备 ...
- Node - EJS模板应用(node+express+ejs)
准备工作: 工具:Webstorm 1. 新建一个文件夹为blogs(随意). 一个js文件app.js. 一个文件夹views,文件夹内一个index.ejs文件,文件夹asstes内style.c ...
- ch1-使用路由-静态资源-404页面-ejs模板
1 package.json 项目文件夹根目录创建这个文件 //要依赖的模块 "dependencies": { //dependency 依赖的复数形式 "expres ...
- nodejs-5.1 ejs模板引擎
ejs官方文档:https://ejs.bootcss.com/ 1.什么是 EJS? "E" 代表 "effective",即[高效]. EJS 是一套简单的 ...
- 前端笔记之NodeJS(三)Express&ejs模板引擎&请求识别
一.Express框架 1.1基本使用 创建http服务器特别麻烦,express框架解决了这个的问题. Express在node界的地位,就相当于jQuery在DOM界的地位.jQuery的核心就是 ...
- Node的express配置使用ejs模板
注册ejs模板为html页.以.ejs为后缀的模板页,现在的后缀名可以是.html app.engine('.html', require('ejs').__express); 设置视图模板的默认后缀 ...
随机推荐
- Java数据结构——有序链表
//================================================= // File Name : SortedList_demo //--------------- ...
- JavaWeb学习笔记——XML简介
- 如何写好一篇高质量的paper
http://blog.csdn.net/tiandijun/article/details/41775223 这篇文章来源于中科院Zhouchen Lin 教授的report,有幸读到,和大家分享一 ...
- docker中启动mysql报错
[root@5416ec39653b init.d]# /etc/init.d/mysqld start /etc/init.d/mysqld: line 23: /etc/sysconfig/net ...
- Latex论文写作-Texsdudio 快捷键总结
Latex论文写作-Texsdudio 快捷键总结 The keyboard shortcuts can be modified at Options -> Shortcuts. The fo ...
- NGUI 圆形头像遮罩
NGUI 圆形头像遮罩 列表,求助 http://tieba.baidu.com/p/3961444508
- python 二分法查找实例(递归、循环)
二分法,主要应用于有序序列中,原理是每次查找都将原序列折半,逐渐缩小查找范围的一种算法. 需求 要求在一个有序序列中,例如[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30 ...
- 无忧之道:Docker中容器的备份、恢复和迁移
原创:LCTT https://linux.cn/article-5967-1.html译者: GOLinux本文地址:https://linux.cn/article-5967-1.html 201 ...
- Effective Objective-C 2.0 — 第8条:理解“对象等同性”这一概念
第8条:理解“对象等同性”这一概念 若想检测对象的等同性,请提供“isEqual”与 hash 方法 相同的对象必须具有相同哈希码,但是两个哈希码相同的对象却未必相同. 不要盲目地逐个检测每条属性,而 ...
- yii2.0-advanced 高级版项目搭建
(一) 原文地址:http://www.yii-china.com/post/detail/1.html (二) 原文地址:http://www.yii-china.com/post/detail/2 ...