Node.js项目中调用JavaScript的EJS模板库的方法


Posted in Javascript onMarch 11, 2016

作为外部模块,调用的方法和mysql模块是相同的,不再赘述。

ejs的render函数有两个参数 第一个是字符串,第二个是可选的对象,和其他javascript模版一样需要渲染的数据也是包含在option对象中的

ejs.render(str,option); 
// 渲染字符串 str 一般是通过nodejs文件系统的readfile方法读取 
ejs.render(str,{ 
  data : user_data // 需要渲染的数据 
});

当str字符串中没有包含 include 标签时,渲染数据是没有问题的,反之,就会报错。前面已经讲过我的项目文件和nodejs的安装文件不在同一个根目录下。解决这个问题需要配置option参数的filename属性。

查看ejs源码,会发现,ejs在处理include包含文件的路径时会用到一个resolveInclude函数:

function resolveInclude(name, filename) { 
 var path = join(dirname(filename), name); 
 var ext = extname(name); 
 if (!ext) path += '.ejs'; 
 return path; 
}

filename正是dirname函数的参数,作为nodejs核心模块的path.dirname(),返回的path总是相对nodejs的安装路径,如果不指定filename值,就会找不到文件
在使用dirname时应当注意,函数处理传入的路径参数时会截取第一个
 '/' 之前的部分作为路径名例如:

path.dirname('/foo/bar/baz/asdf/quux') 
// returns 
'/foo/bar/baz/asdf'

要取得tpl目录可以这样写:

path.dirname('/tpl/..') // return /tpl

完整的render函数可以这样:

ejs.render(str,{ 
  filename : path + '/tpl/..', //tpl文件中保存的是模版文件 
  data: user_data 
});
Javascript 相关文章推荐
基于jquery的返回顶部效果(兼容IE6)
Jan 17 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
Feb 23 Javascript
jQuery获取标签文本内容和html内容的方法
Mar 27 Javascript
JavaScript实现页面5秒后自动跳转的方法
Apr 16 Javascript
angularjs客户端实现压缩图片文件并上传实例
Jul 06 Javascript
Jquery uploadify上传插件使用详解
Jan 13 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
Sep 29 Javascript
详解webpack介绍&安装&常用命令
Jun 29 Javascript
js经验分享 JavaScript反调试技巧
Mar 10 Javascript
layui实现点击按钮给table添加一行
Aug 10 Javascript
AngularJS 监听变量变化的实现方法
Oct 09 Javascript
如何使用VuePress搭建一个类型element ui文档
Feb 14 Javascript
JavaScript操作HTML DOM节点的基础教程
Mar 11 #Javascript
举例说明JavaScript中的实例对象与原型对象
Mar 11 #Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
Mar 11 #Javascript
原生JavaScript制作微博发布面板效果
Mar 11 #Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
Mar 11 #Javascript
详解Angularjs中的依赖注入
Mar 11 #Javascript
详解AngularJS过滤器的使用
Mar 11 #Javascript
You might like
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
2007/09/24 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
解析jQuery的三种bind/One/Live事件绑定使用方法
2013/12/30 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
使用Django的模版来配合字符串翻译工作
2015/07/27 Python
5款非常棒的Python工具
2018/01/05 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
实现Python与STM32通信方式
2019/12/18 Python
Django中的session用法详解
2020/03/09 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
python实现一个猜拳游戏
2020/04/05 Python
Gap工厂店:Gap Factory
2017/11/02 全球购物
澳大利亚家具和家居用品在线:BROSA
2017/11/02 全球购物
Vilebrequin美国官方网上商店:法国豪华泳装品牌
2020/02/22 全球购物
求职信范文英文版
2014/01/05 职场文书
计算机个人求职信范例
2014/01/24 职场文书
酒店节能降耗方案
2014/05/08 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
Python图像处理之图像拼接
2021/04/28 Python
写好Python代码的几条重要技巧
2021/05/21 Python
PHP中多字节字符串操作实例详解
2021/08/23 PHP
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS