有关EJS文件中的res.render和调用方法的问题

时间:2018-11-07 00:29:17

标签: javascript node.js

因此,我在另一个文件上创建了一个练习函数,我正在将其导入到server.js文件中,因为我只是在处理节点并测试什么有效,什么无效。

我正在使用express作为框架,当我在res.render对象中传递函数并在res.render范围内为该函数提供参数时,

app.get('/projects', (req, res) => {
res.render('projects', {
    pageTitle: "Projects Page",
    allCaps: practice.screamIt("this will be all caps")
});
});

当我在我的projects.ejs文件中将其命名为<h1><%-allCaps%></h1>

时,“这将是全部大写”输出到屏幕上

我想做的是通过调用<%allCaps('capitalize this string')%>在ejs文件中传递参数,但这似乎不起作用。

当我像这样使用app.locals在server.js文件中直接创建函数时...

app.locals.addSum = (a,b) => { return a + b }; 我从我的ejs文件中将参数传递给所述函数没有问题...

<h1><%-addSum(10, 15)%></h1>

关于如何实现从EJS文件调用其他函数的任何想法?还是只能使用app.locals。

编辑发现了如何做:

伙计们,我刚刚通过对象通过了require语句

const practice = require('./public/functions/practice.js')    
app.get('/projects', (req, res) => {
    res.render('projects', {
        pageTitle: "Projects Page",
        practice: practice
    });
});

并在ejs文件中将其命名为

<h1><%-practice.screamIt('capitilize this')%></h1>

问题解决了!

1 个答案:

答案 0 :(得分:0)

编辑发现了如何做:

伙计们,我刚刚像这样通过对象传递了require语句

const practice = require('./public/functions/practice.js')    
app.get('/projects', (req, res) => {
    res.render('projects', {
        pageTitle: "Projects Page",
        practice: practice
    });
});

像这样在ejs文件中调用它

<h1><%-practice.screamIt('capitilize this')%></h1>

问题解决了!