【问题标题】:How do I reduce this code to one line?如何将此代码减少到一行?
【发布时间】:2012-12-09 07:13:30
【问题描述】:

我对 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() 成一个语句?

【问题讨论】:

  • 这里最好的:new Date().toLocaleDateString().
  • 大小并不重要——可读性很重要。这是一种你想尽快摆脱的心态——相信我。
  • 你可以使用exports.about = function(req, res) { var mytime = new Date(); res.render('about', {title: 'about page', time: mytime.toLocaleDateString() }); };,但这并没有什么意义。
  • VisioN 有我在这里寻找的答案。谢谢!!

标签: javascript node.js express


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你可以,

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

      但仅此而已。我同意 Frits van Campen 的观点。

      【讨论】:

        【解决方案4】:

        一行

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

        虽然这很愚蠢。您的原始代码没有任何问题。

        【讨论】:

          【解决方案5】:

          Frits' answer:可以,但真的有必要吗?就像你做的那样,它很好读。

          但如果你真的,真的想要,这就是方法:

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

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

          【讨论】:

            【解决方案6】:

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


            您可以将mytime.toLocaleDateString() 写成(new Date()).toLocaleDateString(),但我不建议这样做。

            我喜欢的样式:

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

            【讨论】:

            • 好的,我明白了,我可能会保持原样。但这实际上是不可能的,还是不推荐?
            • 不需要额外的括号。
            • 是的,需要括号;)new可能也不需要。
            • @jstevens13 “不可能”是糟糕的程序员所说的。没有什么是不可能的,这样做只是一件愚蠢的事情。
            • @FritsvanCampen new 在这里至关重要。
            猜你喜欢
            • 1970-01-01
            • 2021-12-02
            • 2016-07-24
            • 2012-12-18
            • 2019-12-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多