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 相关文章推荐
node.js中的fs.appendFileSync方法使用说明
Dec 17 Javascript
ECMAScript6块级作用域及新变量声明(let)
Jun 12 Javascript
简单的JS时钟实例讲解
Jan 13 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
Jul 07 Javascript
JavaScript中日期函数的相关操作知识
Aug 03 Javascript
jquery实现拖动效果
Aug 10 Javascript
js脚本编写简单刷票投票系统
Jun 27 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
Nov 22 Javascript
解决vue-cli + webpack 新建项目出错的问题
Mar 20 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
Aug 21 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
Apr 02 Javascript
JavaScript中CreateTextFile函数
Aug 30 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之COOKIE支持详解
2010/09/20 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
php用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
[02:42]岂曰无衣,与子同袍!DOTA2致敬每一位守护人
2020/02/17 DOTA
python冒泡排序算法的实现代码
2013/11/21 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
pandas求两个表格不相交的集合方法
2018/12/08 Python
python3中property使用方法详解
2019/04/23 Python
python安装requests库的实例代码
2019/06/25 Python
python的setattr函数实例用法
2020/12/16 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
应届生服务员求职信
2013/10/31 职场文书
大学生求职自我评价
2014/01/16 职场文书
国际经济与贸易专业大学生职业规划书
2014/03/01 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
八项规定整改方案
2014/10/01 职场文书
PostgreSQL数据库创建并使用视图以及子查询
2022/04/11 PostgreSQL
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android