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+thickbox仿校内登录注册框
Jun 07 Javascript
jQuery操作input type=radio的实现代码
Jun 14 Javascript
node.js中的fs.utimesSync方法使用说明
Dec 15 Javascript
jQuery中andSelf()方法用法实例
Jan 08 Javascript
JavaScript常用字符串与数组扩展函数小结
Apr 24 Javascript
运用js教你轻松制作html音乐播放器
Apr 17 Javascript
深入理解Javascript中的观察者模式
Feb 20 Javascript
jquery横向纵向鼠标滚轮全屏切换
Feb 27 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
Mar 29 Javascript
微信小程序使用二次贝塞尔曲线画波浪
Dec 25 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
Oct 26 Javascript
vue设置默认首页的操作
Aug 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简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
原生js 实现表单验证功能
2021/02/08 Javascript
python实现TF-IDF算法解析
2018/01/02 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
pycharm实现猜数游戏
2020/12/07 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
全网最全python库selenium自动化使用详细教程
2021/01/12 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
英国老牌潮鞋店:Offspring
2019/08/19 全球购物
资产评估专业大学生求职信
2013/09/29 职场文书
《陶罐和铁罐》教学反思
2014/02/19 职场文书
铁路安全事故反思
2014/04/26 职场文书
关于青春的演讲稿
2014/05/05 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
2015年人事工作总结范文
2015/04/09 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
Java spring定时任务详解
2021/10/05 Java/Android
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript