Where to access and store EJS Helpers - SailsJS

前端 未结 3 648
攒了一身酷
攒了一身酷 2021-01-13 08:44

Well,

SailJS\'s default templateing engine is EJS (Embedded Javascript)

But I cannot seem to find the place where we can create ou

相关标签:
3条回答
  • 2021-01-13 09:25

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

    config/http.js

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

    config/bootstrap.js

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

    At some view...

    views/test.ejs

    <%=: created | formatDate %>
    
    0 讨论(0)
  • 2021-01-13 09:28

    You should create file in ./config with name anyname.js and write some EJS helper like these code:

    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 = '?>';
    

    Then in layout, view, it should be call

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

    Hope that help!

    Update

    For some reasons, you guys have to install module sails locally to make sense. So just paste to your console:

    npm i sails
    

    regards,

    Anh Nguyen

    0 讨论(0)
  • 2021-01-13 09:29

    One way to accomplish this is through middleware. Something like:

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

    I would also suggest making a feature request for a more integrated approach at: https://trello.com/b/cGzNVE0b/sails-js-feature-requests.

    0 讨论(0)
提交回复
热议问题