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版),同时也 ...
随机推荐
- hibernate查询出的数据和数据库不一致
之前直接使用hibernate的时候就出现过已经进行物理存储后的数据,查询不出来的情况,既然是已经存储后的数据,说明事务已经提交,想必问题出在查询时,查询的缓存,没有查询数据库.时有时无就很奇怪. 现 ...
- Sublime Text 3设置笔记
Sublime Text 3设置笔记 Sublime Text 3设置指南 1. 安装package control 下载package control源码安装包,并解压: http://yun.ba ...
- 分享Mvc3+NInject+EF+LigerUI权限系统Demo
前段时间时不时看到有园友的分享权限系统,于是本人突发奇想,也想写一个玩玩,就利用晚上时间,陆陆续续花了一周多样子,写了如今这个权限系统,这个权限系统具有 组织结构.用户.角色.菜单,组织结构下挂用户, ...
- [读书心得] .NET中 类型,对象,线程栈,托管堆在运行时的关系
.NET中 类型,对象,线程栈,托管堆 在运行时的关系 The Relationship at Run Time between Types,Objects,A Thread's Stack,and ...
- Redis:在windows环境安装Redis
Redis:在windows环境安装Redis 第一步: 下载windows版本的Redis:https://github.com/MSOpenTech/Redis. 第二步: 在命令行执行:D:\r ...
- django model Foreign key usage 关系型数据库 ORM
django 的模型 from django.db import models""" A model pair to map car and its manufactur ...
- JSP实现页面跳转的方式
js实现页面跳转的几种方式普通方式 第一种: <script language="javascript" type="text/javascript"&g ...
- hdu 1809 求SG函数
A New Tetris Game(2) Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Android call setting 源码分析
看下篇之前,请先读这三篇文章: Android GSM驱动模块(rild)详细分析(一)基本架构及初始化 Android GSM驱动模块(rild)详细分析(二)request流程 Android G ...
- Tungsten Replicator学习总结
之前基于Tungsten Replicator实现了内部使用的分布式数据库的数据迁移工具,此文为当时调研Tungsten Replicator时的学习心得,创建于2015.7.22. 1 概述 1.1 ...