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从头学起第二讲
Jul 04 Javascript
javascript获取选中的文本的方法代码
Oct 30 Javascript
获取select元素被选中的文本内容的js代码
Jan 29 Javascript
javascript模拟枚举的简单实例
Mar 06 Javascript
JavaScript验证电子邮箱的函数
Aug 22 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
Sep 21 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
Mar 12 Javascript
Bootstrap栅格系统的使用和理解2
Dec 14 Javascript
简单实现JS上传图片预览功能
Apr 14 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
Dec 10 Javascript
jQuery获取随机颜色的实例代码
May 21 jQuery
Vue中关闭弹窗组件时销毁并隐藏操作
Sep 01 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
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
js从外部获取图片的实现方法
2016/08/05 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
JavaScript实现修改伪类样式
2017/11/27 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
2018/02/10 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
Vue router安装及使用方法解析
2020/12/02 Vue.js
js实现头像上传并且可预览提交
2020/12/25 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
Python实现手写一个类似django的web框架示例
2018/07/20 Python
python学生信息管理系统(初级版)
2018/10/17 Python
Python中的元组介绍
2019/01/28 Python
由面试题加深对Django的认识理解
2019/07/19 Python
python实现的发邮件功能示例
2019/09/11 Python
Python tkinter三种布局实例详解
2020/01/06 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
国际商务系学生个人的自我评价
2013/11/26 职场文书
护士试用期自我鉴定
2014/02/08 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书