在哪里访问和存储EJS助手 - SailsJS

时间:2014-01-11 15:52:24

标签: node.js templates ejs sails.js

好吧,

SailJS的默认模板引擎是 EJS 嵌入式Javascript

但我似乎找不到可以创建自己的助手和东西的地方。

那么,你知道在哪里访问&存储 EJS 帮手/东西?

3 个答案:

答案 0 :(得分:6)

解决: https://github.com/balderdashy/sails/issues/2162#issuecomment-55866731

配置/ http.js

module.exports.http = {
  // ...
  locals: {
    filters: {
      formatDate: function(date) { }
    }
  }
}

配置/ bootstrap.js

_.extend(sails.hooks.http.app.locals, sails.config.http.locals);

在某些观点......

视图/ test.ejs

<%=: created | formatDate %>

答案 1 :(得分:3)

您应该使用名称anyname.js在./config中创建文件,并像这些代码一样编写一些EJS帮助程序:

var moment = require('moment');
var ejs = require('ejs');

ejs.filters.fromNow = function(date){
  return moment(date).fromNow()
}
ejs.filters.formatDate = function(date){
  return moment(date).format('MMM Do YYYY');
}
ejs.open = '<?';
ejs.close = '?>';

然后在布局,视图中,应该调用

<td><?=: post.createdAt | formatDate ?></td>

希望有所帮助!

<强>更新

出于某些原因,你们必须在本地安装模块风帆才有意义。所以只需粘贴到您的控制台:

npm i sails

的问候,

Anh Nguyen

答案 2 :(得分:2)

实现这一目标的一种方法是通过中间件。类似的东西:

module.exports.routes = {

  '*': function mixinForm(req, res, next) {
     // <%= form() %>
     res.locals.form = function () {
        return '<form action=""></form>';
     };
     next();
  },
}

我还建议在https://trello.com/b/cGzNVE0b/sails-js-feature-requests处针对更加整合的方法提出功能请求。