【问题标题】:How to style javascript code to avoid closing parenthesis waterfall?如何设置javascript代码的样式以避免关闭括号瀑布?
【发布时间】:2014-05-14 08:08:26
【问题描述】:

以下代码示例(取自 AngularJS ui-router wiki)说明了我的问题。

angular.module('myApp', ['ui.router', 'ui.router.stateHelper'])
  .config(function(stateHelperProvider){
    stateHelperProvider.setNestedState({
      name: 'root',
      templateUrl: 'root.html',
      children: [
        {
          name: 'contacts',
          templateUrl: 'contacts.html',
          children: [
            {
              name: 'list',
              templateUrl: 'contacts.list.html'
            }
          ]
        },
        {
          name: 'products',
          templateUrl: 'products.html',
          children: [
            {
              name: 'list',
              templateUrl: 'products.list.html'
            }
          ]
        }
      ]
    });
  });

具体来说,这些行:

            }
          ]
        }
      ]
    });
  });

我觉得这很丑。有没有办法避免这些?

注意:我意识到 CoffeeScript 可以提供一些帮助,但我主要对 Javascript 可以做什么感兴趣。

【问题讨论】:

    标签: javascript coding-style


    【解决方案1】:

    总有分而治之:

    function appropriateNameHere(stateHelperProvider) {
        var contacts, products, state;
    
        contacts = {
            name: 'contacts',
            templateUrl: 'contacts.html',
            children: [{
                name: 'list',
                templateUrl: 'contacts.list.html'
            }]
        };
        products = {
            name: 'products',
            templateUrl: 'products.html',
            children: [{
                name: 'list',
                templateUrl: 'products.list.html'
            }]
        };
        state = {
            name: 'root',
            templateUrl: 'root.html',
            children: [contacts, products]
        };
        stateHelperProvider.setNestedState(state);
    }
    angular.module(
        'myApp',
        ['ui.router', 'ui.router.stateHelper']
      ).config(appropriateNameHere);
    

    你在哪里划线几乎完全基于主观/意见。有些人会按原样处理您的代码,而其他人会觉得它需要比我上面做的更细化。但这是您在应用您的意见时使用的基本技巧。 :-)

    【讨论】:

      【解决方案2】:

      您可以创建函数,而不是使用匿名函数。 您也可以使用变量而不是直接传递数据。

      【讨论】:

        【解决方案3】:

        有没有办法避免这些?

        你可以试试 Coffeescript,你会写的地方

        angular.module("myApp", [
          "ui.router"
          "ui.router.stateHelper"
        ]).config (stateHelperProvider) ->
          stateHelperProvider.setNestedState
            name: "root"
            templateUrl: "root.html"
            children: [
              {
                name: "contacts"
                templateUrl: "contacts.html"
                children: [
                  name: "list"
                  templateUrl: "contacts.list.html"
                ]
              }
              {
                name: "products"
                templateUrl: "products.html"
                children: [
                  name: "list"
                  templateUrl: "products.list.html"
                ]
              }
            ]
        

        但不,一般来说你无法避免它们。

        【讨论】:

        • 感谢您的回答 - 我意识到 CoffeeScript 在这里可以提供一些帮助,但我故意没有提及它,因为我对 Javascript 解决方案感兴趣。我现在已将此注释添加到问题中。
        • 是的,那么唯一的方法是将表达式拆分为更小的部分,而不是使用一个大的文字。
        猜你喜欢
        • 2011-05-19
        • 1970-01-01
        • 1970-01-01
        • 2010-10-01
        • 2011-03-22
        • 2011-12-27
        • 2022-12-05
        • 2021-07-30
        • 1970-01-01
        相关资源
        最近更新 更多