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

首頁 > 編程 > JavaScript > 正文

AngularJS Module方法詳解

2019-11-20 11:04:05
字體:
來源:轉載
供稿:網友

AngularJS是什么?

AngularJs(后面就簡稱ng了)是一個用于設計動態web應用的結構框架。首先,它是一個框架,不是類庫,是像EXT一樣提供一整套方案用于設計web應用。它不僅僅是一個javascript框架,因為它的核心其實是對HTML標簽的增強。

何為HTML標簽增強?其實就是使你能夠用標簽完成一部分頁面邏輯,具體方式就是通過自定義標簽、自定義屬性等,這些HTML原生沒有的標簽/屬性在ng中有一個名字:指令(directive)。后面會詳細介紹。那么,什么又是動態web應用呢?與傳統web系統相區別,web應用能為用戶提供豐富的操作,能夠隨用戶操作不斷更新視圖而不進行url跳轉。ng官方也聲明它更適用于開發CRUD應用,即數據操作比較多的應用,而非是游戲或圖像處理類應用。

為了實現這些,ng引入了一些非常棒的特性,包括模板機制、數據綁定、模塊、指令、依賴注入、路由。通過數據與模板的綁定,能夠讓我們擺脫繁瑣的DOM操作,而將注意力集中在業務邏輯上。

  另外一個疑問,ng是MVC框架嗎?還是MVVM框架?官網有提到ng的設計采用了MVC的基本思想,而又不完全是MVC,因為在書寫代碼時我們確實是在用ng-controller這個指令(起碼從名字上看,是MVC吧),但這個controller處理的業務基本上都是與view進行交互,這么看來又很接近MVVM。讓我們把目光移到官網那個非醒目的title上:“AngularJS ― Superheroic JavaScript MVW Framework”。

AngularJS中的Module類負責定義應用如何啟動,它還可以通過聲明的方式定義應用中的各個片段。我們來看看它是如何實現這些功能的。

一.Main方法在哪里

        如果你是從Java或者Python編程語言轉過來的,那么你可能很想知道AngularJS里面的main方法在哪里?這個把所有東西啟動起來,并且第一個被執行的方法在哪里?JavaScript代碼里面負責實例化并且把所有東西組合到一起,然后命令應用開始運行的那個方法在哪里?

        事實上,AngularJS并沒有main方法,AngularJS使用模塊的概念來代替main方法。模塊允許我們通過聲明的方式來描述應用中的依賴關系,以及如何進行組裝和啟動。使用這種方式的原因如下:

        1.模塊是聲明式的。這就意味著它編寫起來更加容易,同時理解起來也很容易,閱讀它就像讀普通的英文一樣!

        2.它是模塊化的。這就迫使你去思考如何定義你的組件和依賴關系,讓它們變得更加清晰。

        3.它讓測試更加容易。在單元測試呂,你可以有選擇地加入模塊,并且可以避免代碼中存在無法進行單元測試的內容。同時,在場景測試中,你可以加載其他額外的模塊,這樣就可以更好地和其他組件配合使用。

        例如,在我們的應用中有一個叫做"MyAwesomeApp"的模塊。在HTML里面,只要把以下內容添加到<html>標簽中(或者從技術上說,可以添加到任何標簽中):

復制代碼 代碼如下:

<html ng-app="MyAwesomeApp">

 ng-app指令就會告訴AngularJS使用MyAwesomeApp模塊來啟動你的應用。那么,應該如何定義模塊呢?舉例來說,我們建議你為服務、指令和過濾器分別定義不同的模塊。然后你的主模塊可以聲明依賴這些模塊。

        這樣可以使得模塊管理更加容易,因為它們都是良好的、完備的代碼塊,每個模塊有且只有一種職能。同時,單元測試可以只加載它們所關注的模塊,這樣就可以減少初始化的次數,單元測試也會變得更精致、更專注。

二.加載和依賴

        模塊加載動作發生在兩個不同的階段,這一點從函數名上面就可以反映出來,它們分別是Config代碼塊和Run代碼塊(或者叫做階段)。

1.Config代碼塊

        在這一階段里面,AngularJS會連接并注冊好所有數據源。因此,只有數據源和常量可以注入到Config代碼塊中。那些不確定是否已經初始化好的服務不能注入進來。

