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源码学习javascript(三)
Dec 27 Javascript
24款热门实用的jQuery插件推荐
Dec 24 Javascript
js实现搜索框关键字智能匹配代码
Mar 26 Javascript
javascript使用 concat 方法对数组进行合并的方法
Sep 08 Javascript
vue.js动态数据绑定学习笔记
May 19 Javascript
Angular.js中下拉框实现渲染html的方法
Jun 18 Javascript
vue-cli项目中怎么使用mock数据
Sep 27 Javascript
基于vue2.0实现简单轮播图
Nov 27 Javascript
js数据类型检测总结
Aug 05 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
Aug 09 Javascript
Vue实现按钮旋转和移动位置的实例代码
Aug 09 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
Apr 25 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防注入和XSS攻击通用过滤
2015/09/13 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
JS trim去空格的最佳实践
2011/10/30 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
Python list操作用法总结
2015/11/10 Python
谈谈Python进行验证码识别的一些想法
2016/01/25 Python
Python3处理HTTP请求的实例
2018/05/10 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
使用Python实现一个栈判断括号是否平衡
2018/08/23 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
python3.6中@property装饰器的使用方法示例
2019/08/17 Python
Python如何安装第三方模块
2020/05/28 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
EJB与JAVA BEAN的区别
2016/08/29 面试题
食堂厨师岗位职责
2014/08/25 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
教师个人工作总结范文2014
2014/11/10 职场文书
2014年工商所工作总结
2014/12/09 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
七年级数学教学反思
2016/02/17 职场文书
《雷雨》教学反思
2016/02/20 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang