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

首頁 > 語言 > JavaScript > 正文

AngularJS中的模塊詳解

2024-05-06 16:15:31
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了AngularJS中的模塊詳解,本文給出了一個模塊實例,需要的朋友可以參考下

在講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.模塊可以以任何先后或者并行的順序加載(因為模塊的執行本身是延遲的)。

舉個例子:

 

 
  1. <!doctype html> 
  2. <html ng-app="myApp"> 
  3. <head> 
  4. <script src="http://code.angularjs.org/angular-1.0.2.min.js"></script> 
  5. <script> 
  6. var myAppModule = angular.module('myApp', []); 
  7.       // configure the module. 
  8.       // in this example we will create a greeting filter 
  9.       myAppModule.filter('greet', function() { 
  10.         return function(name) { 
  11.           return 'Hello, ' + name + '!'; 
  12.         }; 
  13.       }); 
  14. </script> 
  15. </head> 
  16. <body> 
  17. <div> 
  18. {{ 'World' | greet }} 
  19. </div> 
  20. </body> 
  21. </html> 

上面的例子,我們是通過在

中進行指定,來實現使用myApp這個模塊啟動應用的。

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

1.一個服務模塊,用來做服務的聲明。

2.一個指令模塊,用來做指令的聲明。

3.一個過濾器模塊,用來做過濾器聲明。

4.一個依賴以上模塊的應用級模塊,它包含初始化代碼。

