【问题标题】:Express.js blog application — Formatting datesExpress.js 博客应用程序——格式化日期
【发布时间】:2012-07-01 13:50:18
【问题描述】:

我正在学习 Node.js/Express.js,作为一个实验,我正在尝试构建一个小型博客应用程序。

我渲染页面,传递文章:

response.render('index.jade', {
    title: 'Blog'
  , locals: {
      articles: articles
  }
});

这是我的 Jade 模板:

h1= title
section
  h1 Articles
  ul
  each article in articles
    li
      a(href='/article/' + article.slug)= article.title
      span  at #{article.created_at}

这会显示带有标题和日期的文章列表。但是,我需要一种将日期格式化为更易读的格式的方法。我发现了允许你这样做的库,但我真正的问题是我应该如何将它集成到我的模板中?我可以将 moment 模块传递给模板并在那里格式化日期,或者我可以在路由中对其进行格式化并将其添加到 article 对象中。你会怎么做呢?

【问题讨论】:

    标签: node.js express momentjs


    【解决方案1】:

    我的应用程序中有以下助手:

    date: function (date) {
      return moment(date).format('YYYY/MM/DD HH:mm:ss');
    },
    
    fromNow: function(date) { 
      return moment(date).fromNow(); 
    }
    

    这可能取决于您的应用程序,但我没有看到需要在我的网站上使用不同的日期格式。

    【讨论】:

      【解决方案2】:

      如果你想要更少和干净的代码,我会添加到模板中。如果您想要性能,请在路线本身中对其进行格式化。

      【讨论】:

      • 将它(时刻)作为模板的本地传递似乎有点奇怪。这完全正常吗?
      • 我使用app.locals.use将下划线库传递给模板没有太大的性能问题。但如果只有少数(2-3)个地方需要这个,那么请在路由器中进行格式化。
      • 如何进行内联格式化?插值导致“意外标识符”错误 (#{moment(article.created_at).format('MMM Do \'YY');})。
      • span= 'at' + moment(article.created_at).format('MMM Do \'YY')
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 2018-10-03
      相关资源
      最近更新 更多