文件名称:精通AngularJS part1
文件大小:30MB
文件格式:RAR
更新时间:2019-10-31 09:18:42
angular js 精通 pdf
编辑推荐 《精通AngularJS》指出AngularJS诞生于Google,已用于开发多款Google产品。它是一套JavaScript前端框架,用于开发当下流行的数据驱动的单页面Web应用。其核心特性是:MVC、模块化、自动双向数据绑定、语义化标签、依赖注入等。 作者简介 Pawel Kozlowski有15年以上的Web开发经验,接触过多种Web技术、语言和平台。他精通客户端和服务器端编程,并始终在寻找能提高生产率的工具和流程。Pawel是*和开源软件的坚定支持者,他在AngularJS 社区非常活跃,为AngularJS项目贡献了大量的代码。他也对Angular UI (AngularJS的配套框架)有所贡献,并为AngularJS 提供了Twitter Bootstrap 相关的指令(directives)。不写代码时,Pawel 常在会议与活动上为AngularJS布道。 Peter Bacon Darwin已经积累了20年以上的编程经验,他在.NET发布之前,就已经用它工作了。他还对IronRuby的开发有所贡献。他曾在Avanade和IMGROUP做IT顾问。退休后,*开发和照顾孩子占用了他大部分的时光。Peter是AngularJS社区的名人。他最近加入了Google的AngularJS团队。他还是Angular UI项目的创始成员。他曾在Devoxx UK和其他活动中发表过有关AngularJS的演讲,并开办过AngularJS的培训课程。他希望帮助企业更好地利用AngularJS。 目录 序1 第1章Angular之禅7 11邂逅AngularJS7 熟悉框架8 参与AngularJS项目8 社区8 在线学习资源9 库和扩展9 工具9 Batarang10 Plunker与jsFiddle10 IDE扩展和插件10 12AngularJS速成10 HelloWorld——AngularJS示例10 双向数据绑定12 AngularJS中的MVC模式12 鸟瞰13 深入作用域15 视图21 模块与依赖注入26 模块26 协作对象27 注册服务29 模块的生命周期33 模块依赖35 13AngularJS和其他框架38 jQuery与AngularJS39 苹果与橙子40 窥视未来41 14总结41 第2章构建与测试43 21介绍示例应用44 熟悉问题领域44 技术栈45 持久化存储46 MongoLab46 服务器端环境47 第三方JavaScript库48 BootstrapCSS48 22构建系统48 构建系统准则49 自动化所有事情49 尽早报错,清晰报错49 不同的工作流,不同的命令50 构建脚本同样是代码50 工具50 Gruntjs51 测试库与工具51 Jasmine51 Karmarunner52 23组织文件和目录52 根目录52 进入源代码目录54 AngularJS的特定文件54 轻装上路56 深入测试目录57 文件命名约定57 24AngularJS模块和文件57 一个文件,一个模块58 模块内部59 注册provider的不同语法59 声明配置和运行块的语法61 25自动化测试62 单元测试63 剖析Jasmine测试64 测试AngularJS对象65 测试服务65 测试控制器67 Mock对象和异步代码测试68 端对端测试70 日常工作流71 Karmarunner的提示与技巧72 执行测试子集73 调试73 26小结74 第3章与后端服务器通信75 31使用$http进行XHR和JSONP请求75 熟悉数据模型和MongoLabURLs76 $httpAPI快速导览76 配置对象说明77 转换请求数据78 处理HTTP响应79 转换响应数据79 处理同源政策约束79 利用JSONP克服同源政策约束80 JSONP的限制81 利用CORS克服同源政策约束81 服务器端代理83 32promiseAPI与$q84 工作中的promise和$q服务85 学习$q服务的基础知识85 promise是第一类JavaScript对象87 聚合回调88 注册回调和承诺的生命周期88 异步动作的链式调用89 关于$q的其他91 AngularJS中的$q集成93 33promiseAPI与$http94 34与RESTful端点通信95 $resource服务95 构造级与实例级方法97 $resource创建异步方法100 $resource服务的限制101 使用$http自定义REST适配器101 35使用$http的高级特性104 截取响应104 36测试与$http交互的代码106 37小结108 第4章显示与格式化数据109 41引用指令109 42显示表达式的求值结果110 插值指令110 利用ngBind渲染模型值111 AngularJS表达式中的HTML内容111 43条件化显示112 根据条件包含内容块114 44用ngRepeat指令渲染集合114 熟悉ngRepeat指令115 特殊变量115 迭代对象的属性116 ngRepeat模式117 列表和细节117 改动表格、行和类119 45DOM事件处理器120 46基于DOM的模板121 习惯烦琐的语法121 ngRepeat和多个DOM元素122 不能在运行时修改的元素和属性123 自定义HTML元素与IE的老版本124 47使用过滤器处理模型变换124 内置过滤器125 格式化过滤器125 数组变换过滤器125 编写自定义过滤器——分页示例131 从JavaScript代码中访问过滤器133 过滤器做什么与不做什么134 过滤器与DOM操作135 过滤器中代价高昂的数据变换136 不稳定的过滤器136 48摘要138 第5章创建高级表单139 51AngularJS表单与传统表单的比较139 介绍ngModel指令141 52创建用户信息表单142 53理解输入指令143 添加所需验证143 使用基于文本的输入(text、textarea、e—mail、URL、number)143 使用checkbox输入144 使用radio输入145 使用select输入145 提供简单的字符串options145 利用ngOptions指令提供动态options146 select指令与空的options148 理解select和对象判等149 选择多个options150 运用传统的HTMLhiddeninput字段150 嵌入来自服务器的值150 提交传统的HTML表单151 54详解ngModel数据绑定151 理解ngModelController151 在模型与视图之间转换值152 追踪值是否变化152 跟踪input字段有效性153 55校验AngularJS表单153 理解ngFormController153 运用name属性将表单附加到作用域上154 为用户信息表单增加动态行为154 显示验证错误155 让保存按钮无效156 使原生浏览器校验无效157 56在其他表单中嵌套表单157 将子表单作为可重用组件157 57重复子表单158 验证重复输入159 58处理传统的HTML表单提交161 直接向服务器提交表单161 处理表单提交事件161 使用ngSubmit处理表单提交162 使用ngClick处理表单提交162 59重置用户信息表单162 510摘要164 第6章导航165 61单页Web应用的URL166 HTML5之前的HashbangURL166 HTML5和historyAPI167 62使用$location服务168 理解$location服务API与URL的关系169 哈希、页面内导航和$anchorScroll170 配置HTML5方式的URL171 客户端171 服务端171 使用$location导航172 根据路由构建页面173 路由映射URL174 定义路由时指定控制器174 导航的不足175 63使用AngularJS自带的路由服务175 基础路由定义175 显示匹配的路由内容176 匹配灵活的路由177 定义默认路由178 访问路由参数178 多个控制器重用局部模板178 路由改变时避免UI抖动179 取消路由更新181 64$route服务的局限182 一个路由只对应页面中的一个区域183 使用ng—include处理多个UI区域183 不支持嵌套路由184 65路由相关的模式及技巧185 处理链接185 创建可点击的链接186 兼容HTML5及hashbang模式186 链接外部页面187 组织路由定义187 将路由定义分离到多个模块188 减少路由定义的重复代码188 66总结189 第7章安全191 71提供服务端认证和授权192 处理未授权的访问192 提供服务端验证API192 72保护局部模板193 73阻止恶意攻击194 防止cookie监听、中间人攻击194 防止跨站脚本攻击195 确保AngularJS表达式内HTML内容的安全性195 允许不安全的HTML绑定196 净化HTML196 防止JSON注入攻击197 防止跨站请求伪造198 74客户端安全198 创建security服务199 显示登录表单200 创建安全的菜单及工具栏201 隐藏菜单项201 创建登录工具栏202 75支持客户端认证203 处理认证失败203 拦截响应204 HTTP响应拦截器204 创建securityInterceptor服务205 创建securityRetryQueue服务207 通知安全服务208 76防止导航到安全受限路由208 使用路由resolve函数209 创建授权服务210 77总结212 第8章创建自定义指令213 81什么是AngularJS指令214 理解内置指令214 在HTML标签中使用指令215 82指令的编译生命周期215 83为指令编写单元测试217 84定义指令218 85使用指令修改按钮样式219 编写一个按钮指令220 86理解AngularJS的组件指令222 编写一个分页指令222 为分页指令编写单元测试代码223 在指令中使用HTML模板224 从父作用域中隔离指令225 使用@插入属性226 使用=绑定数据227 使用&提供一个回调表达式227 实现分页组件228 为指令添加分页跳转回调229 87创建一个自定义验证指令230 需要其他指令的控制器231 可选的依赖控制器231 查找祖先元素的控制器232 使用ngModelController232 编写自定义验证指令的单元测试233 实现自定义验证指令235 88创建一个异步模型验证器235 模拟用户服务236 为异步验证编写测试代码237 实现异步验证指令238 89包装jQueryUIdatepicker指令239 为包装组件指令编写测试代码240 实现jQuerydatepicker指令242 810小结243 第9章创建自定义指令245 91使用嵌入245 在指令中使用嵌入245 在独立作用域指令中使用嵌入246 创建一个使用嵌入的提示指令246 理解指令定义中的replace属性247 理解指令定义中的transclude属性248 使用ng—transclude插入嵌入元素248 理解嵌入作用域248 92创建和使用嵌入函数250 使用$compile服务创建一个嵌入函数251 在嵌入时克隆原始元素251 在指令中访问嵌入函数252 通过编译函数中的transcludeFn来获取嵌入函数252 通过$transclude在指令控制器中获取嵌入函数253 使用嵌入创建一个if指令253 在指令中使用priority属性255 93理解指令控制器256 为指令控制器注入特殊依赖257 创建一个基于控制器的分页指令258 理解指令控制器和链接函数的区别258 注入依赖259 编译过程259 获取其他控制器260 获取嵌入函数261 创建一个手风琴指令套件261 在手风琴组件中使用指令控制器262 实现accordion指令263 实现accordion—group指令263 94控制编译过程265 创建一个?eld指令265 在指令中使用terminal属性267 使用$interpolate服务268 绑定验证信息269 动态加载模板269 设置?eld指令的模板270 95小结271 第10章创建为全球用户服务的AngularJS应用273 101使用本地化的符号和设置274 配置本地化设置模块274 使用已有的本地化设置275 本地化设置和AngularJS过滤器275 102处理翻译277 翻译AngularJS模板中的字符串277 使用过滤器278 使用指令279 翻译JavaScript代码中的字符串280 103范式、秘诀和技巧282 按照设定的地区初始化应用282 将地区标识作为URL一部分带来的问题283 切换地区284 针对日期、数字和货币的自定义过滤器285 104小结287 第11章开发健壮的AngularJS应用289 111理解AngularJS的内部运作机制290 AngularJS不是基于字符串的模板引擎290 响应DOM事件更新模型291 将模型变化传播给DOM291 同步DOM和模型变化292 Scope$apply——打开AngularJS世界的钥匙293 深入$digest循环295 整合300 112性能优化——设置期望值、测量、调节、并重复301 113AngularJS应用的性能优化303 优化CPU使用率303 加速$digest循环303 尽可能少进入$digest循环310 限制每个$digest循环的执行轮数312 优化内存占用312 尽可能避免深度监视312 注意监视表达式的大小314 ng—repeat指令314 ng—repeat指令中对集合的监视314 瞬间绑定大量监视315 114小结315 第12章打包和部署AngularJSWeb应用317 121提升网络相关的性能318 压缩静态资源318 AngularJS如何判断依赖关系318 编写会被安全压缩的JavaScript代码319 数组风格依赖注入的缺陷322 模板预加载323 使用<script>指令预加载模板324 填充$templateCache服务325 组合使用不同的预加载技术327 122优化首页327 避免显示未经处理的模板328 使用ng—cloak指令隐藏DOM元素328 使用ng—bind指令隐藏表达式329 引入AngularJS和应用脚本文件330 引用脚本文件330 AngularJS和异步模块定义331 123浏览器支持333 在InternetExplorer中使用333 124小结334 索引337