ANGULAR的核心思想是什麼?怎麼體如今代碼裏?

這裏是修真院前端小課堂,每篇分享文從html

【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴展思考】【更多討論】【參考文獻】前端

八個方面深度解析前端知識/技能,本篇分享的是:程序員

【ANGULAR的核心思想是什麼?怎麼體如今代碼裏?】angularjs

你們好,我是 IT 修真院上海分院第八期的學員何嶽,一枚正直純潔善良的web程序員web

今天給你們分享一下,修真院官網 JS任務七,深度思考中的知識點——ANGULAR的核心思想是什麼?怎麼體如今代碼裏?數據庫

1. 背景介紹設計模式

 

AngularJS是什麼?服務器

它是谷歌公司動態web應用設計的一個js框架,是爲了克服html在構建應用上的不足而設計的架構

2. 知識剖析mvc

 

AngularJS的四個核心思想

1)MVC

2)依賴注入

3)模塊化

4)雙向綁定

 

一.MVC

 

1.M表明model,對應的是數據庫

2.V表明view,視圖,對應的是html頁面

3.C表明controller,控制器,處理用戶交互的部分

eg:

<body ng-app="hh">

    <div ng-controller="yy"> <!--這個div就是v-->

        <input type="text" ng-model="msg"> <!--當添加一個input標籤時,用ng-model也能獲取到msg信息-->

        <h1>{{msg}}</h1>

    </div>

    <script src="../js6/min/angular.js"></script>

    <script>

        angular.module("hh", [])  //首先用module建立了一個angular的模塊,那麼這個模塊裏面每個controller就是一個簡單最小化的MVC

        .controller("yy", function ($scope) {   //其中yy就是controller,就是mvc的c;$scope裏面就是模型,就是m

            $scope.msg = "lalala";   //經過雙向綁定,把model綁定到view上面

        })

    </script>

</body>

經過上面的代碼能夠看到

首先用module建立了一個angular的模塊,那麼這個模塊裏面每個controller就是一個簡單最小化的MVC

其中yy就是controller,就是mvc的c;$scope裏面就是模型,就是m

經過雙向綁定,把model綁定到view上面

例子中的div就是v

 

 

二.依賴注入

wiki上的解釋是:依賴注入(Dependency Injection,簡稱DI)是一種軟件設計模式,在這種模式下,一個或更多的依賴(或服務)被注入(或者經過引用傳遞)到一個獨立的對象(或客戶端)中,而後成爲了該客戶端狀態的一部分

AngularJS的依賴注入只是簡單的獲取它所須要的東西,而不須要建立那些他們所依賴的東西

有一些核心組件來做爲依賴注入:value,constant,factory,service

eg:

.value(「名字」,」賦予名字的值」) —>value的值是能夠改變的

.constant(「名字」,」賦予名字的值」)—>constant的值不能夠改變,這個能夠用做之後服務器的網址

.factory(「data」,function(){

})

.service("user",function(){

})

eg:

html代碼:

<body ng-app="app">

<div ng-controller="ctrl">

<h1 ng-bind="msg"></h1>

<h1 ng-bind="name"></h1>

<h1 ng-bind="http"></h1>

<h1 ng-bind="data.msg"></h1>

<h1 ng-bind="user.getName()"></h1>

</div>

<script src="../js6/min/angular.js"></script>

<script src="./angular5.js"></script>

</body>

JS代碼:

angular.module("app",[])

.value("name","hh")

.value("name","yy") //-->value的值是能夠改變的

.constant("http","www.xxx.com") //-->constant的值不能夠改變,便是有多個也以第一個爲準

.factory("data",function(){

    return{

        msg:"are you ok",

        setMsg:function(){

            this.msg="ok"

        }

    }

})

.service("user",function(){

    this.fistname="scofield";

    this.lastname=" he";

    this.getName=function(){

        return this.fistname+this.lastname;

    }

})

.controller("ctrl",function($scope,name,http,data,user){  //—>controller中使用services

    $scope.msg="hello";

    $scope.name=name;

    $scope.http=http;

    $scope.data=data;

    data.setMsg();

    $scope.user=user;

})

三.模塊化

高內聚低耦合

官方提供的模塊:ng、ngRoute、ngAnimate、ngTouch

自定義的模塊:angular.module('模塊名',[ ])

 

 

四.雙向綁定

AngularJS中只須要將DOM中的元素與js的某個屬性綁定,js屬性值變化會同步到DOM元素上,一樣的,DOM元素值得變化也會映射到js的屬性上。

 

3. 常見的問題

AngularJS的優勢

 

4. 解決方案

 

能夠經過核心思想中的依賴注入和雙向綁定,不須要寫大量的代碼實現複雜的功能

能夠不須要像jQuery同樣操做複雜的dom代碼,只須要改變模型就好了

 

5. 編碼實戰

6. 擴展思考

MVC與MVVM區別?

7. 參考文獻

https://www.cnblogs.com/smyhv...        

8.討論問題:

問: 1.MVC與MVVM區別?

答:MVVM是Model-View-ViewModel的簡寫。微軟的WPF帶來了新的技術體驗,如Silverlight、音頻、視頻、3D、動畫……,這致使了軟件UI層更加細節化、可定製化。同時,在技術層面,WPF也帶來了 諸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由來即是MVP(Model-View-Presenter)模式與WPF結合的應用方式時發展演變過來的一種新型架構框架。它立足於原有MVP框架而且把WPF的新特性糅合進去,以應對客戶日益複雜的需求變化。

問:2.controller與factory,service是什麼關係?

 

答:controller 專一於業務場景,即爲特定的場景服務,因此不要重用controller,推薦經過小範圍劃分controller,使用父子做用域來知足業務場景。factory  提供一些公共的方法函數,推薦抽象,重用factory。service  相似factory,會被實例化,能夠保存數據,做爲controller之間的通信工具,推薦重用。

問:3.angular和jQuery的區別?

 

答:在jQuery中,你首先設計了一個page,而後再去動態修改它的內容,這是由於jQuery被設計用來進行擴展並在這個前提下大幅度地增長和修改內容,可是在angularjs中,你必須在心中先設計好你的架構,從一開始,你就要摒棄「我擁有一個DOM元素而且想讓它去作某件事」,代之爲「我須要完成什麼任務,而後接着設計你的應用,最後再去設計你的視圖view層」。

 

感謝觀看, 若有出錯, 懇請指正

相關文章
相關標籤/搜索