当前位置: 首页 > 面试题库 >

我应该在哪里定义JS函数以在EJS模板中调用

甘明朗
2023-03-14
问题内容

我正在尝试使用Express和ejs渲染模板的模板。至于节点应用程序的标准结构,我有一个app.js文件,其中包含如下功能:

app.locals.getFlag = function(country) {
var flag_img_name = "";
if (country.toLowerCase() == "us") {
    flag_img_name = "flag_us16x13.gif";
}   
else if (country.toLowerCase() == "ca"){
    flag_img_name = "flag_ca16x13.gif";
}
return flag_img_name;
}

我有some_template.ejs文件,该文件如下所示调用此函数:

<img src="http://some_url_path/<%=getFlag(data_point[0].country_name) %>" width="16" height="14" alt="country" >

而且效果很好。但是,我大约有15-20个这样的函数,并且我不想在app.js中定义所有这些函数。还有其他地方可以定义这些函数并以与我现在相同的方式在模板中调用它们吗?如果是,那么定义它们的方式将是什么,以便像现在一样可以访问它们。

我是node,express和ejs的新手,不确定采用哪种技术。如果有人可以照亮它,那就太好了。先感谢您。


问题答案:

只需在此处发布此答案,以供在解决同一问题时可能会遇到此问题的人。

您所需要做的就是创建一个新文件(例如functions.ejs),并将其包含在您要调用该函数的.ejs文件中。因此,我在名为的文件中具有这样的功能functions.ejs

<%
getPriceChgArrow = function(value) {
    arrow_img_name = "";
    if (value < 0) {
        arrow_img_name = "arrow_down12x13.gif";
    }
    else {
        arrow_img_name = "arrow_up12x13.gif";
    }
    return arrow_img_name;
}
%>

然后将其包含functions.ejs在您要从中调用函数的文件中。说,我想在quote.ejs文件中调用此函数。因此,我将其包括如下:

<% include *file_path*/functions %>

只需在要调用它的ejs文件中的适当位置使用此函数。例如:

<img src = "http:/some_url/<% getPriceChgArrow(data_point[0].value) %>" />

你们都准备好了。希望这对某人有帮助。



 类似资料:
  • 如果我想在Keras中使用BatchNormize函数,那么我需要在开始时只调用一次吗? 我阅读了以下文档:http://keras.io/layers/normalization/ 我不知道应该在哪里调用它。下面是我试图使用它的代码: 我这样问是因为如果我用第二行运行代码,包括批处理规范化,如果我不使用第二行运行代码,我会得到类似的输出。因此,要么我没有在正确的位置调用函数,要么我想这没有多大区

  • 问题内容: 我在ASP.Net中有一个WebAPI 2.0项目,在其中实现了自定义的DefaultContractResolver,以便可以控制如何使用JSON.Net将实体序列化为JSON。但是我不确定如何告诉框架使用我的自定义实现。我也想知道是否有可能更改特定控制器/动作的ContractResolver。 谢谢! -–编辑03/07/2014我已经通过创建一个新的ConfigSettings

  • 我正在尝试为没有它们的包装提供类型: 我在带有打字稿 2.4.2 的 webpack 中使用 ts-loader,并且在 tsconfig.json 中设置了以下类型根: 我试图模仿: < code>index.d.ts中包含以下内容: 但是错误仍然存在。我做错了什么?我应该把那些自定义的. d.ts文件放在哪里? 和任何其他类型根之间有什么区别?为什么TypeScript会区别对待它们?

  • 问题内容: 当我在其中放置bean定义时,出现一条错误消息,指示Tomcat 7无法启动,因为有一个。我将整个堆栈跟踪上传到了文件共享站点,您可以通过单击此链接来阅读。但是,当我注释掉bean定义并尝试重新启动服务器时,我收到另一条错误消息,指示没有的bean定义。您可以通过单击此链接在文件共享站点上阅读第二个堆栈跟踪。 那么我应该将bean定义放在哪里,其语法应该是什么? 我认为问题可能在于,我

  • 问题内容: 实用程序函数在Django中应该存放在哪里?诸如自定义加密/解密数字,发送推文,发送电子邮件,验证对象所有权,自定义输入验证等功能。我在应用程序中的多个位置使用了重复性和自定义内容。我现在肯定要打破DRY。 我看到了一些演示,其中在models.py中定义了函数,尽管从概念上看这对我来说并不正确。他们是否应该使用导入到我的项目中的“实用程序”应用程序?如果是这样,它们在实用程序应用程序

  • 让我在这里展示Laravel文档中的场景:相关的数据库表是、和。表名是不言而喻的。 然后定义关系的逆: 模型: 然后它说: