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 相关文章推荐
用jscript实现新建和保存一个word文档
Jun 15 Javascript
jquery 查找新建元素代码
Jul 06 Javascript
js中AppendChild与insertBefore的用法详细解析
Dec 16 Javascript
javascript中parseInt()函数的定义和用法分析
Dec 20 Javascript
angularjs中的$eval方法详解
Apr 24 Javascript
JavaScript实现随机数生成器(去重)
Oct 13 Javascript
打造通用的匀速运动框架(实例讲解)
Oct 17 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
Mar 06 Javascript
Vue组件实现触底判断
Jun 26 Javascript
vue Tab切换以及缓存页面处理的几种方式
Nov 05 Javascript
JS实现小星星特效
Dec 24 Javascript
Vue 根据条件判断van-tab的显示方式
Aug 03 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一些有意思的小区别
2006/12/06 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
javascript html5轻松实现拖动功能
2017/03/01 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
Python可变参数函数用法实例
2015/07/07 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
使用python3实现操作串口详解
2019/01/01 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
Python Web程序搭建简单的Web服务器
2019/07/31 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
Django models filter筛选条件详解
2020/03/16 Python
大学生个人推荐信范文
2013/11/25 职场文书
优秀员工年终发言演讲稿
2014/01/01 职场文书
幼儿教师师德承诺书
2014/05/23 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
教师个人培训总结
2015/02/11 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
导盲犬小Q观后感
2015/06/11 职场文书
教师岗位说明书
2015/09/30 职场文书
2016年领导干部廉政承诺书
2016/03/24 职场文书
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby