搜尋
首頁web前端js教程AngularJS Module方法詳解_AngularJS

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裡面,只要把以下內容加到標籤中(或從技術上說,可以加到任何標籤中):

複製程式碼 程式碼如下:


 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"關鍵字來呼叫傳遞給它的建構方法,然後再傳回執行的結果;而service將會使用"new"關鍵字來呼叫傳遞給它的建構方法,然後再傳回執行的結果;而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');
});
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript的角色:使網絡交互和動態JavaScript的角色:使網絡交互和動態Apr 24, 2025 am 12:12 AM

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C和JavaScript:連接解釋C和JavaScript:連接解釋Apr 23, 2025 am 12:07 AM

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

從網站到應用程序:JavaScript的不同應用從網站到應用程序:JavaScript的不同應用Apr 22, 2025 am 12:02 AM

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python vs. JavaScript:比較用例和應用程序Python vs. JavaScript:比較用例和應用程序Apr 21, 2025 am 12:01 AM

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C/C在JavaScript口譯員和編譯器中的作用C/C在JavaScript口譯員和編譯器中的作用Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在行動中:現實世界中的示例和項目JavaScript在行動中:現實世界中的示例和項目Apr 19, 2025 am 12:13 AM

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript和Web:核心功能和用例JavaScript和Web:核心功能和用例Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

了解JavaScript引擎:實施詳細信息了解JavaScript引擎:實施詳細信息Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器