一句话: 它们Angular框架声明周期的各个阶段,常规约定各专一于特定功能,通过处理也能够互相替换
1.功能细分简解
config
Angular module模块的加载阶段-应用在此时尚未启动
run
Angular应用是第一个被运行的方法,至关于其它语言中的main()方法
factory
factory() 方法是建立和配置服务的最快捷方式,单例对象,在应用的生命周期内只会被调用一次 注入factory,至关于注入factory定义时的函数调用入口。 用 Factory 就是建立一个对象,为它添加属性,而后把这个对象返回出来。你把 service 传进 controller 以后,在 controller 里这个对象里的属性就能够经过 factory 使用了
service
service() 能够注册一个支持构造函数的服务,它容许咱们为服务对象注册一个构造 函数 注入service,至关于注入service定义时的function实例 Service 是用"new"关键字实例化的。所以,你应该给"this"添加属性,而后 service 返回"this"。你把 service 传进 controller 以后,在controller里 "this" 上的属性就能够经过 service 来使用了。
provider
service和factory都是由$provide 服务建立的,$provide服务负责在运行时初始化这些提供者 注入provider,至关于注入provider内$get定义的函数实例的调用 Providers是惟一一种你能够传进 .config() 函数的 service
constant
Angular常量,至关于其余语言中的静态常量类
value
相似constant,value()方法和constant()方法之间最主要的区别是,constant能够注入到配置函数config中,而value不行
config实例 html
angular.module('myApp', []) .config(function($provide, $compileProvider) { $provide.factory('myFactory', function() { var service = {}; return service; }); $compileProvider.directive('myDirective', function() { return { template: '<button>Click me</button>' }; }); }); angular.module('myApp', []) .config(function($routeProvider) { $routeProvider.when('/', { controller: 'WelcomeController', template: 'views/welcome.html' }); }) .config(function(ConnectionProvider) { ConnectionProvider.setApiKey('SOME_API_KEY'); });
run实例 git
angular.module('myApp', []) .run(function($rootScope, AuthService) { $rootScope.$on('$routeChangeStart', function(evt, next, current) { // 若是用户未登陆 if (!AuthService.userLoggedIn()) { if (next.templateUrl === "login.html") { // 已经转向登陆路由所以无需重定向 } else { $location.path('/login'); } } }); });
service factory provider实例 github
this is servicebootstrap
this is factory框架
this is provideride
constant实例 函数
这个常量服务能够像其余服务同样被注入到配置函数中this
123123123 from scope
from constant
value实例 spa
123123123