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

首頁 > 語言 > JavaScript > 正文

AngularJS入門知識之MVW類框架的編程思想探討

2024-05-06 16:11:40
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了AngularJS入門知識之MVW類框架的編程思想探討,本文通過實現兩個簡單的業務需求,探討AngularJS和傳統的JavaScript控制DOM實現方式的差別,并嘗試理解MVW此類框架在流行的Web前端開發中的編程思想,需要的朋友可以參考下
 
 

本文通過實現兩個簡單的業務需求,探討AngularJS和傳統的JavaScript控制DOM實現方式的差別,并嘗試理解MVW此類框架在流行的Web前端開發中的編程思想。

這個需求很常見,比如,一個兩級菜單,在第一級別菜單項點擊時候,對應的子菜單項目應該顯示或隱藏。

jQuery的實現:

 

復制代碼代碼如下:

<!-- html -->
<ul class="parent">
    <li class="parent_item">
        Item 1
        <ul class="child">
            <li class="child_item">Item child 1</li>
        </ul>
    </li>
</ul>

 

// javascript
$('li.parent_item').click(function(){
    $(this).children('ul.child').toggle();
})

 

AngularJS的實現:

 

復制代碼代碼如下:

<!-- html -->
<ul>
    <li ng-click="hide_child = !hide_child">
        Item 1
        <ul ng-hide="hide_child">
            <li>Item child 1</li>
        </ul>
    </li>
</ul>

 

傳統操作DOM的方式,不再贅述。AngularJS的實現,相對代碼要精煉很多,只有HTML的版本即可。以上代碼,用到了AngularJS這些知識點:

1.Directives 

2.Expressions

ng-clickng-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的實現:

復制代碼代碼如下:

<!-- html -->
<ul>
    <li class="selection">
        <input type="radio"
            id="option1" />
        <label for="option1">option 1</label>
    </li>
</ul>

 

// javascript
$('li.selection').click(function(){
    $(this).children('input[type="radio"]').click();
})

 

AngularJS的實現:

 

復制代碼代碼如下:

<!-- html -->
<ul>
    <li ng-repeat="option in options"
        ng-click="model.option = option.value"
        ng-class="{active: model.option == option.value}" >
        <input type="radio"
            ng-model="model.option"
            value="{{option.value}}"
            id="option1" />
        <label for="option1">option 1</label>
    </li>
</ul>

 

