步驟一
有兩個property,其它都是function
一共有5個方法
annotate:分析函式簽名(不要new的原因)
步驟二
if (window.angular.bootstrap)
angular的三種啟動方式步驟三嘗試繫結jquery,如果發現匯入了jquery ,則使用匯入的jquery,否則,使用angular自己封裝的jqlite
inangular.js
line 1521:
bindjquery();
inangular.js
line 1534:
jquery = window.jquery;
if (jquery && jquery.fn.on) );
測試
ng-controller="myctrl">
}span>
div>
div>
body>
html>
jsvar mymodule = angular.module("mymodule", );
mymodule.controller('myctrl', ['$scope',
function
($scope)
]);
檢視執行流程
步驟四發布ng提供的api
inangular.js
line 2162 : publishexternalapi(angular);
//構建模組載入器
angularmodule = setupmoduleloader(window);
try catch (e)
模組載入器的實現原理
inangular.js
functionsetupmoduleloader(window)
function
setupmoduleloader
(window)
var angular = ensure(window, 'angular', object);
// we need to expose `angular.$$minerr` to modules such as `ngresource` that reference it during bootstrap
angular.$$minerr= angular.$ $minerr || minerr;
//把module方法放到angular的全域性物件上,ensure就是乙個屬性拷貝的過程
return ensure(angular, 'module', function();
}
把工具函式給載到模組裡
return
function
module(name, requires, configfn)
檢視模組裡所包含的內容
html>
js
/**
* 定義模組
*/var mymodule = angular.module("mymodule", );
/** * 從debug的過程可以看到,angular中的「模組」只是乙個閉包空間(或者叫命名空間)
* 所有模組都被註冊在modules這個物件上
*/console.log(mymodule);
檢視控制台
構建內建模組ng
inangular.js
line 2169publishexternalapi(angular)
angularmodule('ng', ['nglocale'], ['$provide',
function ngmodule($provide) );
$provide.provider('$compile', $compileprovider).
directive();
bootstrap
function
bootstrap
(element, modules, config)
AngularJS的啟動過程分析
name angular 如果window.angular已經有值了,就把原有的賦值給前面angular,如果沒有則用window.angular空物件賦值給angular angular window.angular window.angular angularmodule,uid 0 funct...
mysql啟動過程長 mysql啟動過程
mysql啟動過程經過以下順序 1.mysql讀取配置檔案的順序 讀取順序 etc my.cnf etc mysql my.cnf usr etc my.cnf my.cnf 2.mysql啟動方式 mysql啟動方式有三種 mysqld mysqld safe mysqld multi 主要用於多...
Linux啟動過程
1 開啟 pc電源 pc加電後,乙個特殊的硬體電路會觸發 cpu 的 reset 腳的邏輯值,然後一些 cpu 暫存器,如 cs eip 等被給定乙個值,接著 cpu 跳轉到乙個固定位址開始執行 bios 2 bios 自檢,按設定的裝置啟動 bios 對硬體進行一系列徹底的檢查,如 cpu 型別 ...