2.Run代碼塊

        Run代碼塊用來啟動你的應用,并且在注射器創建完成之后開始執行。為了避免在這一點開始之后再對系統進行配置操作,只有實例和常量可以被注入到Run代碼塊中。你會發現,在AngularJS中,Run代碼塊是與main方法最類似的東西。

三.快捷方法

        利用模塊可以做什么呢?我們可以用它來實例化控制器、指令、過濾器以及服務,但是利用模塊類還可以做更多事情。如下模塊配置的API方法:

1.config(configFn)

        利用此方法可以做一些注冊工作,這些工作需要在模塊加載時完成。

2.constant(name, object)

        此方法會首先運行,所以你可以用它來聲明整個應用范圍內的常量,并且讓它們在所有配置(config方法)和實例(后面的所有方法,例如controller、service等)方法中可用。

3.controller(name,constructor)

        它的基本作用是配置好控制器方便后面使用。

4.directive(name,directiveFactory)

        可以使用此方法在應用中創建指令。

5.filter(name,filterFactory)

        允許你創建命名的AngularJS過濾器,就像前面章節所討論的那樣。

6.run(initializationFn)

        如果你想要在注射器啟動之后執行某些操作,而這些操作需要在頁面對用戶可用之前執行,就可以使用此方法。

7.value(name,object)

        允許在整個應用中注射值。

8.factory(name,factoryFn)

        如果你有一個類或者對象,需要首先為它提供一些邏輯或者參數,然后才能對它初始化,那么你就可以使用這里的factory接口。factory是一個函數,它負責創建一些特定的值(或者對象)。我們來看一個greeter(打招呼)函數的實例,這個函數需要一條問候語來初始化:

function Greeter(salutation) { this.greet = function(name) { return salutation + ' ' + name;};}

 greeter函數示例如下:

myApp.factory('greeter', function(salut) { return new Greeter(salut);});

 然后可以這樣來調用它:

var myGreeter = greeter('Halo');

9.service(name,object)

        factory和service之間的不同點在于,factory會直接調用傳遞給它的函數,然后返回執行的結果;而service將會使用"new"關鍵字來調用傳遞給它的構造方法,然后再返回結果。所以,前面的greeter Factory可以替換成下面這個greeter Service:

myApp.service('greeter', Greeter);

 每當我們需要一個greeter實例的時候,AngularJS就會調用新的Greeter()來返回一個實例。

10.provider(name,providerFn)

        provider是這幾個方法中最復雜的部分(顯然,也是可配置性最好的部分)。provider中既綁定了factory也綁定了service,并且在注入系統準備完畢之前,還可以享受到配置provider函數的好處(也就是config塊)。

        我們來看看使用provider改造之后的greeter Service是什么樣子:

myApp.provider('greeter', function() { var salutation = 'Hello'; this.setSalutation = function(s) { salutation = s;} function Greeter(a) { this.greet = function() { return salutation + ' ' + a;}} this.$get = function(a) { return new Greeter(a);};});

這樣我們就可以在運行時動態設置問候語了(例如,可以根據用戶使用的不同語言進行設置)。

