【问题标题】:Angular JS naming conventions ($, camelCase and PascalCase)Angular JS 命名约定($、camelCase 和 PascalCase)
【发布时间】:2013-03-22 20:09:11
【问题描述】:

AngularJS 中使用 $ 前缀提供程序的约定是什么? 我应该在自己的代码中为所有自定义服务添加前缀吗?

看起来所有带有 Angular 的东西都有前缀服务,例如$http。然而,在大多数文章中,控制器没有以$ 为前缀。 此外,所有 Angular 代码都附带以camelCase 命名的服务,但我也在许多在线博客中看到了PascalCase。哪一个是约定?

【问题讨论】:

标签: angularjs


【解决方案1】:
  1. PascalCase 用于控制器和返回应该是新的构造函数的函数,例如var user = new User()。 Angular 中的控制器被视为作用域构造函数——因此是 PascalCase。

  2. 控制器的名称中应附加Controller。命名示例见http://demisx.github.io/angularjs/2014/09/14/angular-what-goes-where.html

  3. camelCase 用于其他所有内容。

这些遵循世界各地的开发人员习惯的重要 Javascript 约定。

【讨论】:

  • 在控制器末尾是否添加Ctrl
  • 问得好,丹。在控制器名称末尾添加Controller。不要缩写。我已经更新了我的答案。另请注意,Angular 2.0 中将不再使用独立控制器,取而代之的是 Web 组件。
【解决方案2】:

文档为内部服务声明了此约定,但也声明您不应为自己的服务这样做以减少命名冲突。

http://docs.angularjs.org/guide/concepts#angular_namespace

此外,关于 camelCase,文档说要使用 camelCase。

Angular 使用带破折号的 name-with-dashes 来表示属性名,使用 camelCase 表示 对应的指令名称

http://docs.angularjs.org/tutorial/step_00

【讨论】:

  • 它说的是指令,但是服务和工厂之类的东西怎么样?
  • 在文档中,他们使用 camelCase 处理大多数内容(出于任何原因,控制器除外),所以我会说这是要走的路。
  • 我猜是因为控制器被认为是“类”,因为它们在每次使用时都是“新的”,而服务是单例的,通常期望返回一个“实例”。然而,没有什么能阻止您将构造函数作为服务返回,因此在这种情况下,使用 PascalCase 来区分它可能是有意义的。
  • 名字应该以Service结尾吗?是不是太啰嗦了?
【解决方案3】:
We can filter Text in CamelCase using following code 
 app.filter('camelCase', function(){
            var camelCaseFilter = function(input){
                    var words = input.split(' ');
                     for (var i = 0, len = words.length; i < len; i++)
                         words[i] = words[i].charAt( 0 ).toUpperCase() + words[i].slice(1);
                     return words.join(' ');
                 };
                 return camelCaseFilter;
        });

【讨论】:

    猜你喜欢
    • 2011-07-29
    • 2018-02-14
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    • 2021-10-31
    相关资源
    最近更新 更多