AngularJS入門知識之MVW類框架的程式設計思想探討_AngularJS
本文透過實現兩個簡單的業務需求,探討AngularJS和傳統的JavaScript控制DOM實現方式的差別,並嘗試理解 MVW此類框架在流行的Web前端開發中的編程思想。
這個需求很常見,例如,一個兩級選單,在第一層選單項目點擊時候,對應的子選單項目應該顯示或隱藏。
jQuery的實作:
-
Item 1
- Item child 1
// javascript
$('li.parent_item').click(function(){
$(this).children('ul.child').toggle();
})
AngularJS的實作:
-
Item 1
- Item child 1
傳統操作DOM的方式,不再贅述。 AngularJS的實現,相對程式碼要精煉很多,只有HTML的版本即可。以上程式碼,用到了AngularJS這些知識點:
ng-click和ng-hide都是框架自帶的Directives(指令),前者相當於給li標籤提供了一個Event Handler,在該HTML元素( li)被點擊的時候,會執行hide_child = !hide_child這個Expression(表達式)。我們先來看看ng-hide這個指令,它會根據賦值的表達式結果(布林值)來控制該HTML元素是否要顯示(透過CSS實作)。也就是說,如果hide_child這個變數如果是true,那麼ul就會被隱藏,否則結果相反。
這裡hide_child其實是$scope上的一個變量,對它的值的變更,也可以用controller控制器包裝一個方法來實現,只不過現在的語句比較簡單,直接寫在了指令的賦值裡面。
透過以上簡單的程式碼分析,我們可以看到AngularJS兩個比較明顯的特點:
1.透過指令和表達式對DOM的操作進行了封轉,只需簡單的程式碼便可省去額外的JavaScript程式碼
2.指令和表達式的應用,只直接嵌套在HTML中的,這和jQuery推從的Unobtrusive JavaScript的程式碼風格有些背道而馳
我們先看另外一個需求,再詳細解釋上面的結論。
需求2:透過點選div,觸發選擇form中的一個radio button
傳統的HTML Form元素,在現今的行動裝置上,操作起來並不是十分友善。例如,Radio button單選框,在觸控螢幕上,需要精確的位置定位,才能控制這個組件,但手指定位又很粗糙。常見的做法,是增加一個對應的Label控件,但是文字本身佔屏比例也並不理想,而且也不具備明確的訊息傳達效果。所以,通常會間接操作一個區域比較大的div或li標籤。
jQuery的實作:
-
id="選項1" //>
選項1標籤>
// javascript
$('li.selection').click(function(){
$(this).children('input[type="radio"]').click();
})
AngularJS 的實作:
-
ng-click="model.option = option.value"
ng-class="{active: model.option == option.value}" >
ng-model="model.option"
值=「{{option.value}}」
id="選項1" //>
選項1標籤>
在這個解決方案中,我們同樣沒有涉及到額外的JavaScript程式碼,並且多用了幾個指令。為了對比參照,我們只關心ng-click和ng-model這兩個指令的表達式。
我們先來看看input這個元素的ng-model指令,這裡賦值的意思是,我們把模板上的input和$scope.model物件的option屬性進行了關聯,深入了解數據綁定可以參考Data Binding。這種指定關聯,使得模板控制項直接和資料Model進行了綁定,並且這種綁定是雙向的。意味著,一旦使用者修改控制項中的值(勾選radio input),對應的Model物件就會重新賦值(model.option);同時,如果Model物件的值發生了變化,模板中的input控制項也會對應反映變化。而這一點,在上述jQuery的實作中,其實是沒有做到的。
所以,這裡透過AngularJS的資料綁定,點選li元素間接完成觸發input的流程是這樣子的:
1.點選li標籤,為model.option賦值;
2.修改了Model對象,定位到對應input控件(value的值為model.option那個);
3.啟動input控制項的checked屬性
透過以上兩個案例,我們對Web前端的操作有了新的認識。
首先,技術實現上,透過引入新的指令,表達式,資料綁定等概念,我們可以完全新的方式去操作DOM,而不僅僅局限在用戶和HTML組件交互操作上的JavaScript代碼的實現。這種思想的變化是巨大的。
從本世紀初,動態Web程式設計的興起開始,伺服器端的程式設計技術一直在改進。從一開始的CGI/PHP/ASP,由語言和平台產生了.NET vs. Java,開發效率和軟體過程促進了MVC框架/ORM/AOP等,性能和大數據帶來了NodeJS/NoSQL/Hadoop等,而瀏覽器前端的技術需求似乎沒有那麼激進過。一方面,透過伺服器端和資料庫,大部分B/S模型的業務需求都能滿足;再者,瀏覽器本身存在不同平台的差異性,對腳本語言和渲染技術的標準不相容,以及運算能力的欠缺和安全性的考慮。
在這種情況下,瀏覽器端的需求,大部分時候只需要考慮渲染頁面和簡單的使用者互動。 HTML/DOM加上JavaSript/CSS就這樣成就了前端的主要工作。所以,以前是沒有前端工作師,只需要Web設計師的。慢慢對前端的要求多起來,jQuery成為使用程度最高的一個JavaScript操作DOM的封裝函式庫。而在這個階段,jQuery/JavaScript的主要任務,仍然只是作為使用者瀏覽器終端呈現和互動的工具。
理解了jQuery的起源,我們不難發現,以前追求的一些規則,譬如Unobtrusive JavaScript,當時局限於實現的手段和方式,為了分離DOM和JavaScript代碼邏輯,我們優先選擇了維護性更高的方式。前端對JavaScript的需求加大之後,出現了許多MVC/MVP的前端框架,以及AngularJS所謂的MVW(Model-View-Whatever),JavaScript和DOM一刀切的方式發生了變化。原先我們考慮介面顯示和使用者互動的直接操作,現在我們有了客戶端的資料綁定,豐富的指令,依賴注入,等待我們的將是全新的程式設計模型和思維方式。

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Javascript 是一個非常有個性的語言. 無論是從程式碼的組織, 還是程式碼的程式設計範式, 或物件導向理論都獨具一格. 而很早就在爭論的Javascript 是不是物件導向語言這個問題, 顯然已有答案. 但是, 即使Javascript 叱吒風雲二十年, 如果想要看懂jQuery, Angularjs, 甚至是React 等流行框架, 觀看《黑馬雲課堂JavaScript 高級框架設計視頻教程》就對了。