var myApp = angular.module(myApp, []).config(function(greeterProvider) {greeterProvider.setSalutation('Namaste');});
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久综合免费视频| 午夜精品免费视频| 亚洲欧美日韩爽爽影院| 久久久这里只有精品视频| 国产日韩欧美自拍| 亚洲国产精品成人精品| 国产免费一区二区三区香蕉精| 欧美日韩一区二区精品| 日本精品久久电影| 91亚洲精品在线观看| 日韩免费观看av| 欧美专区在线视频| 亚洲激情视频网站| 久久青草福利网站| 97高清免费视频| 成人免费在线视频网址| 亚洲精品一区二区网址| 亚洲精品视频在线播放| 欧美性xxxx极品hd欧美风情| 亚洲xxxx在线| 国产福利成人在线| 国产精品一区二区av影院萌芽| 日韩高清人体午夜| 91影院在线免费观看视频| 成人福利视频网| 日韩精品极品在线观看播放免费视频| 97在线精品视频| 国内精品久久久久久久| 精品一区二区亚洲| 久操成人在线视频| 91成人国产在线观看| 粉嫩老牛aⅴ一区二区三区| 欧美大学生性色视频| 国产精品久久久久久影视| 91国产精品91| 欧美成人一区二区三区电影| 国产精品欧美一区二区三区奶水| 久久精品国产亚洲精品2020| 国产精品99蜜臀久久不卡二区| 国产视频福利一区| 亚洲另类激情图| 国产日韩综合一区二区性色av| 精品爽片免费看久久| 久久久国产精品视频| 国产精品手机播放| 亚洲成年人在线| 国产精品国产亚洲伊人久久| 精品亚洲精品福利线在观看| 日韩美女在线看| 亚洲国产成人久久综合| 午夜欧美大片免费观看| 欧美与黑人午夜性猛交久久久| 欧美激情视频在线免费观看 欧美视频免费一| 91精品国产成人| 久久久久久久久91| 久久精品国产精品| 91午夜在线播放| 久久久中精品2020中文| 一本色道久久综合狠狠躁篇的优点| 久久综合88中文色鬼| 久热精品视频在线免费观看| 国产精品一二三视频| 欧美日韩国产精品专区| 日韩经典一区二区三区| 日韩高清电影免费观看完整版| 欧美国产在线视频| 亚洲aⅴ男人的天堂在线观看| 精品久久久久久久中文字幕| 在线亚洲午夜片av大片| 欧美成人免费在线观看| 国产亚洲精品久久久优势| 日韩精品视频中文在线观看| 韩国美女主播一区| 久久69精品久久久久久久电影好| 日韩中文第一页| 成人免费黄色网| 亚洲欧美制服综合另类| 中文字幕久热精品视频在线| 国产成人综合精品在线| 国产精品久久久久aaaa九色| 成人免费高清完整版在线观看| 亚洲第一精品自拍| 亚洲福利视频网| 欧美大片在线看免费观看| 深夜福利国产精品| 精品国产欧美一区二区五十路| 久久这里只有精品视频首页| 亚洲综合视频1区| 国产精品99久久久久久白浆小说| 精品视频久久久久久| www.亚洲免费视频| 国产精品丝袜一区二区三区| 国产精品亚洲欧美导航| 91精品国产高清久久久久久| 久久精品视频99| 久久国产精品久久国产精品| 日韩中文字幕国产精品| 九九热这里只有精品6| 久久精品视频中文字幕| 97视频免费在线观看| www国产精品视频| 成人网在线免费看| 91精品免费看| 成人网在线观看| 久久精品中文字幕| 欧美日韩国产页| 欧美激情一区二区三区在线视频观看| 亚洲综合国产精品| 亚洲综合最新在线| 亚洲精品电影在线| 欧美中文字幕在线视频| 久久久久五月天| 久久久久久久影院| 久久成人精品视频| 精品国产一区二区三区在线观看| 国产欧美精品久久久| 欧美成人精品在线视频| 亚洲福利视频专区| 亚洲精品网站在线播放gif| 亚洲国产成人爱av在线播放| 久久久久久久香蕉网| 久久亚洲私人国产精品va| 久久久免费观看| 国产一区二区免费| 亚洲а∨天堂久久精品9966| 日韩美女毛茸茸| 亚洲激情第一页| 久久久久久97| 亚洲欧美日韩天堂| 久久人人爽人人爽爽久久| 97成人超碰免| 日韩精品中文字幕在线| 欧美黄色片免费观看| 国产精品网址在线| 欧美精品videofree1080p| 青青青国产精品一区二区| 国产亚洲欧洲高清一区| 中文字幕亚洲一区二区三区五十路| 国产精品一区二区久久精品| 日韩中文视频免费在线观看| 日韩美女中文字幕| 欧美一级大片在线免费观看| 久久精品国产久精国产一老狼| 国产在线拍偷自揄拍精品| 在线观看精品自拍私拍| 4p变态网欧美系列| 欧美大全免费观看电视剧大泉洋| 亚洲视频欧美视频| 亚洲国产精品一区二区三区| 91久久国产婷婷一区二区| 中文字幕亚洲无线码在线一区| 亚洲伊人第一页| 日韩在线观看精品| 国产精品网址在线| 久久国产精品久久精品| 美女精品久久久| 亚洲人成网站在线播| 国产精品久久不能| 国产成人精品久久亚洲高清不卡| 久久精品一偷一偷国产| 4438全国亚洲精品在线观看视频| 日韩精品视频三区| 92看片淫黄大片欧美看国产片| 美女久久久久久久久久久|