浅议Angular(一) -- AngularJS简介

  Angular?  

  作为一款非常优秀的前端高级JS框架,区别于jQuery封装了很多DOM操作,AngularJS应用场景比较特殊,主要为数据呈现或交互等.从09年被Google收购以来,Angular在全球迅速普及,如今的Angular2有了颠覆式的变化.

  现在针对Angular1.4.9的最新稳定版本进行简单的讨论.

  Angular用于快速构建SPA(单一页面应用程序).

  单一页面应用程序只有一个页面,即整个应用程序的一个载体,其内容全部是由Ajax方式呈现出来的.
  我们知道,传统网站的开发以页面来划分,每个页面上传到服务端,再由服务端根据我们请求的地址不同,把文件拿回来渲染到本地.现在提供了一个应用程序的入口(即单一页面),拿回该文件后,其脚本在执行的过程中会请求我们需要的数据,那么我们与服务端交流的只是数据,整个网页也停留在单一页面,这个过程中的局部刷新,减少请求大小等,会给用户带来更快更好的体验.

  

  AngularJS特性?

  Angular的作者把很多Java中的思想嵌入这个框架中,包括后面的MV*,MVVM思想,让Web应用程序开发更简单,更快捷,带领前端进入MV*的时代.可以说,从Angular开始,前端框架开始注重前端思维,走向模式化,架构化.

  MVC

  模块化

  自动化双向数据绑定

  指令(directive)系统

  

  Angular安装?

  下载 Angular.js 的包  https://github.com/angular/angular.js/releases

  使用CDN 上的 Angular.js  http://apps.bdimg.com/libs/angular.js/1.4.9/angular.min.js

  使用 Bower 安装  bower install angular

  使用 NPM 安装  npm install angular    

  

  开始使用?

  基本使用:

  ng-app 指令 -- Angular应用程序管理的边界.是ng的入口,表示当前元素的所有指令都会被Angular管理(分析和操作).ng-app标记的范围应该尽可能地小;创建多个ng-app时,默认只能执行第一个,后面的需要手动引导,angular.bootstrap().

  ng-model 双向数据绑定的指令 -- Angular在执行某一个代码片段时,会在内存中开辟一块单独的存储空间,用于存储当前页面上需要的数据模型.将当前元素的value属性和模型中对象的属性值建立绑定关系.

  使用总结:

  最大程度减少了页面上的DOM操作,解放了传统JS中繁琐的DOM操作,还原了JS的本质--让JS专注业务逻辑的代码.

  通过简单的指令结合页面结构与逻辑数据

  通过自定义指令实现组件化编程

  代码结构更合理,维护成本更低

  

  MVC?

  MVC是一种应用程序的开发思想,不是设计模式,MVC将应用程序划分为三部分: Model View Controller,控制器用于组织调度相应的处理(初始化)模型,模型用于处理业务逻辑和数据(较少),视图用于以友好的方式展示数据.

  MVC和MVVM

  在MVC里,由于View可以直接访问Model并且单向依赖Model,所以一些业务逻辑也会在View中实现,导致其更改困难;

  MVVM把数据逻辑单独出来完成向UI元素的绑定,从而与页面分离开.同时,MVVM的双向绑定使我们对页面上依赖同一段的多个区域的维护更为便捷.

  

  Angular基础概念? 

  模块

  Angular中一个很重要的特性就是实现模块化编程,我们可以通过创建一个模块对页面进行功能业务上的划分.  

  例如: var app = angular.module(‘myAPP‘,[]); // 两个参数分别表示模块名称和依赖,如果不依赖任何模块,第二个参数也必须传递空数组;两个参数表示创建,一个参数表示获取.

  如果希望自己创建的模块管理整个元素,可以在该元素后添加 ng-app="myAPP".

  控制器

  调度逻辑的集合,通过app.controller方法,即通过模块创建一个控制器,该控制器属于myAPP模块.建议所有控制器名字都用驼峰命名法以Controller结尾.

  $scope(上下文模型)

  例如: app.controller(‘DemoController‘, function($scope) {}); // 第二个参数为函数,当控制器执行时会自动执行这个函数.控制器函数的参数中有一个$scope,我们页面上用到的所有数据模型都存储在$scope中,所以我们只需在控制器执行的过程中给$scope赋值就可以了.

  现在我们把控制器加到视图上ng-controller="DemoController",让视图绑定我们写好的控制器,则DemoController所创建出来的$scope就会成为此视图的数据源,改变也会自动同步到后台的$scope.

  那么,我们可以把$scope看做一个桥梁,用来在视图和控制器之间传递数据,暴露数据模型(数据,行为).

  控制器的职责

  为应用中的模型设置初始状态;通过$scope把数据模型或数据行为暴露给视图;监视模型的变化,做出相应动作.

  控制器的语法

  在执行控制器函数时,会根据参数的名称自动注入对应的对象.由于生产环境中,常常用到压缩代码的方式,会改变参数的名称,所以注册控制的标准方式是通过第二个参数传递数组(数组最后一个成员是原控制器函数,其他成员是需要注入的对象名称)的方式,具体要输入的对象根据数组成员决定.

  例如: angular.module(‘myAPP‘).controller(‘DemoController‘, [‘$scope‘, function($scope) {}]);

  如果功能较复杂,可能涉及很多模型,这时候建议使用对象,在模型里面单独存储数据.

  Angular基本上不用操作DOM,如果必要,可以使用Angular提供的jqlite.

  官方API中提供了一个$scope.$watch方法,传递两个参数,监视第一个表达式的变化,执行第二个参数中的函数.

   例如: $scope.$watch(‘user.username‘, function(fir, sec) {});

  表达式

  {{}} 表达式 -- 把应用程序变量绑定到某个段落的innerHTML.可以包含数字,字符串,对象,数组,基本的逻辑运算符.表达式也可以实现单向数据绑定,{{::}}只能由数据模型向页面同步.表达式可以写在HTML中;不支持条件判断,循环机异常;支持过滤器.

  因为HTML的解析过程会出现闪一下,解决办法如下:

  <style>[ng-cloak] {display:none;}</style>  // 在执行一开始就向元素中添加display:none;隐藏表达式;ng-cloak属性在Angular执行完毕后自动移除.

  

  

  

  

  

  

  

  

  

  

