一句話: 它們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