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中getJSON的使用方法
Dec 13 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
Nov 15 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
Jan 13 Javascript
js的Prototype属性解释及常用方法
May 08 Javascript
js中confirm实现执行操作前弹出确认框的方法
Nov 01 Javascript
基于javascript实现彩票随机数生成(升级版)
Apr 17 Javascript
理解javascript模块化
Mar 28 Javascript
判断是否存在子节点的实现代码
May 18 Javascript
浅谈addEventListener和attachEvent的区别
Jul 14 Javascript
解决vue-cli中stylus无法使用的问题方法
Jun 19 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
Feb 01 Javascript
JavaScript ES 模块的使用
Nov 12 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
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
php强制下载文件函数
2016/08/24 PHP
php使用crypt()函数进行加密
2017/06/08 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
js读取本地excel文档数据的代码
2010/11/11 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
js实现开关灯效果
2020/03/30 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
解决vue-photo-preview 异步图片放大失效的问题
2020/07/29 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
win10系统中安装scrapy-1.1
2016/07/03 Python
python 自动化将markdown文件转成html文件的方法
2016/09/23 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
python 字符串和整数的转换方法
2018/06/25 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
python实现简单的tcp 文件下载
2020/09/16 Python
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
Hammitt官网:设计师手袋
2020/05/23 全球购物
房屋租赁协议书(标准版)
2014/10/02 职场文书
生产设备维护保养制度
2015/08/06 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang
php去除数组中为0的元素的实例分析
2021/11/17 PHP
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android
springboot 全局异常处理和统一响应对象的处理方式
2022/06/28 Java/Android