引言

引言

似乎每天都有新的JavaScript库或框架发布,对此我多少已经有些麻木了。有能力从众多的库或框架中进行筛选是件好事,但至少在我看来,一个应用程序中如果包含了太多的脚本,对于维护来说却是件坏事。随着应用程序中脚本数量的增加,脚本间会产生依赖关系,所以我一直期待能有那么一到两个脚本,就提供我需要的所有核心功能。

当我第一次听说AngularJS时,它就立刻引起了我的注意,因为它只通过一个独立的框架就可以构建动态、交互密集型的客户端应用。通过进一步的研究,我确信这个第一判断是正确的,于是开始迷上了这个框架。AngularJS提供了一系列健壮的功能,以及将代码隔离成模块的方法,这对提高可复用性、可维护性和可测试性都是非常有益的。它的核心功能包括DOM操作、动画、模板、双向数据绑定、路由、历史管理、Ajax和测试,等等。

基于一个核心框架进行开发虽然很方便,但是学习它却充满挑战。一开始学习AngularJS时,我迷失在各种不同的主题中,并很快变得有些沮丧,甚至开始怀疑它到底是不是我想要的。服务是什么?它和工厂相比有什么区别?作用域服务是怎么同整个系统融合在一起的?指令是什么,我为什么要使用它?将这些零碎的知识点拼在一起形成大局观是我最初要克服的障碍。如果能有一些简明的参考资料,对于降低学习难度大有裨益。

很幸运,你已经有了这样一本优秀的参考资料,就是你手上的这本《AngularJS权威教程》,它将帮助你提升学习效率。本书作者将他掌握的AngularJS知识倾囊相授,并以非常容易理解和学习的方式呈现给大家。如果你想更深入地了解数据绑定、实时模板的工作原理、测试AngularJS应用的流程、服务和工厂的作用以及作用域和控制器如何协同工作等知识,那么这本书就是你所需要的。使用功能强大的AngularJS进行开发是一件非常有趣的事情,本书的示例将帮助你快速掌握这个框架。祝你的AngularJS项目一切顺利!

Dan Wahlin,瓦林咨询公司1

1个人博客和Twitter页面网址为http://weblogs.asp.net/dwahlinhttp://twitter.com/DanWahlin

致谢

首先,我要感谢一直鼓励我完成这本书的每一个人。那些说写书很容易的人,一定没有亲自写过。

我还要亲自感谢Q Kuhns对本书语法方面不厌其烦的修改和支持,感谢Erik Trom耐心地对细节进行修订,以及Nate Murray的清晰思路和乐观精神。

非常感谢Hack Reactor的全体成员在2013年的暑期课程中给了我一个探索如何在正式场合讲授AngularJS的机会。

同时也要感谢我在30x500的校友们,Sean Iams、Michael Fairchild、Bradly Green、Misko Hevery和整个AirPair团队。

最后,感谢那些对这本书的预览版提供帮助的人。我们从社区获得了非常棒的帮助和支持。特别要感谢以下三位:

  • Philip Westwell
  • Saurabh Agrawal
  • Dougal MacPherson

关于本书

本书包含了能让你成为AngularJS高手的解决方案。AngularJS是由Google开发的先进前端框架,借助它你可以快捷高效地开发富交互应用。

本书提供了一系列前沿工具,使你在很短的时间内就可以上手创建令人印象深刻的Web体验。它能帮助你解决棘手的问题,并提供了一些可以立刻投入使用的实用技术。

本书涵盖的主题可以帮助你构建专业的Web应用,并能够非常顺利地执行。这些主题包括:

  • 与RESTful风格的Web服务交互;
  • 创建可复用的自定义组件;
  • 测试;
  • 异步编程;
  • 创建服务;
  • 提供先进的视觉效果;
  • 其他更多内容。

本书的目标不仅是让你深刻了解AngularJS的运行原理,而且同时也提供了专业的代码片段,你可以对它们进行修改,从而构建你自己的应用。

借助这些工具和测试,你可以着手使用AngularJS开发自己的动态Web应用了,并且确信你的应用是可扩展的。

