模块和控制器

什么是Module

  • 大部分应用都有⼀一个主方法(main)用来实例化、组织、启动应用。

  • AngularJS应用没有主方法,而是使用模块来声明应用应该如何启动。

  • 模块允许通过声明的方式来描述应用中的依赖关系,以及如何进行组装和启动

Angular 模块

  • 模块是组织业务的一个框框,在一个模块当中定义多个服务。当引入了一个模块的时候,就可以使用这个模块提供的一种或多种服务了。

  • AngularJS 本身的一个默认模块叫做 ng ,它提供了 $http , $scope等等服务

  • 服务只是模块提供的多种机制中的一种,其它的还有指令(directive ),过滤器( filter ),及其它配置信息。

  • 也可以在已有的模块中新定义一个服务,也可以先新定义一个模块,然后在新模块中定义新服务。

  • 服务是需要显式地的声明依赖(引入)关系的,让 ng 自动地做注入

Module优点

  • 启动过程是声明式的,更容易懂。

  • 在单元测试是不需要加载全部模块的,因此这种方式有助于写单元测试。

  • 可以在特定情况的测试中增加额外的模块,这些模块能更改配置,能帮助进行端对端的测试。

  • 第三方代码可以作为可复用的module打包到angular中

  • 模块可以以任何先后或者并行的顺序加载(因为模块的执行本身是延迟的)。

ng-app

通过ng-app指定对应的模块应用启动

定义模块

  • angular.module(name[, requires], configFn);

  • configFn 会在模块初始化时执行,可以在里配置模块的服务

  • configFn @see angular.config()

例子

index.html

<div ng-app="myApps">

        <div ng-controller="firstController">
            {{name}}
        </div>

    </div>
<script src="//cdn.bootcss.com/angular.js/1.4.8/angular.js"></script>
<script type="text/javascript" src="app/index.js"></script>

app/index.js

var app = angular.module('myApps',[]);

app.controller('firstController',function($scope){
    $scope.name = '张三';
});

Last updated