1.1.模块

AngularJS引入了代表应用程序组件的模块的概念。模块提供命名空间,以基于模型的名称来引用指令,范围和其他组件。使得包装和再利用应用程序的部件更容易。

AngularJS中,每个视图或网页都通过ng-app指令分配给他一个单独的模块。可以把其他模块作为依赖模块添加到主模块(更结构化和组件化)

1.2.作用域和数据模型

AngularJS引入作用域(scope)概念。(实际上只是用来填充呈现在网页上的视图的数据的JS表示),数据可以来自任何源,如数据库,远程网络服务,AngularJS代码,web服务器动态生成etc.

作用域:普通的JavaScript对象。(可以根据需要在AngularJS代码中操作他们)。另外还能嵌套作用域来组织数据以匹配他们正在使用的上下文。

1.3.具有模板和指令的视图

HTML是基于DOM的。大多数动态Web应用程序直接用js或者jQuery操作DOM。

AngularJS引入结合模板和指令建立呈现给用户HTML的视图的概念。

指令:1)要被添加到一个HTML模板的额外属性,元素和CSS类。2)扩展了DOM的一般行为的js代码

使用指令的优点:HTML模板模板通过指令指出了预期的逻辑。内置的AngularJS指令处理大多数必要的DOM操作功能,(可把作用域中的数据绑定到视图)

可以自定义指令做WEB应用的任何DOM操作

1.4.表达式

AngularJS:在HTML模板中添加表达式的能力。对表达式求值,然后动态添加到网页。表达式被链接到作用域。

1.5.控制器

MVC框架:通过实现控制器完成。(通过指令把控制器添加到HTML中,后台实现为js代码)

1.6.数据绑定

AngularJS内置数据绑定:把模型中的数据与网页提示的内容链接。

当网页上的数据改变时模型被更新,且当数据在模型中被改变时网页也自动更新(模型始终向用户呈现数据的唯一来源,视图只是模型的投影)

1.7.服务

AngularJS在环境中工作的主力:服务。为Web应用程序提供功能的单例对象

(web应用程序的一个共同任务是执行对web服务器的ajax请求,angularjs提供了http服务,包含用来访问web服务器的所有功能)

服务功能在上下文中完全独立,可以很容易被组件化。(如内置的服务组件:http请求,日志记录分析,动画)

1.8.依赖注入

依赖注入:一个过程。一个代码组件定义了对其他组件的依赖关系。当代码被初始化,依赖组件可提供内部访问。

常见方法:使用服务。(如果正在定义需要通过HTTP请求访问Web服务器的模块,可以把http服务注入该模块,模块中的代码就能使用http功能)

1.9.职责分明

重要原则:职责分离。结构化框架确保代码很好的实现,容易理解维护测试。

视图作为应用程序正式表示结构。表明任何表示逻辑都作为视图中的HTML模板指令。

如果需要DOM操作。就在一个内置指令或自己的自定义指令js代码中执行

把任何可重复使用的任务都实现为服务,并通过依赖注入把他们添加到自己的模块

确保作用域反映了模型当前状态,并且是由该视图使用数据的单一来源

确保控制器代码只起到充实作用域数据的作用,而不包括任何业务逻辑

在模块的命名空间中定义控制器,不是全局定义。

2.AngularJS生命周期

AngularJS:组件,(引导,编译,运行阶段)

2.1.引导阶段

生命周期的第一阶段:初始化自身的必要组件,初始化ng-app指令指向模块。模块被加载,任何依赖关系都被注入模块,并提供给模块中的代码使用。

2.2.编译阶段

生命周期的第二阶段:HTML编译。加载时,DOM以静态形式被加载到浏览器中。编译阶段,静态DOM被替换成表示AngularJS视图的动态DOM。

包括:1)遍历静态DOM并收集所有指令,然后把指令链接到AngularJS内置库或自定义指令代码中相应的js功能上。指令与作用域结合,产生动态或实时视图

2.3.运行时数据绑定阶段

最后阶段:运行时阶段。存在直到用户重新加载或离开网页。作用域的任何更改都反映在视图中,视图中的任何更改也直接更新到作用域。(作用域成为视图唯一来源)

AngularJS vs 传统数据绑定:传统方法把模板与从引擎接受到的数据相结合,每次数据发生变化时对DOM执行操作。AngularJS只编译DOM一次,然后根据需要链接已经编译的模板。

2.4.将AngularJS与现有的JavaScript和jQuery整合

1.编写使用模式,自定义HTML指令,服务和控制器的AngularJS应用程序。

2.确保代码模型部分。把模型中增加模型数据的代码分离出来,放入控制器函数。把访问后端模型数据的代码分离放入服务

3.确定操作视图中的DOM元素代码。把DOM操作代码分离放入定义良好的自定义指令组件,提供HTML指令。

4.确定其他基于任务的函数,分离放入服务。

5.把指令和控制器隔离到模块中组织代码

6.使用依赖注入把服务和模块恰当连接。

7.更新HTML模板以使用新指令

2.5.在HTML文档中引导AngularJS

引导:1)通过ng-app指令定义应用程序模块,2)加载在<script>标签中的anjular.js

ng-app指令告诉AngularJS编译器把该元素作为编译的根。ng-app通常装入<html>标签,确保整个网页都会被包括。

2.6.使用全局API

使用AngularJS应用程序时:有些需要定期执行的JavaScript常见任务:比较对象,深拷贝,遍历对象,转换JSON数据。

var myCopy=angular.copy(myObj);

遍历数组。

var objArr=[{score:95},{score:98},{score:92}];
var scores=[];
angular.forEach(objArr,function(value,key){
  this.push(key+'='+value)
},scores);

1.步骤

  1. 加载AngularJS库和你的主模块
  2. 定义AngularJS应用程序根元素
  3. 将控制器添加到模板
  4. 实现作用域模型

AngularJS是一个JavaScript库的框架,提供了创建网站和web应用程序的一个结构化的方法。

AngularJS把Web应用程序组织为MVC

作用域作为应用程序的模型,由基本的JavaScript对象构成。

利用模板与扩展HTML功能的指令,实现自定义的HTML组件

<!DOCTYPE html>
<!-- 定义ANgularJS应用程序根元素(定义ng-app让AngularJS知道从哪里开始编译程序) -->
<html lang="en" ng-app="firstApp">
<head>
<meta charset="UTF-8">
<title>AngularJS App</title>
</head>
<!-- 实现按钮操作模型以及随后的视图 -->
<body>
<!-- 用AngularJS模块来控制的HTML元素添加一个控制器,需要在模块代码中定义此控制器 -->
<!-- 把名为FIrstController的控制器分配到<div>元素中,把视图中的元素映射到一个特定的控制器,包含一个作用域 -->
<div ng-controller="FirstController">
<span>Name:</span>
<!-- 实现作用域模型 -->
<!-- 控制器被定义,就可以实现作用域。涉及到把HTML元素链接到作用域变量。在该功能内初始化变量,提供功能处理对作用域的更改。-->
<input type="text" ng-model="first">
<input type="text" ng-model="last">
<button ng-click="updateMessage()">Message</button>
<hr>
{{heading+message}}
</div>
<script type="text/javascript" src="angular-1.3.0.js"></script>
<script type="text/javascript" src="first.js"></script>
</body>
</html>
// 定义模块增加控制器,过滤器和服务时使用的命名空间
// firstApp模块对象
var firstApp=angular.module('firstApp', []);
// 添加到firstApp模块的FirstController
firstApp.controller('FirstController', function($scope){
// 作用域的初始值
$scope.first='Some';
$scope.last='One';
$scope.heading='Message: ';
// 将单击处理程序链接到在作用域中定义的updateMessage()
$scope.updateMessage=function(){
$scope.message='Hello'+$scope.first+' '+$scope.last+'!';
};
})

  

3.创建基本的AngularJS应用的更多相关文章

  1. AngularJS开发指南15:AngularJS的创建服务,将服务注入到控制器,管理服务依赖详解

    创建服务 虽然AngularJS提供了很多有用的服务,但是如果你要创建一个很棒的应用,你可能还是要写自己的服务.你可以通过在模块中注册一个服务工厂函数,或者通过Module#factory api或者 ...

  2. 带你走近AngularJS - 创建自己定义指令

    带你走近AngularJS系列: 带你走近AngularJS - 基本功能介绍 带你走近AngularJS - 体验指令实例 带你走近AngularJS - 创建自己定义指令 ------------ ...

  3. 提高前端开发效率必备AngularJS (基础)

    简介 AngularJS 是一个为动态WEB应用设计的结构框架,提供给大家一种新的开发应用方式,这种方式可以让你扩展HTML的语法,以弥补在构建动态WEB应用时静态文本的不足,从而在web应用程序中使 ...

  4. 如何在 ASP.NET MVC 中集成 AngularJS(2)

    在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩.应用程序版本自动刷新和工程构建等内容. 下面介绍如何在 ASP.NET MVC 中 ...

  5. 带你走近AngularJS - 基本功能介绍

    带你走近AngularJS系列: 带你走近AngularJS - 基本功能介绍 带你走近AngularJS - 体验指令实例 带你走近AngularJS - 创建自定义指令 ------------- ...

  6. AngularJS学习笔记(1) - AngularJS入门

    什么是AngularJS? AngularJS是建立在jQuery的一个轻量级版本之上的MVC框架.MVC将业务逻辑代码和视图.模型相分离.AngularJS提供的所有功能都可以通过使用JavaScr ...

  7. AngularJS Moudle 函数讲解

    AngularJS中的Module类负责定义应用如何启动,它还可以通过声明的方式定义应用中的各个片段.我们来看看它是如何实现这些功能的. 一.Main方法在哪里 如果你是从Java或者Python编程 ...

  8. AngularJs之$scope对象(作用域)

      一.作用域 AngularJs中的$scope对象是模板的域模型,也称为作用域实例.通过为其属性赋值,可以传递数据给模板渲染. 每个$scope都是Scope类的实例,Scope类有很多方法,用于 ...

  9. AngularJS快速入门指南18:Application

    是时候创建一个真正的AngularJS单页面应用程序了(SPA). 一个AngularJS应用程序示例 你已经了解了足够多的内容来创建第一个AngularJS应用程序: My Note Save Cl ...

随机推荐

  1. RGB to HSI, HSI to RGB Conversion Calculator

    The RGB color model is an additive system in which each color is defined by the amount of red, green ...

  2. json最简单的跨域

    html代码 <html> <head> <title>index.html</title> <script type="text/ja ...

  3. 学海无涯的整理Ing..........

    1.文章:Understanding JavaScript Function Invocation and “this” http://yehudakatz.com/2011/08/11/unders ...

  4. msbuild

    https://msdn.microsoft.com/zh-cn/library/ms171466(v=vs.100).aspx

  5. centos 7.0 菜鸟接触命令 记录

    centos 7.0 最小化安装 查看IP ip addr 查看外网IP curl ifconfig.me 重启 shutdown -r now 安装wget yum -y install wget ...

  6. yum管理

    一.yum发展与作用     在linux系统维护中管理员经常遇到软件包的依赖问题,有时无法解决,比如你在安装库文件时常出现报错问题,说依赖其它软件包.由于这个问题一直困绕linux的广大爱好者,开源 ...

  7. iOS-马上着手开发iOS应用应用程序-第二部分构建应用程序

    第二部分构建应用程序 1,应用程序开发过程 2,设计用户界面 3,定义交互 4,教程:串联图 1,应用程序开发过程 定义概念 设计用户界面 定义交互 实现行为整合数据 对象是应用程序的基石 类是对象的 ...

  8. servlet的九大内置对象

    隐式对象 说明 request 转译后对应HttpServletRequest/ServletRequest对象 response 转译后对应HttpServletRespons/ServletRes ...

  9. InstallShield 2010 使用 .net framework 4.5

    一.InstallShield 2010 使用 .net framework 4.5记录 1.prq的地址,通过以下地址,下载相应的prq文件 .NET 4.5: http://saturn.inst ...

  10. Method Swizzling (方法调配)

    Method Swizzling是改变一个selector的实际实现的技术.通过这一技术,我们可以在运行时通过修改类的分发表中selector对应的函数,来修改方法的实现. 例如,我们想跟踪在程序中每 ...