本书读者对象

本书写给那些从未使用AngularJS开发过Web应用,并且对如何开始使用这个优秀的框架心存好奇的读者。我们假定读者已经掌握了HTML和CSS,并且熟悉JavaScript(或者其他JavaScript框架)的基础知识。

本书组织结构

首先,本书涵盖了入门的基础知识,目的是帮助你很快上手使用AngularJS开发动态Web应用。

接下来会介绍AngularJS的工作原理,以及它与其他流行的JavaScript框架的差异。我们会深入讨论AngularJS应用内部的工作流程。

最后,我们将应用所学的知识开发一个相对复杂的应用程序。

其他资源

我们会引用AngularJS官方网站的文档。官方文档是非常好的学习资源,我们会经常用到它。

建议你先看一下AngularJS的API文档,通过它,你可以直接获得开发AngularJS应用的推荐方法。同时,这个文档肯定也是最新的。

本书排版约定

本书使用如下排版规范来表示不同类型的信息。

单行代码是这样的:<h1>Hello</h1>

代码块如下所示:

var app = angular.module('App', []); 

app.controller('FirstController', function($scope) {
    $scope.data = "Hello";    
});

命令行中的命令如下所示:

$ ls -la

Chrome(开发过程中使用的主要浏览器)开发者控制台中的命令如下所示:

> var obj = {message: "hello"};

新术语使用楷体。

重点文字将会加粗

提示和技巧用如下图标标示:

这个图标表示提示。

提醒和陷阱用警告图标标示:

这个图标表示警告。

错误信息用如下图标标示:

这个图标表示错误。

重要的补充内容使用如下图标标示:

信息框。

需要讨论的主题用如下图标标示:

这是一个讨论框。

开发环境

为了开发AngularJS应用,首先需要一个顺手的开发环境。在整个学习过程中,我们会将精力主要放在两个环境中:编辑器和浏览器。

本书提到编辑器时指的是你使用的文本编辑器,而浏览器就是你使用的浏览器。强烈建议你下载Google的Chrome浏览器,因为它提供了一个非常强大的开发环境,可以使用开发者工具。

开始之前,我们还需要安装一些库。为了运行测试,我们需要Karma和Node.js。最好也装上git,但不强求。

本书不会介绍如何安装NodeJS。可以访问nodejs.org来获得更多信息。2

2读者还可以参考人民邮电出版社图灵公司出版的《深入浅出Node.js》一书。——编者注

虽然我们大部分工作都是在浏览器中完成的,但本书的部分内容也会重点介绍如何在服务器端通过构建RESTful风格的API来服务前端。

目录

  • 版权声明
  • 在微博上分享这本书
  • 献词
  • 译者序
  • 引言
  • 第 1 章 初识AngularJS
  • 第 2 章 数据绑定和第一个AngularJS Web应用
  • 第 3 章 模块
  • 第 4 章 作用域
  • 第 5 章 控制器
  • 第 6 章 表达式
  • 第 7 章 过滤器
  • 第 8 章 指令简介
  • 第 9 章 内置指令
  • 第 10 章 指令详解
  • 第 11 章 AngularJS模块加载
  • 第 12 章 多重视图和路由
  • 第 13 章 依赖注入
  • 第 14 章 服务
  • 第 15 章 同外界通信:XHR和服务器通信
  • 第 16 章 XHR实践
  • 第 17 章 promise
  • 第 18 章 服务器通信
  • 第 19 章 测试
  • 第 20 章 事件
  • 第 21 章 架构
  • 第 22 章 Angular动画
  • 第 23 章 digest循环和$apply
  • 第 24 章 揭秘Angular
  • 第 25 章 Angular精华扩展
  • 第 26 章 移动应用
  • 第 27 章 本地化
  • 第 28 章 缓存
  • 第 29 章 安全性
  • 第 30 章 AngularJS和IE浏览器
  • 第 31 章 构建Angular Chrome应用
  • 第 32 章 优化Angular应用
  • 第 33 章 调试AngularJS
  • 第 34 章 下一步
  • 第 35 章 总结
  • ngbook-2014年10月更新