anglarjs概述
anglarjs 是一个MVC框架,是开发单页面应用的上上之选,它不是一个功能库,是一个开发动态页面的html框架。专注于扩展html功能,提供动态数据绑定,并能够与jquery合作融洽。
要定义一个AngularJS应用,我们先得定义一个AngularJS模块(angular.module)。所谓AngularJS模块,其实就是一系列函数的集合,当应用被启动时,这些函数就会被执行。
anglarjs的主要组成部分,以及他们是如何运作的
启动(startup) - 展示“hello world!”
执行期(runtime) - AngularJS 执行期概览
作用域(scope) - 视图和控制器的集合区
控制器(controller) - 应用的行为
模型(model) - 应用的数据
视图(view) - 用户能看到的
指令(directives) - 扩展HTML语法
过滤器(filters) - 数据本地化
注入器(injector) - 聚合你的应用
模块(module) - 配置注入器
$ - AngularJS的命名空间(namespace)
他们是这样协同工作的:
1. 浏览器载入HTML,然后把它解析成DOM
2. 浏览器载入angular.js脚本
3. angularjs等到DOMContentLoaded事件触发。
4. anglarjs寻找ng-app指令,这个指令指示了应用的边界
5. 使用ng-app中制定的模块来配置注入器($injector)
6. 注入器($injector)是用来创建"编译服务($compile service)"和"根作用域($rootScope)"的。
scope作用域是用来检测模型的改变和为表达式提供执行上下文的,它是分层组织起来的,并且层级关系是紧跟着DOM的结构的。
视图背后的控制代码就是控制器,它的主要工作内容是构造模型,并把模型和回调方法一起发送到视图,视图可以看做是作用域在模板上的投影,而作用域是一个中间地带,它把模型整理好传递给视图,把浏览器事件传递给控制器。控制器和模型的分离非常重要。
控制器是由javascript写的,Javascript是命令式的,命令式的语言适合用来编写应用的行为。控制器不应该包含任何关于渲染代码(DOM引用或者片段)。
视图模板是用HTML写的,HTML是声明式的,声明式的语言适合用来编写UI,视图不应该包含任何行为。
因为控制器和视图没有直接的调用关系,所以可以多个视图对应同一个控制器。
模型就是用来和模板结合生成视图的数据。模型必须在作用域中时可以被引用,这样才能被渲染成视图。
和其它框架不一样的是,anglarjs对模型本身没有任何限制和要求,它就是原生的JavaScript对象。
视图,就是用户所看见的,视图的生命周期由作为一个模板开始,它将和模型合并并最终渲染到浏览器的DOM中。
指令: 一个指令就是一种“由某个属性,元素名称,css类名出现而导致的行为,或者说是DOM的变化”,指令能让以一种声明式的方法来扩张HTML标示能力。
过滤器: 它扮演者数据翻译的角色,一般主要用子啊数据需要格式化成本地格式的时候,它参照了UNIX过滤的规则,
并且也实现了"|"管道语法。
模块和注入器: 每个angularjs应用都有一个唯一的注入器,注入器提供一个通过名字查找对象实例的方法,它将所有对象缓存在内部,所以如果重复调用同一名称的对象,每次调用都会得到同一个实例。如果调用的对象不存在,那么注入器就睡让实例工厂创建一个新的实例。一个模块就是一种配置注入器实例工厂的方式,也被称为“提供者(provider)”
模块: 大部分应用都有一个主方法用来实例化,组织,启动应用。angularjs应用没有主方法,而是使用模块来声明应用应该如何启动。
结合目前工作中的使用情况,对于大型应用,可以拆分为以下几个模块:
一个服务模块,用来做服务的声明。
一个指令模块,用来做指令的声明。
一个过滤器模块,用力啊做过滤器声明。
一个依赖以上模块的应用级模块,它包含初始化代码。
anglarjs概述的更多相关文章
- 【AR实验室】ARToolKit之概述篇
0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- .Net 大型分布式基础服务架构横向演变概述
一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...
- [C#] 进阶 - LINQ 标准查询操作概述
LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- Java消息队列--JMS概述
1.什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...
- [AlwaysOn Availability Groups]健康模型 Part 1——概述
健康模型概述 在成功部署AG之后,跟踪和维护健康状况是很重要的. 1.AG健康模型概述 AG的健康模型是基于策略管理(Policy Based Management PBM)的.如果不熟悉这个特性,可 ...
- μCos-ii学习笔记1_概述
一.μCos-ii _概述 网上关于μCosii的文章多不胜数,本人学习的过程中也参考了很多人的理解和想法,看的是卢有亮老师的<嵌入式实时操作系统-μC/OS原理与实践>(第2版),同时也 ...
随机推荐
- Java笔记:枚举类
1.一个类的实例是有限且固定的,这个类称为枚举类.比如季节类,只有四个对象(春.夏.秋.冬) 2.手动实现一个枚举类(1)通过private将构造器隐藏起来(2)把这个类的所有可能实例都使用priva ...
- 从零开始学C++之STL(四):算法简介、7种算法分类
一.算法 算法是以函数模板的形式实现的.常用的算法涉及到比较.交换.查找.搜索.复制.修改.移除.反转.排序.合并等等. 算法并非容器类型的成员函数,而是一些全局函数,要与迭代器一起搭配使用. 算法的 ...
- [COM/ATL]组件、对象、MFC、ATL的区别
组件(Component)和对象(Object)之间的区别 先明确组件(Component)和对象(Object)之间的区别.组件是一个可重用的模块,它是由一 组处理过程.数据封装和用户接口组成的业务 ...
- Hadoop Streaming Command Details and Q&A
Hadoop Streaming Hadoopstreaming is a utility that comes with the Hadoop distribution. The utilityal ...
- jvm回收方法区
很多人认为方法区(或者HotSpot虚拟机中的永久代)是没有垃圾收集的,Java虚拟机规范中确实说过可以不要求虚拟机在方法区实现垃圾收集,而且在方法区进行垃圾收集的“性价比”一般比较低:在堆中,尤其是 ...
- 【.net 深呼吸】细说CodeDom(9):动态编译
知道了如果构建代码文档,知道了如何生成代码,那么编译程序集就很简单了. CodeDomProvider 类提供了三个可以执行编译的方法: 1.CompileAssemblyFromSource——这个 ...
- 还在为小三角形切图?使用纯CSS写一个简单的三角形
同学们,当美工给的设计图是这样: 或者这样: 我的内心其实是拒绝的-_-:但工作还得干,大部分同学会写 <style> .icon{width:20px;height:20px;displ ...
- keychain的使用
通常情况下,我们用NSUserDefaults存储数据信息,但是对于一些私密信息,比如密码.证书等等,就需要使用更为安全的keychain了.keychain里保存的信息不会因App被删除而丢失,在用 ...
- Token注解防止表单的重复提交
注解的一些基础: 参见http://blog.csdn.net/duo2005duo/article/details/50505884和 http://blog.csdn.net/duo2005duo ...
- 9.mybatis动态SQL标签的用法
mybatis动态SQL标签的用法 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么 ...