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 相关文章推荐
Javascript读取cookie函数代码
Oct 16 Javascript
深入理解javaScript中的事件驱动
May 21 Javascript
js中匿名函数的创建与调用方法分析
Dec 19 Javascript
jQuery在ul中显示某个li索引号的方法
Mar 17 Javascript
基于js实现投票的实例代码
Aug 04 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
Nov 25 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
May 12 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
Feb 09 Javascript
详解vue数据渲染出现闪烁问题
Jun 29 Javascript
Vue.set()实现数据动态响应的方法
Feb 07 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
Sep 20 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
Oct 16 jQuery
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生成指定随机字符串的简单实现方法
2015/04/01 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
关于JavaScript中string 的replace
2013/04/12 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
Vue.js实现列表清单的操作方法
2017/11/15 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
Vue ​v-model相关知识总结
2021/01/28 Vue.js
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
Python实现简单的语音识别系统
2017/12/13 Python
python简单商城购物车实例代码
2018/03/15 Python
深入浅析python with语句简介
2018/04/11 Python
连接pandas以及数组转pandas的方法
2019/06/28 Python
Django 大文件下载实现过程解析
2019/08/01 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
幼儿园欢迎词范文
2015/01/26 职场文书
华清池导游词
2015/02/02 职场文书
运动会闭幕式通讯稿
2015/07/18 职场文书
2019年最新七夕唯美祝福语(60条)
2019/07/22 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
MySQL中日期型单行函数代码详解
2021/06/21 MySQL