时间: 2024-10-05 14:08:31

浅议Angular(一) -- AngularJS简介的相关文章

用angularjs开发下一代web应用(一):angularjs简介

1.客户端模板 与普通的web方式及ajax方式不同, 在angular中,模板和数据都会发送到浏览器中,然后在客户端进行装配.这样一来,服务器的角色就变成了仅仅为这些模板提供一些静态资源,然后为这些模板提供所需的正确数据.{{ }}:单向的数据绑定 2.MVC 在angular应用中,视图就是DOM({{ }}),控制器就是js类(ng-controller),而模型数据则被存储在对象的属性中($scope:将数据绑定到UI的元素上). 3.数据绑定 仅仅声明UI中的某部分需要映射到某个js属

AngularJs——简介,表达式,指令

AngularJs简介 AngularJs是一个JavaScript框架,它可通过<script>标签添加到HTML页面,它是一个以JavaScript编写的库. AngularJs通过指令扩展了HTML,且通过表达式绑定数据到HTML. AngularJs扩展了HTML AngularJs通过ng-directives扩展了HTML. ng-app指令定义一个AngularJs应用程序. ng-model指令把元素值(比如输入域的值)绑定到应用程序. ng-bind指令把应用程序数据绑定到H

浅议SNMP安全、SNMP协议、网络管理学习

相关学习资料 tcp-ip详解卷1:协议.pdf(重点看25章SNMP部分) http://www.rfc-editor.org/rfc/rfc1213.txt http://www.rfc-editor.org/rfc/rfc1155.txt http://www.rfc-editor.org/rfc/rfc1157.txt http://network.51cto.com/art/201007/209214.htm http://zh.wikipedia.org/wiki/SNMP http

Angular系列----AngularJS入门教程04:迭代器过滤(转载)

我们在上一步做了很多基础性的训练,所以现在我们可以来做一些简单的事情喽.我们要加入全文检索功能(没错,这个真的非常简单!).同时,我们也会写一个端到端测试,因为一个好的端到端测试可以帮上很大忙.它监视着你的应用,并且在发生回归的时候迅速报告. 请重置工作目录: git checkout -f step-3 我们的应用现在有了一个搜索框.注意到页面上的手机列表随着用户在搜索框中的输入而变化. 步骤2和步骤3之间最重要的不同在下面列出.你可以在GitHub里看到完整的差别. 控制器 我们对控制器不做

Angular系列---- AngularJS入门教程03:AngularJS 模板(转载)

是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模式解耦代码和分离关注点.考虑到这一点,我们用AngularJS来为我们的应用添加一些模型.视图和控制器. 请重置工作目录: git checkout -f step-2 我们的应用现在有了一个包含三部手机的列表. 步骤1和步骤2之间最重要的不同在下面列出.,你可以到GitHub去看完整的差别. 视图

Angular系列------AngularJS快速开始(转载)

Hello World! 开始学习AngularJS的一个好方法是创建经典应用程序“Hello World!”: 使用您喜爱的文本编辑器,创建一个HTML文件,例如:helloworld.html. 将下面的源代码复制到您的HTML文件. 在web浏览器中打开这个HTML文件. 源代码 <!doctype html> <html ng-app> <head> <script src="http://code.angularjs.org/angular-1

Angular系列----AngularJS入门教程01:AngularJS模板 (转载)

是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模式解耦代码和分离关注点.考虑到这一点,我们用AngularJS来为我们的应用添加一些模型.视图和控制器. 请重置工作目录: git checkout -f step-2 我们的应用现在有了一个包含三部手机的列表. 步骤1和步骤2之间最重要的不同在下面列出.,你可以到GitHub去看完整的差别. 视图

Angular系列----AngularJS入门教程00:引导程序(转载)

我们现在开始准备编写AngularJS应用——phonecat.这一步骤(步骤0),您将会熟悉重要的源代码文件,学习启动包含AngularJS种子项目的开发环境,并在浏览器端运行应用. 进入angular-phonecat目录,运行如下命令: git checkout -f step-0 该命令将重置phonecat项目的工作目录,建议您在每一学习步骤运行此命令,将命令中的数字改成您学习步骤对应的数字,该命令将清除您在工作目录内做的任何更改. 运行以下命令: node scripts/web-s

Angular系列----AngularJS入门教程02:静态模板(转载)

为了说明angularJS如何增强了标准HTML,我们先将创建一个静态HTML页面模板,然后把这个静态HTML页面模板转换成能动态显示的AngularJS模板. 在本步骤中,我们往HTML页面中添加两个手机的基本信息,用以下命令将工作目录重置到步骤1. git checkout -f step-1 请编辑app/index.html文件,将下面的代码添加到index.html文件中,然后运行该应用查看效果. app/index.html <ul> <li> <span>