angular模块名中的点是什么意思?

What's the dot mean in the name of angular module

本文关键字:是什么 意思 模块 angular      更新时间:2023-09-26

我是这个领域的新手。当我读到一些代码,比如https://plnkr.co/edit/YeahrG28bT2izX8gMKor?p=preview我发现,如果我不把'myApp.dashboard','myApp.value'放在angular.module('myApp', ['myApp.dashboard','myApp.value']);中,它将不起作用。

如果我这样写:

(function() {
  angular.module('myApp', []);
})();
(function() {
  angular.module('myApp.dashboard', ['myApp.value']);
})();
(function() {
  angular.module('myApp.value', []);
})();

它也不能正常工作。

你能告诉我这里的点是什么意思,为什么angular.module('myApp.dashboard', ['myApp.value']);不起作用?

对不起,这段代码真的很乱,我没有做太多的修改,只是为了测试。

(function() {
  angular.module('myApp', ['myApp.dashboard','myApp.value']);
})();
(function() {
  angular.module('myApp.dashboard', []);
})();
(function() {
  angular.module('myApp.value', []);
})();
(function() {
  'use strict';
  angular.module('myApp.value').factory('whichToShow', function() {
    alert("running2");
    var logged = true;
    return {
      getVar: function() {
        return logged;
      },
      setVar: function(value) {
        logged = value;
      }
    };
  });
})();
(function() {
  'use strict';
  angular.module('myApp.dashboard').controller('mainControl', mainControl);
  mainControl.$inject = ['whichToShow'];
  alert("running1");
  function mainControl(whichToShow) {
    this.logged = whichToShow.getVar();
    alert("this.logged");
  }
})();

补充:我不应该问第二个问题,我在另一个地方犯了一个错误,对不起。

这实际上是一种可以遵循的编码风格,以消除命名冲突。

使用唯一命名约定和子模块的分隔符。

为什么?:唯一的名称有助于避免模块名称冲突。分隔符帮助定义模块及其子模块层次结构。例如应用程序可能是你的根模块,而app.dashboard和app.values可能是模块作为应用的依赖项。

参考John Papa Angular Style Guide Style Y021

我还建议你对angular中每个组件的样式指南有一个清晰的理解,就像上面John Papa的Github repo所建议的那样。

['myApp.dashboard','myApp.value']说明依赖关系。这意味着myApp需要使用这些依赖项来工作。

至于点,它只是一个很好的命名约定。你可以不用also。名称myApp.dashboard可以帮助显示dashboard模块是myApp模块的一部分或子模块。但从技术上讲,这个点是不必要的。您也可以将其命名为dashboard。依赖关系在[ ]数组中显式表示,而不是在名称本身中。