ANGULAR的核心思想是什么?怎么体现在代码里?

目录 
             1.背景介绍 
             2.知识剖析 
             3.常见问题 
             4.解决方案 
             5.编码实战 
             6.扩展思考 
             7.参考文献 
             8.更多讨论 
         

一.背景介绍 

 angular是什么? 
                 
  AngularJS[1]诞生于2009年,由Misko Hevery等人创建,后为Google所收购。是一款优秀的前端JS框架,
 已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、双向数据绑定、语义化标签、依赖注入等等。
       AngularJS是为了克服HTML在构建应用上的不足而设计的。HTML是一门很好的伪静态文本展示设计的声明式语言,
但要构建WEB应用的话它就显得乏力了。AngularJS通过MVC模式(MVC)功能增强基于浏览器的应用,使开发和测试变得更加容易。

                     

 二.知识剖析 


                 AngularJS的四大特性 
                  1.使用MVC设计模式 
                  2.双向数据绑定 
                  3.依赖注入 
                  4.采用模块化设计 
             
             
                 1.使用MVC设计模式 
                 MVC指的是 Model View Controller 模型-视图-控制器设计模式 
                 在前端中,我们可以简单的理解为: 
                 M-Model,数据模型,当我们需要使用到数据的时候,数据暂存在这里。通常这样表达:$scope.ppt。 
                 V-View,视图层,一般是我们的html文件层,用于展示数据内容,如:{{ppt}} 
                 C-Controller,控制器,控制器帮助将M层数据给V,或者当View层数据有所改变时,通知M层,M层数据也做相应                       改变。可以说C是为了实现V和M之间的数据交互而存在的。 
             
             
            ANGULAR的核心思想是什么?怎么体现在代码里?
             
             
                 2.双向数据绑定 
                 一但建立双向绑定,使用者输入,会由Angular自动传到一个变量中,
                    再自动读到所有绑到它的内容,更新它,效果上就是立即的资料同步,
                    在程式码中修改变量,也会直接反应到呈现的外观上。 
             
             
                 3.依赖注入 
                 依赖注入(Dependency Injection,简称DI)是一种设计模式,
                    指某个对象依赖的其他对象无需手工创建,只需要“吼一嗓子”,
                    则此对象在创建时,其依赖的对象由框架来自动创建并注入进来,
                    其实就是最少知识法则;模块中所有的service和provider两类对象,
                    都可以根据形参名称实现DI. 
             
             
                 4.模块化设计 
                 高内聚低耦合法则 
                  
                    1)官方提供的模块           ng、ngRoute、ngAnimate、ngTouch
                 
                 
                     2)用户自定义的模块        angular.module('模块名',[ ])

             

三.常见问题 

             
             怎么体现在代码?       

 

 

四.解决方案 

             
             
              ANGULAR的核心思想是什么?怎么体现在代码里?
         
             

五.代码实战 

             
             
                  Module 
                 AngularJS中一切都是从Module模块开始的,模块是组织代码的容器,当然模块中还可以包含子模块 
                  Routes 
                 路由负责在应用中基于state进行页面的跳转 
                  Views 
                 Views是通过AngularJS编译后呈现的DOM 
                 $scope 
                  $scope实际上就是一个JavaScript对象,controller和view都可以访问它,所以我们可以利用它在两者间传递信息。在这个 $scope 对象里,我们既存储数据,又存储将要运行在view上的函数。$scope是连接controller和view之间的桥梁, 
             
             
                  Controller 
                   定义一些属性和方法用于绑定到view的元素上,一般来说,controller是比较轻量的,它里面只放一些负责view呈                     现的属性和方法 
                 Directive    
                 指令使得AngularJS能够创建自定义的标签并实现相应的功能,可以将指令看成一种特殊的html标签        
                 Service 
                 Service负责提供一些通用的功能函数,比如有些数据在多个controller中都会用到,就可以定义在一个service中 
             
         


         
             

六.拓展思考 

             
         

1.controller与factory,service是什么关系?

答:

controller 专注于业务场景,即为特定的场景服务,所以不要重用controller,推荐通过小范围划分controller,使用父子作用域来满足业务场景。

factory  提供一些公共的方法函数,推荐抽象,重用factory。

service  类似factory,会被实例化,可以保存数据,作为controller之间的通讯工具,推荐重用。

 

2.双向数据绑定原理?

答:

脏检查,将原对象复制一份快照,在某个时间,比较现在对象与快照的值,如果不一样就表明发生变化,这个策略要保留两份变量,而且要遍历对象,比较每个属性,这样会有一定性能问题•angular的实现是使用脏检查

 

3.MVC与MVVM区别?

 

答:

 

在MVC里,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑。 MVC模型关注的是Model的不变,所以,在MVC模型里,Model不依赖于View,但是 View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。

MVVM是将“数据模型数据双向绑定”的思想作为核心,因此在View和Model之间没有联系,通过ViewModel进行交互,而且Model和ViewModel之间的交互是双喜那个的,因此试图的数据的变化会同事修改数据源,而数据源数据的变化也会立即反应到View上。




         
             

 7.参考文献 

        1.  https://www.tuicool.com/articles/aiMvQb3    博客园   

        2.菜鸟教程

         


         

  8.更多讨论