express ejs 模板中如何使用第三方工具函数和自定义函数

express 模版如果直接使用 require 引用第三方包,模版引擎会报错,无法直接使用。

正确姿势

使用 require 的目的无非是想在模版中使用第三方的工具方法,可直接在 app.js 声明全局方法即可,如下:

1
2
3
4
5
6
7
const app = express();
// ......
// 让模版中可以使用 lodash 函数
app.locals._ = require('lodash');
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.locals._ = require('lodash'); 有这一句之后,在模版中就可以直接使用 lodash 的工具函数了。

使用方法:

1
<% const regStr = new RegExp(_.escapeRegExp(highlightStr), 'g'); %>

_.escapeRegExp 用于转义正则字符串中的特殊字符 “^”, “$”, “”, “.”, “*”, “+”, “?”, “(“, “)”, “[“, “]”, “{“, “}”, “|”

如果不转义字符串中的特殊字符,正则表达式在使用 new RegExp 创建时候会报错。

参考文档:https://lodash.com/docs/4.17.15#escapeRegExp

自定义方法

如果只是想在当前模版新增一个函数用于处理部分逻辑,可直接这么使用:

1
2
3
4
5
6
7
8
<%
//替换对应链接type
function fun(value) {
// ......
return value;
}
%>
<a href="<%= fun('xxx') %>">xxx</a>

如果是多个模版都要使用的方法,还是建议使用 app.locals.xxx 新增全局方法。

本文由 linx(544819896@qq.com) 创作,采用 CC BY 4.0 CN协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。本文链接为: https://blog.jijian.link/2022-04-01/express-ejs-use-function/

如果您觉得文章不错,可以点击文章中的广告支持一下!