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版),同时也 ...
随机推荐
- slxna,游戏页面切到后台回来后返回sl页面导致sl页面无响应,解决方法。
slxna在wp7上表现很好,因为那会xna还是微软的亲儿子.但是到wp8时代,微软丢弃xna,不管不问了.但是丢之前没有把兼容搞的完美,以致有很多隐秘的坑,说不定就踩到了. 我这个游戏的sl页面用了 ...
- Windbg是windows平台上强大的调试器
基础调试命令 - .dump/.dumpcap/.writemem/!runaway Windbg是windows平台上强大的调试器,它相对于其他常见的IDE集成的调试器有几个重要的优势, Windb ...
- 采用SOLR进行全文索引的完整解决方案,设计图
- Httphelper工具1
[苏飞开发助手V1.0测试版]官方教程与升级报告导读部分------------------------------------------------------------------------ ...
- Android中ListView下拉刷新的实现
ListView中的下拉刷新是非常常见的,也是经常使用的,看到有很多同学想要,那我就整理一下,供大家参考.那我就不解释,直接上代码了. 这里需要自己重写一下ListView,重写代码如下: packa ...
- Python学习入门基础教程(learning Python)--5.6 Python读文件操作高级
前文5.2节和5.4节分别就Python下读文件操作做了基础性讲述和提升性介绍,但是仍有些问题,比如在5.4节里涉及到一个多次读文件的问题,实际上我们还没有完全阐述完毕,下面这个图片的问题在哪呢? 问 ...
- 筛选实现C++实现筛选法
每日一贴,今天的内容关键字为筛选实现 筛选法 分析: 筛选法又称筛法,是求不超越自然数N(N>1)的全部质数的一种方法.据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274-19 ...
- 你的MongoDB Redis设置用户名密码了吗?看看shodan这款邪恶的搜索引擎吧!~
早上看新闻的时候看到了个醒目的新闻 开源中国:MongoDB 赎金事件持续发酵,究竟是谁之过? 博客园:MongoDB数据库勒索,中国受害者数量超乎你的想象,SOS! 1. 由于自己之前做过的项目,R ...
- Java多线程基础——线程间通信
在使用多线程的时候,经常需要多个线程进行协作来完成一件事情.在前面两章分析了Java多线程的基本使用以及利用synchronized来实现多个线程同步调用方法或者执行代码块.但上面两章的内容涉及到的例 ...
- windows系统下快捷命令
mstsc 远程计算机 regedit 注册表