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 全兼容可高亮二级缓冲折叠菜单
Jun 04 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
Apr 22 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
Aug 02 Javascript
js游戏人物上下左右跑步效果代码分享
Aug 28 Javascript
JavaScript脚本判断蜘蛛来源的方法
Sep 22 Javascript
原生 JS Ajax,GET和POST 请求实例代码
Jun 08 Javascript
工厂模式在JS中的实践
Jan 18 Javascript
jquery实现全选、全不选以及单选功能
Mar 23 jQuery
AngularJS实现的根据数量与单价计算总价功能示例
Dec 26 Javascript
Vue中的scoped实现原理及穿透方法
May 15 Javascript
vue 配置多页面应用的示例代码
Oct 22 Javascript
原生js+css实现tab切换功能
Sep 17 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颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
JavaScript 继承详解(四)
2009/07/13 Javascript
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
JS路由跳转的简单实现代码
2017/09/21 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
Python3监控疫情的完整代码
2020/02/20 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
纯CSS3实现的阴影效果
2014/12/24 HTML / CSS
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
PHP面试题及答案二
2015/05/23 面试题
大三在校生电子商务求职信
2013/10/29 职场文书
安全标准化汇报材料
2014/02/03 职场文书
集体婚礼策划方案
2014/02/22 职场文书
财务情况说明书范文
2014/05/06 职场文书
好听的队名和口号
2014/06/09 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
会议开幕词
2015/01/28 职场文书
活动主持人开场白
2015/05/28 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书