-8

我对 javascript、node.js 和 express 非常陌生。我的问题是,如何重构以下代码以使其成为函数内的一行?

exports.about = function(req, res){
 var mytime = new Date();
 res.render('about', {title: 'about page', time: mytime.toLocaleDateString() });
};

换句话说,有没有办法可以压缩 var mytime = new Date(); 和时间: mytime.toLocalDateString() 成一个语句?

4

6 回答 6

10

你没有。可读性胜过简洁。让机器进行缩小。


你可以写成mytime.toLocaleDateString()(new Date()).toLocaleDateString()但我不推荐它。

我喜欢的样式:

exports.about = function(req, res){
  var mytime = new Date();
  res.render('about', {
    title: 'about page',
    time: mytime.toLocaleDateString()
  });
};
于 2012-12-21T17:37:08.907 回答
4

请参阅Frits 的回答:可以,但真的有必要吗?你这样做的方式很好而且可读。

但是,如果您真的非常想这样做,可以这样做:

exports.about = function(req, res){
 res.render('about', {title: 'about page', time: new Date().toLocaleDateString() });
};

它看起来有点奇怪,但该new Date()部分优先,因此您甚至不需要围绕它的括号(例如,您不需要time: (new Date()).toLocaleDateString())。如果你愿意,你可以拥有它们,但它们不是必需的。

于 2012-12-21T17:38:08.657 回答
1

一条线

exports.about = function(req, res){ res.render('about', {title: 'about page', time: new Date().toLocaleDateString() }); };

不过,这很愚蠢。您的原始代码没有任何问题。

于 2012-12-21T17:39:24.957 回答
1

使这段代码更短不会使它变得更好。我个人会让它更大一点,就像这样:

exports.about = function (req, res) {
    var mytime = new Date();
    res.render('about', {
        title: 'about page',
        time: mytime.toLocaleDateString()
    });
};
  • 我在之后添加了一个空格,function因为这就是 JSLint 想要的。
  • 我在之前添加了一个空格,{因为这使它更具可读性。
  • 我将所有对象属性放在不同的行上,这样我就不必整天水平滚动(而且现在我可以在每个属性的末尾添加注释,耶!)。
  • 最后,我用制表符替换了空格缩进,因为这使所有内容都完美对齐,同时只需要一个按键即可删除或越过它们(如果您的插入符号位于第 4 行的开头,则需要 4 次按键才能移动到您的代码,而单个选项卡只需要一个按键)。
于 2012-12-21T17:39:49.593 回答
0

你可以这样做,

exports.about = function(req, res){
  res.render('about', {title: 'about page', time: new Date().toLocaleDateString() });
};

但仅此而已。我同意弗里茨·范·坎彭的观点。

于 2012-12-21T17:39:41.500 回答
0

我的观点是删除 mytime var 是更好的风格,因为您只是获取当前系统时间,而 new Date() 使意图非常清楚。

exports.about = function (req, res) {
    res.render('about', {
        title: 'about page',
        time: new Date().toLocaleDateString()
    });
};
于 2012-12-21T17:48:13.060 回答