在這個解決方案中,我們同樣沒有涉及到額外的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一刀切的方式發生了變化。原先我們考慮界面顯示和用戶交互的直接操作,現在我們有了客戶端的數據綁定,豐富的指令,依賴注入,等待我們的將是全新的編程模型和思維方式。 


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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97av在线影院| 欧美激情一二区| 久久乐国产精品| 亚洲va电影大全| 色樱桃影院亚洲精品影院| 久久久人成影片一区二区三区观看| 日韩av一卡二卡| 国内精品久久久久| 中文字幕精品网| 欧美日产国产成人免费图片| 精品一区二区亚洲| 97久久精品视频| 欧美精品一区二区免费| 国产999精品视频| 国产91精品久| 青青久久av北条麻妃海外网| 国产精品久久久久aaaa九色| 久久99国产精品自在自在app| 成人在线视频福利| 午夜精品福利电影| 亚洲一区二区自拍| 2019亚洲日韩新视频| 国产成人91久久精品| 亚洲大胆人体av| 欧美激情一区二区三区高清视频| 欧美肥老妇视频| 日韩美女毛茸茸| 亚洲理论电影网| 欧美成人免费全部| 清纯唯美日韩制服另类| 欧美成人午夜影院| 欧美激情视频一区二区三区不卡| 91成人在线视频| 亚洲精品999| 久久久久久国产精品| 国产精品久久久久久久久免费看| 欧美黑人一区二区三区| 日韩av不卡在线| 日韩av最新在线| 亚洲天堂男人的天堂| 狠狠操狠狠色综合网| 国产精品a久久久久久| 国产精品日韩欧美综合| 国产亚洲精品久久久久动| 欧美日韩中文字幕| 欧美日韩福利在线观看| 2021久久精品国产99国产精品| 尤物yw午夜国产精品视频| 国产精品亚洲精品| 日韩成人小视频| 欧美极品在线视频| 97色在线播放视频| 欧美成aaa人片在线观看蜜臀| 国产精品国产三级国产aⅴ浪潮| 2023亚洲男人天堂| 大荫蒂欧美视频另类xxxx| 久久91亚洲精品中文字幕| 亚洲图中文字幕| 91精品国产色综合久久不卡98口| 97色在线视频观看| 91免费精品视频| 久久久天堂国产精品女人| 欧美日韩亚洲一区二区三区| 国产精品福利无圣光在线一区| 久久91精品国产91久久跳| 欧美在线免费视频| 欧美日韩国产在线播放| 中文字幕免费精品一区| 中文字幕精品在线视频| 欧美福利视频网站| 亚洲欧洲偷拍精品| 久久这里只有精品视频首页| 久久精品久久久久久国产 免费| 亚洲欧美日韩一区二区三区在线| 日韩网站免费观看高清| 亚洲最大av网| 一区二区国产精品视频| 日韩电影免费观看在线观看| 亚洲女人被黑人巨大进入| 久久精品国产亚洲精品2020| 成人激情视频在线| 一本大道香蕉久在线播放29| 亚洲老头同性xxxxx| 日韩av在线最新| 中文字幕亚洲激情| 亚洲韩国欧洲国产日产av| 91久久国产精品| 亚洲激情视频在线观看| 神马久久久久久| 欧美高清自拍一区| 96精品久久久久中文字幕| 欧美精品18videosex性欧美| 国产精品中文久久久久久久| 久久这里有精品视频| 国产成人精品久久久| 欧美大片在线看免费观看| www欧美xxxx| 欧美激情videoshd| 日本高清不卡在线| 最新亚洲国产精品| 亚洲欧美在线播放| 欧美精品久久久久久久| 蜜臀久久99精品久久久久久宅男| 蜜臀久久99精品久久久无需会员| 欧美福利视频在线观看| 午夜精品一区二区三区在线视| 欧美在线欧美在线| 91久久精品美女| 中日韩午夜理伦电影免费| 亚洲国产精品资源| 最近2019中文字幕在线高清| 黄色91在线观看| 国内精品久久久久久| 中文字幕自拍vr一区二区三区| 欧美成人精品在线播放| xvideos亚洲| 国产精品久久久久久影视| 国内精品一区二区三区| 成人免费淫片视频软件| 国产中文字幕日韩| 国产激情久久久| 亚洲人成网站免费播放| 日韩欧美国产骚| 久久久久国产精品一区| 97精品在线观看| 久久国产精品电影| 亚洲人成电影网站| 亚洲天堂久久av| 亚洲国产美女久久久久| 久久久久久91香蕉国产| 亚洲a成v人在线观看| 91日本在线观看| 国产大片精品免费永久看nba| 久久精品国产久精国产一老狼| 91tv亚洲精品香蕉国产一区7ujn| 黄色成人av在线| 久久免费视频观看| 欧美激情在线一区| 91在线高清免费观看| 国产精品综合网站| 久久黄色av网站| 综合国产在线视频| 亚洲视频在线观看网站| 欧美日韩国产色视频| 久久久久久尹人网香蕉| 久久精品一区中文字幕| 欧美尺度大的性做爰视频| 欧美日本啪啪无遮挡网站| 96sao精品视频在线观看| 国产精品678| 欧美性一区二区三区| 日韩av免费看网站| 98精品国产自产在线观看| 日韩美女视频免费看| 欧美激情视频一区二区三区不卡| 亚洲免费影视第一页| 欧美激情亚洲视频| 国产视频福利一区| 97在线看福利| 欧美激情xxxx性bbbb| 日韩av不卡电影| 亚洲日韩中文字幕在线播放| 欧美性高跟鞋xxxxhd| 91免费看片在线|