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 相关文章推荐
js获取select选中的option的text示例代码
Dec 19 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
Feb 03 Javascript
jquery判断密码强度的验证代码
Apr 22 Javascript
谈一谈javascript闭包
Jan 28 Javascript
Javascript打印局部页面实例
Jun 21 Javascript
分享bootstrap学习笔记心得(组件及其属性)
Jan 11 Javascript
基于JavaScript实现窗口拖动效果
Jan 18 Javascript
jQuery页面弹出框实现文件上传
Feb 09 Javascript
AngularJS中filter的使用实例详解
Aug 25 Javascript
在vue项目中使用Nprogress.js进度条的方法
Jan 31 Javascript
JavaScript读写二进制数据的方法详解
Sep 09 Javascript
js实现超级玛丽小游戏
Mar 18 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
资料注册后发信小技巧
2006/10/09 PHP
一个经典的PHP验证码类分享
2014/11/18 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
html中table数据排序的js代码
2011/08/09 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
node.js中的buffer.toString方法使用说明
2014/12/14 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
详解如何在Angular中快速定位DOM元素
2017/05/17 Javascript
详解原生js实现offset方法
2017/06/15 Javascript
React实践之Tree组件的使用方法
2017/09/30 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
JS实现点餐自动选择框(案例分析)
2019/12/10 Javascript
浅谈vue权限管理实现及流程
2020/04/23 Javascript
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
Jupyter notebook如何实现指定浏览器打开
2020/05/13 Python
python如何写try语句
2020/07/14 Python
2014年预算员工作总结
2014/12/05 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
2015新学期开学寄语
2015/02/26 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
2015年采购员工作总结
2015/04/27 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang