当前位置: 首页 > 编程笔记 >

Node.js项目中调用JavaScript的EJS模板库的方法

阮疏珂
2023-03-14
本文向大家介绍Node.js项目中调用JavaScript的EJS模板库的方法,包括了Node.js项目中调用JavaScript的EJS模板库的方法的使用技巧和注意事项,需要的朋友参考一下

作为外部模块,调用的方法和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 
}); 

 类似资料:
  • 我有一个带有一些简单管理界面的节点项目。一个页面显示用户列表,它使用引导分页器分页,当有几千个用户时,分页看起来像 以下是代码: 我不是一个喜欢html的人。以下是我的问题: 1:href工作?什么是

  • 本文向大家介绍Android单项绑定MVVM项目模板的方法,包括了Android单项绑定MVVM项目模板的方法的使用技巧和注意事项,需要的朋友参考一下 0.前言 事情还要从上周和同事的小聚说起,同事说他们公司现在app的架构模式用的是MVP模式,但是并没有通过泛型和继承等一些列手段强制使用,全靠开发者在Activity或者Fragment里new一个presenter来做处理,说白了,全靠开发者自

  • 假设我需要创建一个javascript库,这样: 如果doSome方法工作u对象的值,那么doSome2和doSome3也工作。 但是像这样链接方法呢: 注意:方法可以随机链接,如: 实例:https://jsbin.com/vijehotora/edit?js安慰

  • 问题内容: 我对Django有一个奇怪的问题。我会像平时一样在模板中循环遍历一组对象。但是,我需要将项目分为三部分。页面的布局如下所示: 绘画1-绘画2-绘画3 描述1 描述2 描述3 绘画4-绘画-5绘画6 说明4 说明5 说明6 等 我不能弄清楚真正做到这一点的最好的Django标签集。似乎有些棘手。{%cycle%}语句并没有太大帮助。 除非当然,否则我会进行某种形式的Java脚本黑客攻击,

  • 具体查看ejs官方文档 https://github.com/mde/ejs

  • cocos2d-x_linux_qt_template 是给cocos2d-x在*nix平台补充了一个qt项目模板,平时我做项目都在用。 比起官方的makefile要更容易管理项目,比起eclipse的cdt要更适合做C++的开发。 配置也特别简单。 不知道有少人跟我一样在linux上进行cocos2d-x游戏的编程工作。 希望能方便一些同胞吧。 这里有一个简单的预览: http://www.co