在現今資訊時代,網站已成為人們獲取資訊和交流的重要工具。一個響應式的網站能夠適應各種設備,為使用者提供優質的體驗,成為了現代網站開發的熱點。本篇文章將介紹如何使用PHP和AngularJS建立響應式網站,進而提供優質的使用者體驗。 PHP介紹PHP是一種開源的伺服器端程式語言,非常適合Web開發。 PHP具有許多優點,如易於學習、跨平台、豐富的工具庫、開發效

隨著網路的不斷發展,Web應用已成為企業資訊化建設的重要組成部分,也是現代化工作的必要手段。為了讓Web應用能夠方便開發、維護和擴展,開發人員需要選擇適合自己開發需求的技術框架和程式語言。 PHP和AngularJS是兩種非常流行的Web開發技術,它們分別是伺服器端和客戶端的解決方案,透過結合使用可以大大提高Web應用的開發效率和使用體驗。 PHP的優勢PHP

隨著Web技術的快速發展,單頁Web應用程式(SinglePageApplication,SPA)已成為越來越流行的Web應用程式模型。相較於傳統的多頁Web應用程序,SPA的最大優勢在於使用者感受更加流暢,同時伺服器端的運算壓力也大幅減少。在本文中,我們將介紹如何使用Flask和AngularJS來建構一個簡單的SPA。 Flask是一款輕量級的Py

這篇文章介紹的內容是關於AngularJS基礎入門介紹,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下。

隨著網路的普及和發展,前端開發已變得越來越重要。身為前端開發人員,我們需要了解並掌握各種開發工具和技術。其中,PHP和AngularJS是兩種非常有用且受歡迎的工具。在本文中,我們將介紹如何使用這兩種工具進行前端開發。一、PHP介紹PHP是一種流行的開源伺服器端腳本語言,它適用於Web開發,可以在Web伺服器和各種作業系統上運作。 PHP的優點是簡單、快速、便

隨著網路的普及,越來越多的人使用網路進行檔案傳輸和分享。然而,由於各種原因,使用傳統的FTP等方式進行檔案管理無法滿足現代使用者的需求。因此,建立一個易用、高效、安全的線上文件管理平台已成為了一種趨勢。本文介紹的線上文件管理平台,基於PHP和AngularJS,能夠方便地進行文件上傳、下載、編輯、刪除等操作,並且提供了一系列強大的功能,例如文件共享、搜尋、

隨著Web應用程式的普及,前端框架AngularJS變得越來越受歡迎。 AngularJS是一個由Google開發的JavaScript框架,它可以幫助你建立具有動態Web應用程式功能的網頁應用程式。另一方面,對於後端編程,PHP是非常受歡迎的程式語言。如果您正在使用PHP進行伺服器端編程,那麼結合AngularJS使用PHP將可以為您的網站帶來更多的動態效
