亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

AngularJS中的模塊詳解

2019-11-20 13:17:39
字體:
來源:轉載
供稿:網友

在講angularjs的模塊之前,我們先介紹一下angular的一些知識點:

AngularJS是純客戶端技術,完全用Javascript編寫的。它使用的是網頁開發的常規技術(HTML,CSS,Javascript),目的是讓網頁應用開發更快更容易。

AngularJS簡化應用開發的一個重要方法是,將一個些通用的低級開發操作包裝起來提供給開發者。AngularJS會自動處理好這些低級操作。它們包括:

1.DOM操作
2.設置事件的監聽
3.輸入驗證,因為AngularJS會處理大部分這些操作,所以開發者就能更多的專注在應用的業務邏輯上,更少地編寫那些重復性的、易錯的、低級的代碼。

在AngularJS簡化開發的同時,它也為客戶端帶來了一些精巧的技術,它們包括:

1.數據、業務邏輯、視圖的分離
2.數據和視圖的自動綁定
3.通用服務
4.依賴注入(主要用于聚合服務)
5.可擴展的HTML編譯器(完全由JavaScript編寫)
6.易于測試
7.客戶端對這些技術的需求其實已經存在很久了。

同時,你還可以用AngularJS來開發單頁或者多頁的應用,不過其主要還是用來開發單頁的。 AngularJS支持瀏覽器的歷史操作,向前,向后按鈕,單頁應用中的收藏操作。

接下來,我們來詳細講解angularJS的模塊。

大部分應用都有一個主方法用來實例化、組織、啟動應用。AngularJS應用沒有主方法,而是使用模塊來聲明應用應該如何啟動。這種方式有以下幾個優點:

1.啟動過程是聲明式的,所以更容易懂。
2.在單元測試是不需要加載全部模塊的,因此這種方式有助于寫單元測試。
3.可以在特定情況的測試中增加額外的模塊,這些模塊能更改配置,能幫助進行端對端的測試。
4.第三方代碼可以打包成可重用的模塊。
5.模塊可以以任何先后或者并行的順序加載(因為模塊的執行本身是延遲的)。

舉個例子:

<!doctype html><html ng-app="myApp"> <head>  <script src="http://code.angularjs.org/angular-1.0.2.min.js"></script>  <script>      var myAppModule = angular.module('myApp', []);      // configure the module.      // in this example we will create a greeting filter      myAppModule.filter('greet', function() {         return function(name) {            return 'Hello, ' + name + '!';         };      });  </script> </head> <body>  <div>   {{ 'World' | greet }}  </div> </body></html>

上面的例子,我們是通過在<html ng-app="myApp">中進行指定,來實現使用myApp這個模塊啟動應用的。

以上這個例子寫法很簡單,但是不適合用同樣的寫法來寫大型應用。我們推薦是將你的應用拆分成以下幾個模塊:

1.一個服務模塊,用來做服務的聲明。
2.一個指令模塊,用來做指令的聲明。
3.一個過濾器模塊,用來做過濾器聲明。
4.一個依賴以上模塊的應用級模塊,它包含初始化代碼。

舉個例子:

<!doctype html><html ng-app="xmpl"> <head>  <script src="http://code.angularjs.org/angular-1.0.2.min.js"></script>  <script src="script.js"></script> </head> <body>  <div ng-controller="XmplController">   {{ greeting }}!  </div> </body></html>[/code]script.js:[code]angular.module('xmpl.service', []).   //服務模塊 value('greeter', {    //自定義greeter對象  salutation: 'Hello',  localize: function(localization) {    this.salutation = localization.salutation;  },  greet: function(name) {    return this.salutation + ' ' + name + '!';  } }). value('user', {   //自定義user對象  load: function(name) {    this.name = name;  } });angular.module('xmpl.directive', []);  //指令模塊angular.module('xmpl.filter', []);   //過濾器模塊angular.module('xmpl', ['xmpl.service', 'xmpl.directive', 'xmpl.filter']).  //模塊xmpl依賴于數組中的模塊 run(function(greeter, user) {  // 初始化代碼,應用啟動時,會自動執行  greeter.localize({    salutation: 'Bonjour'  });  user.load('World'); })// A Controller for your appvar XmplController = function($scope, greeter, user) {   $scope.greeting = greeter.greet(user.name);}

