<HTML><Head> <MetaCharSet= "UTF-8"> <title>Template</title> <Scriptsrc= "Lodash.js"></Script></Head><Body> <Script> varStr= 'the card is d<%= name | prefix: "my-name" | Sort: "ASC"%> card.'. Replace (/[\s]+/G,"'). Replace (/<%= (. +)%>/, function(Exprs, path) {returnexprs.replace (Path,function(expr) {varret= '(function () {var fns= (\ ')'+Expr+'\ '). Split ("|"); var data= fns.shift ();'; /*ret + = ' Fns.foreach (function (FN) {' + ' var fninfo = Fn.split (":"); ' + ' data = fninfo[0] (data, fninfo[1]) ' + '};*/ret+= 'return _filter ('+Expr.split ('|')[0]+', FNS);}) ()'; returnret; }); }); //console.log (str, '--------------------------------'); varcompiled=_.template (str, {imports: _.extend (_.templatesettings.imports, { Prefix:function(d,s) {console.log (d);return 'The prefix is added .';}, Sort:function(d, dir) {console.log (d);return '222222';}, _filter:function(data, filters) {varret=data; varMethods=_.templatesettings.imports; _.foreach (Filters,function(filter) {varFninfo=Filter.split (":") ret=methods[fninfo[0]].call ( This, ret, fninfo[1]); }, This); returnret; })}) ({name:'Zhangsan' }); Console.log (compiled); </Script></Body></HTML>
Lodash Template Filter