AngularJS(带有MVC模式的开源javascript框架)
AngularJS是一款开源 JavaScript函式库,由Google维护, 众所周知地作为单一页面应用运作协助的。它的目标是增强基于浏览器的应用,并带有MVC模式 (MVC) 功能,这为了使得开发和测试变得更加容易。
函式库读取包含附加自定义(标签属性)的HTML, 遵从这些自定义属性中的指令,并将页面中的输入或输出与由JavaScript变量表示的模型绑定起来。这些JavaScript变量的值可以手工设置,或者从静态或动态JSON资源中获取。
AngularJS是建立在这样的信念上的:即声明式编程应该用于构建用户界面以及编写软件构建,而指令式编程非常适合来表示业务逻辑。[1] 框架采用并扩展了传统HTML,通过双向的数据绑定来适应动态内容,双向的数据绑定允许模型和视图之间的自动同步。因此,AngularJS使得对DOM的操作不再重要并提升了可测试性。
设计目标:
将应用逻辑与对DOM的操作解耦。这会提高代码的可测试性。将应用程序的测试看的跟应用程序的编写一样重要。代码的构成方式对测试的难度有巨大的影响。将应用程序的客户端与服务器端解耦。这允许客户端和服务器端的开发可以齐头并进,并且让双方的复用成为可能。指导开发者完成构建应用程序的整个历程: 从用户界面的设计,到编写业务逻辑,再到测试。Angular遵循软件工程的MVC模式,并鼓励展现,数据,和逻辑组件之间的松耦合.通过依赖注入(dependency injection),Angular为客户端的Web应用带来了传统服务端的服务,例如独立于视图的控制。 因此,后端减少了许多负担,产生了更轻的Web应用。
Angular主要的指令双向数据绑定Angular在呈现和资料中间,可以简单建立双向的数据绑定。
一但建立双向绑定。
使用者输入,会由Angular自动传到一个变量中,再自动读到所有绑到它的内容,更新它。效果上就是立即的资料同步。 在程式码中修改变量,也会直接反应到呈现的外观上。
不仅内容可以双向绑定,其他诸如类别、宽度、高度等等,都可以和变量与使用者的输入,绑定起来。
开发历史AngularJS在2009年起先由Mi?ko Hevery和Adam Abrons开发,作为在线JSON存储服务的软件,是以兆字节来计价,从而便于成为企业的应用。这个风投是以网络域名"GetAngular.com"注册的, 有些注册用户,在两人决定放弃这个商业想法之前,它作为一个开源库Angular许可发行。
Abrons离开了这个计划,但在Google工作的Hevery和一些谷歌员工Igor Minár和Vojta Jína等继续开发和维护这个库。
发行发行1.0.x是现在稳定版本, 同时,1.1.x可能含有breaking changes 在小的发行上(例如 1.1.x – 1.1.y).[2]
和Backbone.js的比较Data-binding数据绑定[3]REST [4]Templating模板 [3]参照
AngularJS是Google开源的一款JavaScript MVC框架,弥补了HTML在构建应用方面的不足,其通过使用指令(directives)结构来扩展HTML词汇,使开发者可以使用HTML来声明动态内容,从而使得Web开发和测试工作变得更加容易。
?
AngularJS诞生以来,吸引了大量的目光,也迅速成为了Web开发领域的新宠。本文整理了2013年度一些非常有价值的AngularJS相关教程和资源,如果你想了解AngularJS或正在使用AngularJS,那么这些资源肯定会为你的学习和进阶过程带来帮助。
一、了解AngularJS
??? AngularJS维基百科
??? 专访AngularJS框架创始人Misko Hevery
??? Angular.js VS. Ember.js:谁将成为Web开发的新宠?
二、中文资源
1.? 中文系列资源
??? AngularJS系列教程文章 – 大漠穷秋
??? AngularJS入门系列教程 – AngularJS中文社区
??? AngularJS学习笔记 – 邹业盛
??? AngularJS精彩问答 - 知乎
2.? 其他单篇文章
??? AngularJS 最佳实践
??? 有jQuery背景的开发者如何建立起AngularJS的思维模式?
??? 现在就开始使用AngularJS的三个重要原因
??? 使用AngularJS构建大型Web应用
??? Angularjs开发一些经验总结
??? 5个示例带你学习AngularJS
3.? 中文书籍
??? 《使用AngularJS开发下一代WEB应用》
三、英文资源
1.? AngularJS入门教程
??? AngularJS傻瓜教程系列
??? AngularJS移动开发权威指南
??? AngularJS 30分钟入门
??? 60分钟掌握AngularJS
??? 在你的AngularJS应用中建模数据
??? 使用$https创建服务
??? 了解AngularJS的5个步骤
??? AngularJS和RequireJS的动态加载控制器和视图
??? 先进的设计模式和最佳实践
??? AngularJS动画
??? AngularJS Factory与RESTful服务的交互
??? 使用Angular.js Factory获取远程数据
??? 使用AngularJS的10个理由
??? AngularJS中Providers之间的差异
??? AngularJS过滤
??? 针对jQuery开发者的AngularJ教程
??? Web开发者应该了解AngularJS的10个理由
??? Angular Js:何时应该使用Directive、Controller和Service?
??? 30秒从jQuery转到AngularJS
2.? AngularJS指令学习
??? 为jQuery插件构建AngularJS指令
??? 为D3.js条形图构建AngularJS指令
??? www.directiv.es:AngularJS指令库
??? Angular-localStorage
??? Videogular:一个基于AngularJS的HTML5视频播放器
??? Angular-cache
??? 可用于Twitter Bootstrap的Angular指令
??? Angular的图表指令和服务
??? 表排序
3.? AngularJS应用开发实战
??? 通过示例学习AngularJS——客户管理应用程序
??? AngularJS和IndexedDB结合使用
??? AngularJS:构建一个可重用的点击编辑指令
??? Play、Akka、AngularJS和Elasticsearch打造的实时日志搜索功能
??? 使用Firebase和AngularJS打造自己的Google Reader
??? 使用Phonegap、AngularJS和ExpressJS开发一个移动App
??? BirdWatch v0.2:基于AngularJS、ElasticSearch和Play Framework的Tweet流分析工具
??? 基于Solr和AngularJS的即时搜索工具
??? Sortis:高级用户的Twitter客户端,初学者的跳板
??? 可定制的Twitter AngularJS时间轴
??? AngularJS指令设计更轻松
4.? AngularJS游戏开发
??? 基于CoffeeScript和AngularJS的画圈打叉游戏
??? 超级马里奥卡片翻转游戏
5.? AngularJS工作流程和测试
??? AngularJS的测试策略 [视频]
??? 使用Combining Yeoman、AngularJS和Cordova开发移动App
??? 介绍Angular、Yeoman和Chrome应用程序 [视频]
??? 使用Jasmine测试Angular.js应用
??? 使用AngularJS和Karma进行全谱系测试
??? 使用Grunt插件创建AngularJS文档
??? ng-boilerplate:新的AngularJS项目的样板
??? 基于AngularJS的Chrome Web检查器扩展
??? 在Sublime Text中使用AngularJS包
6.? AngularJS书籍
??? 《AngularJS in Action》
??? 《The Beginner’s guide to AngularJS》
??? 《Mastering Web Application Development with AngularJS》
英文资源出处:Syntaxspectrum。希望上述资源可以为你在2014年深入学习AngularJS带来帮助。