這樣拆分的原因是,在你的測試中常常需要忽略掉初始化代碼,因為這些代碼比較難測試。通過把它拆分出來就能在測試中方便地忽視掉它。通過只加載和當前測試相關的模塊,也能使測試更專一。以上只是一個建議,你可以放心根據你的具體情況來調整。

一個模塊就是一系列配置和代碼塊的集合,它們是在啟動階段就附加到應用上的。一個最簡單的模塊由兩類代碼塊集合組成的:

配置代碼塊 - 在注入提供者注入和配置階段執行。只有注入提供者和常量可以被注入到配置塊中。這是為了防止服務在被配置好之前就被提前初始化。
運行代碼塊 - 在注入器被創建后執行,被用來啟動應用的。只有實例和常量能被注入到運行塊中。這是為了防止在運行后還出現對系統的配置。

代碼實現:

angular.module('myModule', []).    config(function(injectables) { // provider-injector      配置代碼塊    // This is an example of config block.    // You can have as many of these as you want.    // You can only inject Providers (not instances)    // into the config blocks.  }). run(function(injectables) { // instance-injector      運行代碼塊    // This is an example of a run block.    // You can have as many of these as you want.    // You can only inject instances (not Providers)    // into the run blocks  });

模塊還有一些配置的簡便方法,使用它們的效果等同于使用代碼塊。舉個例子:

angular.module('myModule', []). value('a', 123). factory('a', function() { return 123; }). directive('directiveName', ...). filter('filterName', ...);// is same asangular.module('myModule', []). config(function($provide, $compileProvider, $filterProvider) {  $provide.value('a', 123)  $provide.factory('a', function() { return 123; })  $compileProvider.directive('directiveName', ...).  $filterProvider.register('filterName', ...); });

配置塊會按照$provide, $compileProvider, $filterProvider,注冊的順序,依次被應用。唯一的例外是對常量的定義,它們應該始終放在配置塊的開始處。

運行塊是AngularJS中最像主方法的東西。一個運行塊就是一段用來啟動應用的代碼。它在所有服務都被配置和所有的注入器都被創建后執行。運行塊通常包含了一些難以測試的代碼,所以它們應該寫在單獨的模塊里,這樣在單元測試時就可以忽略它們了。

模塊可以把其他模塊列為它的依賴。“依賴某個模塊”意味著需要把這個被依賴的模塊在本塊模塊之前被加載。換句話說被依賴模塊的配置塊會在本模塊配置塊前被執行。運行塊也是一樣。任何一個模塊都只能被加載一次,即使它被多個模塊依賴。

模塊是一種用來管理$injector配置的方法,和腳本的加載沒有關系?,F在網上已有很多控制模塊加載的庫,它們可以和AngularJS配合使用。因為在加載期間模塊不做任何事情,所以它們可以以任意順序或者并行方式加載

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美午夜精品久久久久久浪潮| 国产精品久久久久免费a∨大胸| 欧美亚洲日本网站| 午夜剧场成人观在线视频免费观看| 欧美另类老肥妇| 亚洲国产精品久久| 成人中心免费视频| 久久免费视频在线| 日韩a**站在线观看| 欧美日韩免费区域视频在线观看| 日本国产欧美一区二区三区| 日本一区二区三区四区视频| 57pao成人永久免费视频| 日韩精品在线免费| 欧美日韩视频在线| 亚洲欧洲xxxx| 亚洲性av网站| 92版电视剧仙鹤神针在线观看| 91中文字幕一区| 日韩成人在线电影网| 久久中文字幕一区| 中国日韩欧美久久久久久久久| 性视频1819p久久| 国产精品久久久久久久久久小说| 日韩美女在线观看一区| 国产第一区电影| 国产精品视频久久| 欧美一区二区色| 久久久久久久久久久免费精品| 欧美激情视频三区| 992tv成人免费影院| 黑人巨大精品欧美一区免费视频| 欧美成年人视频网站| 久久免费视频在线观看| 久久精品成人动漫| 日韩一区二区三区在线播放| 久久精品视频一| 欧美中文在线观看| 国产在线观看91精品一区| 91极品女神在线| 日韩中文娱乐网| 亚洲aa在线观看| 亚洲精品久久久久久久久久久久久| 日韩欧美国产黄色| 久久国产精品久久国产精品| 最好看的2019年中文视频| 欧美一区二区三区免费视| 一区二区三区在线播放欧美| 亚洲精品福利视频| 日韩精品中文在线观看| 亚洲精品第一国产综合精品| 欧美日韩aaaa| 亚洲精品动漫久久久久| 91精品中文在线| 国产精品户外野外| 国产精品精品视频| 亚洲精品久久久久久久久久久久| 国产美女精彩久久| 国产一区二区三区三区在线观看| 亚洲91精品在线观看| 亚洲美女动态图120秒| 日韩欧美在线免费观看| 久久国产精品影片| 欧美亚洲激情在线| 亚洲欧美国产精品久久久久久久| 亚洲免费视频在线观看| 午夜精品一区二区三区视频免费看| 国内精品模特av私拍在线观看| 人人爽久久涩噜噜噜网站| 欧美日韩国产999| 久久综合亚洲社区| 日韩亚洲欧美中文高清在线| 一区二区三区视频免费在线观看| 亚洲一区制服诱惑| 曰本色欧美视频在线| 久久精品中文字幕电影| 亚洲视频在线观看网站| 亚洲三级av在线| 日韩美女在线播放| 国产精品成人免费电影| 日本久久中文字幕| 91爱爱小视频k| 亚洲春色另类小说| 日韩小视频在线观看| 欧美韩国理论所午夜片917电影| 国产激情999| 亲子乱一区二区三区电影| 亚洲国产精品人人爽夜夜爽| 欧美黑人一级爽快片淫片高清| 国产精品日韩专区| 亚洲精品99久久久久| 97在线视频精品| 国产精品久久久久久搜索| 粉嫩老牛aⅴ一区二区三区| 另类专区欧美制服同性| 国产999在线| 精品国产精品自拍| 国产视频精品久久久| 欧美在线国产精品| 亚洲欧美视频在线| 日本精品一区二区三区在线播放视频| 中文国产成人精品久久一| 欧美寡妇偷汉性猛交| 亚洲成人av片在线观看| 国产欧美日韩专区发布| 欧美日韩一区二区在线播放| 国产不卡视频在线| 欧美日韩国产精品专区| 国产精品一区二区三| 久久久久久久久亚洲| 日韩av在线影视| 热久久这里只有精品| 亚洲自拍另类欧美丝袜| 欧美成人免费全部| 日韩在线视频播放| 亚洲第一中文字幕在线观看| 欧美中文字幕视频在线观看| 国产精品第1页| 国产精品免费在线免费| 日韩女优人人人人射在线视频| 欧美在线免费视频| 亚洲国产精品va在线看黑人动漫| 日韩亚洲欧美中文高清在线| 亚洲欧洲偷拍精品| 日韩福利视频在线观看| 欧美超级免费视 在线| 欧美美女18p| 国产中文字幕日韩| 日韩av一区在线观看| 性欧美长视频免费观看不卡| 亚洲一区二区三区久久| 91国产视频在线播放| 国产精品日韩在线观看| 亚洲欧美综合另类中字| 国产九九精品视频| 亚洲国产精品小视频| 日韩精品视频在线观看网址| 久久久久北条麻妃免费看| 国产欧美精品日韩精品| 国产一区二区三区直播精品电影| 中文字幕在线成人| 国产成人自拍视频在线观看| 国产精品美女主播在线观看纯欲| www.亚洲男人天堂| 欧美高清理论片| 日日噜噜噜夜夜爽亚洲精品| 日韩激情视频在线| 国产精品福利网站| 91久久久久久国产精品| 91精品国产自产在线| 欧美小视频在线观看| 亚洲欧美国产一区二区三区| 亚洲一区www| 91精品综合久久久久久五月天| 日韩电影免费观看在线观看| 国产一区二区三区日韩欧美| 国产一区二区欧美日韩| 国产精品jvid在线观看蜜臀| 欧美另类在线观看| 国产suv精品一区二区| 日本欧美中文字幕| 久久手机精品视频| 国产网站欧美日韩免费精品在线观看| 欧美视频专区一二在线观看|