1. 程式人生 > >ANGULAR的核心思想是什麼?怎麼體現在程式碼裡?

ANGULAR的核心思想是什麼?怎麼體現在程式碼裡?

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

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

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

【ANGULAR的核心思想是什麼?怎麼體現在程式碼裡?】

大家好,我是 IT 修真院上海分院第八期的學員何嶽,一枚正直純潔善良的web程式設計師

今天給大家分享一下,修真院官網 JS任務七,深度思考中的知識點——ANGULAR的核心思想是什麼?怎麼體現在程式碼裡?

1. 背景介紹

 

AngularJS是什麼?

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

2. 知識剖析

 

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/smyhvae/p/8485028.html        

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層”。

 

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

今天的分享就到這裡啦,歡迎大家點贊、轉發、留言、拍磚~

 

 

PPT連結 視訊連結

更多內容,可以加入IT交流群565734203與大家一起討論交流

這裡是技能樹·IT修真院:https://www.jnshu.com,初學者轉行到網際網路的聚集地