Dot*_*Bie 10 ejs node.js express
我正在制作一个模板,我正在尝试使用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中定义所有这些函数.还有其他地方可以定义这些函数并在模板中调用它们,就像我现在一样吗?如果是,那么定义它们的方式是什么,以便它们像现在一样可以访问.
我是节点,表达和ejs的新手,并不确定不同的技术.如果有人可以为它揭开光芒,那就太好了.先感谢您.
Dot*_*Bie 31
只是在这里发布这个答案给那些在解决同一问题时可能会结束这个问题的人.
您所要做的就是创建新文件(比如说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) %>" />
而你已经准备好了.希望这有助于某人.
小智 22
在 js 文件 helper.js 中创建常用函数。
function common1() {
    //function body
}
function common2(key) {
    //function body
}
module.exports = {
    common1: common1,
    common2: common2
}
然后在你的节点函数中需要这个文件
var helper = require('./helper');
然后用 ejs 渲染传递这个助手
res.render('index', { helper:helper });
并使用你的函数是 ejs 文件
<%= helper.common1() %>
就是这样
嗯,由于某种原因,接受的答案对我来说没有成功.另外,为我的每个函数创建一个单独的*.ejs文件然后在视图中导入文件是没有意义的- 特别是当我有非常简单的逻辑要实现时.
实际上,定义函数并在视图中使用它非常简单和容易
我这样做了:
<%
   // ------ Define a function
   get_tree = function(tree){
      for(var i in tree){
%>
     <%= tree[i].title %>
<%
      }
   }
  // ----- Call the above declared function
  get_tree(tree);
%>
它的工作原理!
谢谢
您可以只需要一个单独的文件并将 app.locals 设置为此
app.locals = require('./path/helpers')
在 helpers.js 中:
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; 
}
anotherFunction=function(x){
return 'hello '+x
}
   module.exports={getFlag, anotherFunction}
| 归档时间: | 
 | 
| 查看次数: | 24051 次 | 
| 最近记录: |