Angular does an excellent job of managing object dependencies. it can even take care of module dependencies.
So we can easily group releated services into one module, and make other modules dependent on it.
    angular.module('my',['my1','my2']);
    the preceding code create a module named "my" which dependent on two other modules "my1" and "my2".

So modules can dependent on other modules and services can dependent on other services.
and this raises several interesting questions, which are as follows:
    1. Can a service defined in one AngularJS module depend on services in another module?

    2. Can services defined in a child module depend on a service in a parent module, or only on services defined in child modules?
    3. Can we have module-private services visible only in a certain module?
    4. Can we have several services with the same name defined in different modules?
    
    angular.module('app',['engines'])
    .factory('car',function(dieselEngine){
        return {
            info:function(){
                console.log(dieselEngine.type);
            }
        };
    });

angular.module('engines',[])
    .factory('dieselEngine',function(){
            return {
                type:'a sport car'
            };
    });
    above code can execute with no problems.
    what's more surprising is that services defined on sibling modules are also visible to each other. check below code snippet out:
    
    angular.module('my',['car','engines']);
    
    angular.module('car',[])
    .factory('carlog',function(dieselEngine){
            return {
                info:function(){
                    console.log(dieselEngine.type);
                }
            };
    });
    
    angular.module('engines',[])
    .factory('dieselEngine',function(){
            return {
                type:'a sport car'
            };
    });

conclusion: a service defined in one of the application's modules is visible to all the other modules. In other words,
        hierarchy of modules doesn't influence services' visibility to other modules. when Angujar bootstraps an application,
        it combines all the services defined across all the modules into one application, that is , global namespace.
        
    Since Angular combines all the services from all modules into one big namespace.

    there can be only one service with a given name.
    
    currently, there is no way to restrict service's visibility to the other modules.

AngularJs(Part 4)--Modules depending on other Modules的更多相关文章

  1. Defining Go Modules

    research!rsc: Go & Versioning https://research.swtch.com/vgo shawn@a:~/gokit/tmp$ go get --helpu ...

  2. Python Tutorial 学习(六)--Modules

    6. Modules 当你退出Python的shell模式然后又重新进入的时候,之前定义的变量,函数等都会没有了. 因此, 推荐的做法是将这些东西写入文件,并在适当的时候调用获取他们. 这就是为人所知 ...

  3. Modules和Autolinking

    Modules和Autolinking OC自从Apple接手后,一直在不断改进.随着移动开发带来的OC开发者井喷式增加,客观上也要求Apple需要提供各种良好特性来支持这样一个庞大的开发者社区.iO ...

  4. Linux下Modules的概念及使用详解[转贴]

    一.什么是 modules? modules 的字面意思就是模块,在此指的是 kernel modules:简单来说,一个模块提供了一个功能,如 isofs.minix.nfs.lp 等等.传统来讲, ...

  5. 安装你自己的perl modules

    来源: http://www.cnblogs.com/itech/archive/2012/12/17/2822044.html 安装你自己的perl modules.当没有root权限的时候,需要安 ...

  6. css模块化及CSS Modules使用详解

    什么是css模块化? 为了理解css模块化思想,我们首先了解下,什么是模块化,在百度百科上的解释是,在系统的结构中,模块是可组合.分解和更换的单元.模块化是一种处理复杂系统分解成为更好的可管理模块的方 ...

  7. 开始在web中使用JS Modules

    本文由云+社区发表 作者: 原文:<Using JavaScript modules on the web> https://developers.google.com/web/funda ...

  8. CSS Modules入门教程

    为什么引入CSS Modules 或者可以这么说,CSS Modules为我们解决了什么痛点.针对以往我写网页样式的经验,具体来说可以归纳为以下几点: 全局样式冲突 过程是这样的:你现在有两个模块,分 ...

  9. python sys.modules模块

    sys.modules是一个全局字典,该字典是python启动后就加载在内存中.每当程序员导入新的模块,sys.modules都将记录这些模块.字典sys.modules对于加载模块起到了缓冲的作用. ...

随机推荐

  1. 【BZOJ2427】[HAOI2010]软件安装 Tarjan+树形背包

    [BZOJ2427][HAOI2010]软件安装 Description 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为 ...

  2. EasyDSS RTMP流媒体服务器的HTTP接口query url的C++实现方法

    EasyDSS支持HTTP GET接口访问,我们需要获取url的各种参数信息 比如http://ip:port/action?a=1&b=2&c=3 我们需要知道对应的a.b.c的值 ...

  3. 设计模式系列一创建型模式之(简单工厂VS工厂方法)

    1.简单工厂简介 诞生背景:在我们平常编程当中,经常会使用new进行实例化一个对象,此时该类完全依赖于该对象,专业术语来说就是耦合度高.当需求发生变化时我们不得不去修改此类的源码,造成整个系统难以维护 ...

  4. RPM包的使用

    不同yum安装源配置文件 ls -l /etc/yum.repo.d RPM包的主包和子功能包 mount /dev/cdrom /media/cdrom cd /media/cdrom/Packag ...

  5. java多线程---基础

    一, java多线程----线程与进程 进程: 程序(任务)的执行过程,拥有资源(共享内存,共享资源)和线程(一个或者多个,至少一个).  例如:打开任务管理器,qq,chrome,都属于进程. 线程 ...

  6. Maven简介(五)——pom.xml

    6       Maven的pom.xml介绍 6.1     简介 pom.xml文件是Maven进行工作的主要配置文件.在这个文件中我们可以配置Maven项目的groupId.artifactId ...

  7. leetcode 859. Buddy Strings

    Given two strings A and B of lowercase letters, return true if and only if we can swap two letters i ...

  8. Android Weekly Notes Issue #316

    July 1st, 2018 Android Weekly Issue #316 本期内容包含教你使用Kotlin通过Annotation Processor生成代码文件, JetPack中的Andr ...

  9. 20145239杜文超 实验五 Java网络编程

    20145239 实验五 Java网络编程 实验内容 组队,一人服务器,一人客户端. 下载加解密代码,先编译运行代码,一人加密一人解密,适当修改代码. 然后集成代码,一人加密后通过TCP发送,加密使用 ...

  10. EASYARM-IMX283 编译uboot和uImage

    本文是按照IMX283配套光盘的流程重新编译uboot和uImage将光盘中的gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2 解压 ...