node+ejs【封装ejs模板中直接调用js方法】

来源:互联网 发布:python smtp发送邮件 编辑:程序博客网 时间:2024/05/16 15:05

封装全局函数

var myFunction = {};/* * 字符串截取 * @str    截取字符串 * @start  开始截取位置 * @end    结束截取位置 */myFunction.substring = function(str, start, end){    if(end){        return str.substring(start, end);    }else{        return str.substring(start);    }},/* * 主要思想是使用eval执行想要的逻辑。以拼接字符的模式来进行逻辑判断理论上可以如同EL表达式一样处理页面上的大部分逻辑。 * 如:<%= Fun.behe(1, '==', 2, '?', '"1等于2"', ':', '"1不等于2"') %> *    <%= Fun.behe('1==2 ? "1等于2" : "1不等于2"') %> */myFunction.behe = function(){    var exps = [];    try{        //最后一个参数作为展示内容,也就是平时的options。不作为逻辑表达式部分        var arg_len = arguments.length;        var len = arg_len;        for(var j = 0; j<len; j++){            exps.push(arguments[j]);        }        var result = eval(exps.join(' '));        return result;    }catch(e){        throw new Error('Handlerbars Helper "expression" can not deal with wrong expression:'+exps.join(' ')+".");    }}module.exports = myFunction;

app.js全局定义ejs模板中

//加载自定义全局方法app.locals.Fun = require('./utils/myFunction');

ejs模板中直接调用

<%= Fun.substring(myObj.str, 3) %><br><%= Fun.behe(1, '==', 2, '?', '"1等于2"', ':', '"1不等于2"') %><br><%= Fun.behe('1==2 ? "1等于2" : "1不等于2"') %>


原创粉丝点击