舉個例子:

 

 
  1. <!doctype html> 
  2. <html ng-app="xmpl"> 
  3. <head> 
  4. <script src="http://code.angularjs.org/angular-1.0.2.min.js"></script> 
  5. <script src="script.js"></script> 
  6. </head> 
  7. <body> 
  8. <div ng-controller="XmplController"> 
  9. {{ greeting }}! 
  10. </div> 
  11. </body> 
  12. </html> 
  13. [/code] 
  14.  
  15. script.js: 
  16.  
  17. [code] 
  18. angular.module('xmpl.service', []). //服務模塊 
  19. value('greeter', { //自定義greeter對象 
  20. salutation: 'Hello', 
  21. localize: function(localization) { 
  22. this.salutation = localization.salutation; 
  23. }, 
  24. greet: function(name) { 
  25. return this.salutation + ' ' + name + '!'; 
  26. }). 
  27. value('user', { //自定義user對象 
  28. load: function(name) { 
  29. this.name = name; 
  30. }); 
  31. angular.module('xmpl.directive', []); //指令模塊 
  32. angular.module('xmpl.filter', []); //過濾器模塊 
  33. angular.module('xmpl', ['xmpl.service', 'xmpl.directive', 'xmpl.filter']). //模塊xmpl依賴于數組中的模塊 
  34. run(function(greeter, user) { 
  35. // 初始化代碼,應用啟動時,會自動執行 
  36. greeter.localize({ 
  37. salutation: 'Bonjour' 
  38. }); 
  39. user.load('World'); 
  40. }) 
  41. // A Controller for your app 
  42. var XmplController = function($scope, greeter, user) { 
  43. $scope.greeting = greeter.greet(user.name); 

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

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

配置代碼塊 - 在注入提供者注入和配置階段執行。只有注入提供者和常量可以被注入到配置塊中。這是為了防止服務在被配置好之前就被提前初始化。

運行代碼塊 - 在注入器被創建后執行,被用來啟動應用的。只有實例和常量能被注入到運行塊中。這是為了防止在運行后還出現對系統的配置。

代碼實現:

 

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

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

 

 
  1. angular.module('myModule', []). 
  2. value('a', 123). 
  3. factory('a'function() { return 123; }). 
  4. directive('directiveName', ...). 
  5. filter('filterName', ...); 
  6. // is same as 
  7. angular.module('myModule', []). 
  8. config(function($provide, $compileProvider, $filterProvider) { 
  9. $provide.value('a', 123) 
  10. $provide.factory('a'function() { return 123; }) 
  11. $compileProvider.directive('directiveName', ...). 
  12. $filterProvider.register('filterName', ...); 
  13. }); 

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

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲激情成人网| 成人国产在线激情| 97视频人免费观看| 亚洲精品网站在线播放gif| 国产日产欧美a一级在线| 国产精品久久久久久久电影| 国产精品久久久久久av| 国产精品偷伦视频免费观看国产| 国产午夜精品美女视频明星a级| 欧美激情性做爰免费视频| 色老头一区二区三区| 91免费精品视频| 亚洲国产又黄又爽女人高潮的| 亚洲免费一在线| 91精品久久久久久久久久| 播播国产欧美激情| 亚洲aⅴ日韩av电影在线观看| 97人人做人人爱| 亚洲欧美另类在线观看| 91美女高潮出水| 国产欧美一区二区三区视频| 91在线高清免费观看| 久久亚洲综合国产精品99麻豆精品福利| 日韩亚洲精品视频| 国产福利视频一区二区| 欧美日韩免费一区| 日韩av手机在线| 精品国产一区二区三区久久久| 国产精品久久久久影院日本| 亚洲免费视频一区二区| 成人精品一区二区三区| 国产精品精品视频| 欧美老女人性视频| 日韩精品视频免费专区在线播放| 亚洲性夜色噜噜噜7777| 亚洲影院在线看| 亚洲欧美精品一区二区| 久久伊人色综合| 国产专区欧美专区| 成人国产在线视频| 欧美激情精品在线| 成人两性免费视频| 尤物tv国产一区| 欧美疯狂xxxx大交乱88av| www.欧美三级电影.com| 亚洲成人教育av| 成人av在线网址| 岛国av一区二区在线在线观看| 亚洲人午夜精品免费| 国产精品精品国产| 精品无人国产偷自产在线| 欧美小视频在线观看| 国产欧美日韩精品在线观看| 国产精品爱啪在线线免费观看| 国内揄拍国内精品少妇国语| 亚洲网址你懂得| 国产日韩欧美黄色| 91国自产精品中文字幕亚洲| 色播久久人人爽人人爽人人片视av| 国产高清在线不卡| 高清欧美性猛交xxxx黑人猛交| 日韩在线观看免费高清完整版| 欧美国产在线电影| 日产日韩在线亚洲欧美| 欧美激情精品久久久久久大尺度| 777国产偷窥盗摄精品视频| 欧美极品少妇xxxxⅹ免费视频| 国产精品三级美女白浆呻吟| 高清日韩电视剧大全免费播放在线观看| 亚洲视频欧美视频| 中文字幕在线看视频国产欧美在线看完整| 91精品视频一区| 日韩在线免费高清视频| 国产精品女人网站| 日韩电视剧免费观看网站| 国产婷婷成人久久av免费高清| 精品久久在线播放| 高潮白浆女日韩av免费看| 国产精品va在线播放我和闺蜜| 欧美中文在线观看| 国产欧美va欧美va香蕉在线| 亚洲护士老师的毛茸茸最新章节| 欧美色图在线视频| 国产精品久久久久久av福利软件| 久久久久久这里只有精品| 日韩国产欧美精品一区二区三区| 成人午夜在线影院| 亚洲国产毛片完整版| 97在线免费观看| 日韩av黄色在线观看| 成人精品一区二区三区电影黑人| 欧美性xxxxxx| 91精品国产91久久久久久吃药| 亚洲aⅴ日韩av电影在线观看| 久久精品国产96久久久香蕉| 青草热久免费精品视频| 亚洲综合第一页| 亚洲精品国产综合久久| 亚洲成人av中文字幕| 欧美成人午夜影院| 亚洲综合日韩中文字幕v在线| 精品国产一区二区三区久久久| 一区二区三区无码高清视频| 在线播放日韩欧美| 九九综合九九综合| 亚洲www视频| 久久69精品久久久久久久电影好| 久久精品国产电影| 麻豆一区二区在线观看| 亚洲精品福利免费在线观看| 理论片在线不卡免费观看| 91国在线精品国内播放| 欧美日韩高清在线观看| 久久久久久尹人网香蕉| 日本免费在线精品| 国产一区二区三区在线视频| 色综合老司机第九色激情| 欧美大胆a视频| 国产精品网红福利| 欧美激情videos| 国产香蕉一区二区三区在线视频| 91精品视频在线| 2019av中文字幕| 精品久久久久久久久久久| 亚洲色图35p| 欧美激情高清视频| 精品美女久久久久久免费| 国产啪精品视频| 91av视频导航| 国产精品视频yy9099| 日韩av网站电影| 欧美与欧洲交xxxx免费观看| 亚洲网站在线观看| 欧美亚洲另类激情另类| 最新国产成人av网站网址麻豆| 久久精品国产2020观看福利| 欧美日韩精品在线| 日韩av在线网址| 91在线观看免费高清完整版在线观看| 午夜精品在线观看| 亚洲欧美一区二区精品久久久| 亚洲福利精品在线| 日韩一区二区精品视频| 亚洲精品久久久久| 91精品视频在线| 日韩成人激情影院| 亚洲精品www久久久| 色婷婷av一区二区三区在线观看| 欧美自拍视频在线| 成人激情综合网| 亚洲电影免费观看高清完整版| 欧美日韩一区二区在线播放| 成人网在线视频| 欧美日韩国产一区二区三区| 国模私拍一区二区三区| 国产精品精品视频| 欧美激情videoshd| 国产国语刺激对白av不卡| 最好看的2019的中文字幕视频| 成人免费淫片aa视频免费| 亚洲欧美日本另类| 亚洲国产精品一区二区久| 亚洲性生活视频在线观看| 欧美成人午夜免费视在线看片|