AngularJs基础

AngularJS是一个JS框架,它提供了创建网站和web应用结构化的方法。AngularJS是建立在jQuery的一个轻量级版本之上的JS库。AngularJS对于Node.js栈来说是一个完美的客户端库,它提供非常整洁和结构化的方法。

为什么选择AngularJS

AngularJS是建立在JavaScript和jQuery的轻量级版本之上的MVC框架,MVC框架将业务逻辑代码与视图和模型分离。

  • 强制正确实现MVC
  • HTML模板的声明风格
  • 模型是JS对象
  • 使用声明的方式
  • 提供简单灵活的过滤器接口
  • 应用倾向于使用传统JS应用所使用代码的一小部分
  • 比传统的方法所需的文档对象模型操作少了很多
  • 内置服务能够用结构化和可重用的方式实现自己的服务
  • 清晰地把职责分离

了解AngularJS

AngularJS提供一种基于MVC模式的非常结构化的框架,该框架允许你构建功能强大且易于理解和维护的结构化的应用。

模块

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

AngularJS中每个视图通过 ng-app 指令分配一个单独的模块,可把其他模块作为依赖模块添加到主模块,以构建结构化和组件的应用。

作用域

AngularJS引入作用域(scope),作用域实际上只是用来填充呈现在页面上的视图的数据的一个JS表示。其数据来源可来自数据库、远程网络服务或是客户端AngularJS代码,也可由web服务器动态生成。

作用域的特点是,他们只是普通的JS对象,这意味着可根据需要在AngularJS代码中轻松地操纵它们。此外,还可嵌套作用域来组织数据已匹配他们正在使用的上下文。

视图

HTML网页而是基于DOM的,每个HTML元素都由一个DOM对象来标识。web浏览器读取DOM对象的属性并指导如何基于DOM对象的属性在页面上呈现HTML元素。

AngularJS引入了结合模板和指令来建立呈现用户的HTML视图的概念,指令包括两部分,第一部分是要被添加到一个HTML模板的额外属性、元素、CSS类。第二部分是扩展了DOM的一般行为的JS代码。

指令的优点是HTML模板通过指令指出预期的逻辑,此外内置的AngularJS指令处理大多数必要的DOM操作功能,利用它们可实现把作用域中的数据绑定到视图。

表达式

AngularJS具有在HTML模板中添加表达式的能力,AngularJS对表达式求值,然后动态地把结果添加到网页。表达式被链接到作用域,因此获得表达式可得到利用作用域中的值,当模式改变时表达式的值也跟着改变。

控制器

AngularJS 通过实现控制器完成MVC框架,控制器通过建立初始状态或值的作用域,并通过为作用域添加行为扩大了作用域。可使用指令把控制器添加到HTML元素中,在后台把他们实现为JS代码。

数据绑定

AngularJS内置数据绑定,数据绑定是把模型中的数据与页面显示内容链接的过程,AngularJS提供整洁的接口把模型数据链接到网页元素中。

AngularJS数据绑定是一个双向过程,当页面数据改变时模型被更新,当数据在模型中被改变时页面会自动更新。模型始终是向用户呈现的数据的唯一来源,而试图只是模型的一个投影。

服务

服务是在AngularJS环境中工作的主力,服务是为web应用提供功能的单例对象。服务功能与上下文或状态是完全独立的,很容易被一个应用的组件使用。AngularJS提供内置的服务组件用于基本用途,如HTTP请求、日志记录、分析、动画等。

依赖注入

依赖注入是一个过程,其中一个代码组件定义了对其他组件的依赖关系,当代码被初始化时,以来组件可提供组件内部访问。AngularJS应用大量使用依赖注入。依赖注入的常见用法是使用服务,此外,一个AngularJS模块通过依赖使用另一个模块的功能。

职责分离

设计AngularJS应用时重要的原则是职责分离,选择一个结构化框架是为了确保代码被很好地实现,易于理解维护和测试。

你应该遵守的规则

  • 视图作为应用的正式表示结构,表明任何表示逻辑都作为视图的HTML模板指令。
  • 若需进行DOM操作,在内置指令或自定义指令的JS中进行,而不是其他地方进行。
  • 把任何可重复使用的任务都实现为服务,并通过依赖注入把它们添加到模块中。
  • 确保作用域反映了模型的当前状态,并是由该视图使用的视图的单一来源。
  • 确保控制器只起到充实作用域的数据的作用而不包含任何义务逻辑
  • 模型的命名空间中定义控制器而非全局定义,以确保应用可被包装并防止铺天盖地的全局命名空间。

AngularJS 生命周期

引导阶段

在AngularJS JS被下载到浏览器时发生,AngularJS初始化自身必要的组件,初始化ng-app指令指向的模块。模块被加载依赖关系都被注入到模块,提供给模块中的代码使用。

编译阶段

HTML编译阶段,最初页面加载时DOM的静态形式被加载到浏览器,在编译阶段静态DOM被替换为一个表示AngularJS视图的动态DOM。

HTML编译阶段包含两部分:遍历静态DOM并收集所有指令,把指令链接到AngularJS内置库或自定义指令代码中相应的JS功能上。指令与作用域相结合产生动态或实时视图。

运行时数据绑定阶段

运行时阶段一直存在直到用户重新加载或离开页面为止,在这一时点上在作用域中的任何更改都将反映在视图中,并且在视图中的任何更改也直接更新到作用域,使作用域成为视图数据的单一来源。

AngularJS的行为不同于传统的数据绑定方法,传统的方法把模型与从引擎接收到的数据相结合,然后在每次数据发生变化时对DOM执行操作。AngularJS只编译DOM一次然后根据需要链接已编译的模板,从而使之比传统方法更高效。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352