遵循实践,从头构建实际应用。
深入解析不可多得的JavaScript高级主题。
为你构建21世纪的杀手级应用贡献一臂之力
《图灵程序设计丛书:JavaScript编程实战》深入探讨了如何基于JavaScript技术从头开始创建真实的应用,共分为四个部分。第一部分介绍了最佳实践以及库、框架与插件,为构建应用奠定坚实的基础。第二部分讨论了前端的构建,包括Backbone.js、JavaScript模板,以及表单处理和校验的相关内容。第三部分涉及如何用Node.js编写服务器端JavaScript。最后一部分挑战程序的功能极限,介绍了如何构建实时应用程序、调整移动领域的Web程序、JavaScript图形处理技术等内容。
《图灵程序设计丛书:JavaScript编程实战》适合所有熟悉JavaScript并希望提升相关技术水平的开发人员和设计人员学习参考。
1.3.3 版本控制
如果你开发时不用版本控制工具,那我就不用跟你强调它的重要性了。不过我在每个项目中都会用到,即便是只有我一个人做的微型项目。版本控制能追踪代码库随时问发生的变化。如果你能定期提交代码,就能回退到原来的任何一点上,甚至可以把某次提交中的修改合并到其他提交点上。如果要跟其他开发人员协作,版本控制更是必不可少。不要试图自己搞清楚谁改了哪个文件,让版本控制工具替你跟踪吧。 如果你和其他开发人员修改了同一个文件,版本控制工具可以将你们的改动合并到一起。但偶尔也会发生冲突,比如你们改了同一行代码。出现这种情况时,版本控制工具可以让你们手动合并。不过即便你是独自开发,我也会强烈建议你使用版本控制工具。使用版本控制工具之前,我总是会把当时不再使用的代码注释掉,怕我以后万一还要用。现在如果再有需要,我只要回退那些修改就行了,这样代码库比以前整洁多了。并且如果客户对功能的需求发生了变化,我只要用一行命令就能回退代码库。 在各种各样的版本控制系统中,我个人最喜欢Git。Git应用很广,在选择协作软件时这一点很重要。更重要的是,Git是分布式版本控制系统,不是集中式的。这种版本控制有几个优势。首先,这样每个用户都有自己的存储库,以后可以合并到主库(或其他库)中,因此提供了额外的版本层次。此外,它用起来更容易,因为你无需服务器就可以设置本地的分布式版本控制(可以以后再连到服务器上)。关于如何使用Git,有一本免费的电子书可以参阅——
1.3.4 CSS预处理
我不准备在本书中谈论太多CSS,但程序里肯定要用到样式,所以你真的应该使用CSS预处理器。借助SASS和LESS之类的CSS预处理器,你可以用更精巧的方式编写CSS。它们提供了大量的脚本操作,最终都能编译成静态CSS文件。也就是说,你既能借用动态脚本语言的力量,又能得到任何浏览器都可以识别的标准CSS文件。
……
第一部分 坚实的基础
第1章 最佳实践
1.1 松耦合
1.1.1 紧耦合的问题
1.1.2 松耦合的优势
1.2 JavaScript MVC和模板
1.2.1 MVC
1.2.2 模板
1.3 开发工具
1.3.1 WebKit开发人员工具
1.3.2 Weinre
1.3.3 版本控制
1.3.4 CSS预处理
1.4 测试
1.4.1 使用Grunt
1.4.2 使用QUnit
1.5 小结
1.6 补充资源
第2章 库、框架与插件
2.1 选择恰当的JavaScript库
2.1.1 jQuery
2.1.2 Zepto
2.1.3 普通的DOM
2.2 使用框架
2.2.1 Bootstrap
2.2.2 jQuery UI
2.2.3 移动框架
2.3 其他脚本
2.3.1 Modernizr
2.3.2 HTML5 Shiv
2.4 HTML5样板
2.5 寻找jQuery插件
2.5.1 去哪里(以及不要去哪里)找
2.5.2 要找什么--一个十项检查列表
2.6 小结
2.7 补充资源
第二部分 构建前端
第3章 Backbone.js
3.1 初识Backbone
3.1.1 Backbone是什么
3.1.2 为什么要用Backbone
3.1.3 Backbone基础
3.1.4 什么时候用Backbone
3.1.5 设置Backbone
3.2 Backbone中的模型
3.2.1 创建一个模型
3.2.2 创建计算属性
3.2.3 设置默认值
3.2.4 使用初始化函数
3.2.5 使用Backbone事件
3.2.6 模型的校验
3.3 使用Backbone中的集合
3.3.1 创建集合
3.3.2 创建集合事件
3.4 理解Backbone视图
3.4.1 创建视图
3.4.2 使用渲染函数
3.4.3 使用Backbone中的视图元素
3.4.4 使用嵌套视图
3.5 数据的保存及获取
3.5.1 与服务器上的模型同步
3.5.2 在Backbone中使用LocalStorage API
3.5.3 把集合保存在服务器上
3.5.4 使用Backbone.sync
3.6 使用路由控制器
3.6.1 路由如何使用
3.6.2 设置路由控制器
3.6.3 PushState与Hashchange
3.7 再谈事件
3.7.1 事件解绑定
3.7.2 手动触发事件
3.7.3 绑定"this"
3.7.4 All事件
3.8 操作集合
3.8.1 取出集合中的条目
3.8.2 集合排序
3.9 小结
3.10 补充资源
第4章 使用JavaScript模板
4.1 认识模板
4.1.1 为什么使用模板
4.1.2 了解不同的模板库
4.1.3 做出正确的选择
4.2 使用Underscore模板
4.2.1 Underscore模板基础知识
4.2.2 重温模板的最佳实践
4.2.3 在模板中使用JavaScript
4.3 在Backbone中使用模板
4.3.1 不用模板设置模型和视图
4.3.2 用模板渲染视图
4.4 小结
4.5 补充资源
第5章 创建表单
5.1 理解渐进式增强
5.1.1 渐进式增强方式
5.1.2 为什么要渐进式增强
5.1.3 决定支持哪个环境
5.2 让HTML5替你工作
5.2.1 HTML5的输入控件类型
5.2.2 交互特性
5.3 给老浏览器用Polyfill
5.3.1 寻找第三方Polyfill
5.3.2 编写自己的Polyfill
5.4 连接REST API
5.4.1 提交表单
5.4.2 构建通用函数
5.5 Backbone中的表单
5.5.1 设置表单模型
5.5.2 设置表单视图
5.5.3 将表单域保存到模型中
5.5.4 添加校验
5.5.5 清理模板
5.5.6 必填项
5.5.7 提交表单
5.5.8 合并代码
5.6 小结
5.7 补充资源
第三部分 编写服务器端JavaScript
第6章 Node.js简介
6.1 为什么是Node
6.1.1 在实时程序中使用Node
6.1.2 Node的工作机制
6.2 安装Node
6.2.1 在Mac/Linux上安装
6.2.2 在Windows上安装
6.2.3 检查安装情况
6.3 Node入门
6.3.1 创建服务器
6.3.2 添加内容
6.3.3 打包
6.3.4 运行脚本
6.3.5 简化脚本
6.3.6 使用Node REPL
6.4 Node模块
6.4.1 引入模块
6.4.2 外部模块和NPM
6.4.3 寻找模块
6.5 Node 模式
6.5.1 模块和全局变量
6.5.2 异步模式
6.5.3 事件
6.5.4 子进程
6.6 小结
6.7 补充资源
第7章 Express框架
7.1 Express入门
7.1.1 安装Express
7.1.2 创建Express程序
7.2 设置路由
7.2.1 已有路由
7.2.2 创建新的路由
7.2.3 POST、PUT和DELETE
7.3 渲染视图
7.3.1 启用Underscore模板
7.3.2 创建视图
7.4 处理表单数据
7.4.1 创建POST路由
7.4.2 将反馈发给模板
7.5 发封邮件
7.5.1 连到SMTP服务器上
7.5.2 构建Email消息
7.5.3 发送邮件
7.5.4 在结束之前
7.6 小结
7.7 补充资源
第8章 MongoDB
8.1 NoSQL数据库有什么好处
8.1.1 扩展能力
8.1.2 简单性
8.2 MongoDB入门
8.2.1 安装MongoDB
8.2.2 运行MongoDB
8.2.3 安装MongoDB模块
8.2.4 创建数据库
8.3 MongoDB中的CRUD
8.3.1 创建集合
8.3.2 读取数据
8.3.3 更新数据
8.3.4 删除数据
8.4 Mongoose
8.4.1 Mongoose入门
8.4.2 创建模型
8.4.3 读取数据
8.5 数据库上的其他选择
8.6 小结
8.7 补充资源
第四部分 挑战极限
第9章 用WebSockets构建实时程序
9.1 WebSockets的工作机制
9.1.1 轮询的问题
9.1.2 WebSockets方案
9.2 Socket.IO入门
9.2.1 服务器上的Socket.IO
9.2.2 客户端的Socket.IO
9.3 构建实时的聊天室
9.3.1 创建聊天室视图
9.3.2 将消息提交给服务器
9.3.3 在服务器端处理消息
9.3.4 在客户端显示新消息
9.3.5 添加Backbone.js结构
9.3.6 添加用户
9.3.7 添加时间戳
9.3.8 保存到MongoDB中
9.3.9 合并代码
9.4 小结
9.5 补充资源
第10章 进入移动领域
10.1 搭建移动App
10.1.1 检测移动终端
10.1.2 设置移动端网站的样式
10.1.3 移动端框架
10.2 集成触屏
10.2.1 基本触摸事件
10.2.2 复杂的触摸手势
10.3 Geolocation
10.3.1 找到用户的位置
10.3.2 连接Google地图
10.3.3 追踪Geolocation的变化
10.4 电话号码和短信
10.4.1 静态的电话号码和SMS链接
10.4.2 用JavaScript拨打电话和发送短信
10.5 PhoneGap
10.5.1 PhoneGap的优与劣
10.5.2 PhoneGap入门
10.5.3 连接相机
10.5.4 连接通讯录
10.5.5 其他API
10.6 小结
10.7 补充资源
第11章 JavaScript图形
11.1 画布基础
11.1.1 画出基本的形状
11.1.2 让画布动起来
11.1.3 画布中的鼠标事件
11.2 SVG基础
11.2.1 让SVG动起来
11.2.2 SVG鼠标事件
11.2.3 编码SVG
11.3 Rapha?l.js
11.3.1 作画路径
11.3.2 画曲线
11.3.3 样式
11.3.4 动画
11.3.5 鼠标事件
11.4 用gRapha?l做图表
11.4.1 饼图
11.4.2 柱状图
11.4.3 折线图
11.5 带WebGL的3D画布
11.5.1 Three.js简介
11.5.2 创建图像纹理
11.5.3 3D动画
11.5.4 添加鼠标事件
11.5.5 使用备选的2D画布
11.6 CSS中的3D变换
11.7 小结
11.8 补充资源
第12章 推出你的程序
12.1 性能检查表
12.1.1 重点在哪
12.1.2 资源管理
12.1.3 动画优化
12.1.4 少做为妙
12.1.5 规避回流
12.2 部署
12.2.1 把静态资源部署在CDN上
12.2.2 把Node服务部署在EC2上
12.3 推出
12.4 补充资源
附录A 用LESS做CSS预处理
A.1 LESS简介
A.1.1 预处理的好处
A.1.2 安装LESS编译器
A.1.3 在服务器上编译
A.2 LESS的基础知识
A.2.1 变量
A.2.2 操作符
A.2.3 嵌套
A.3 函数和Mixin
A.3.1 函数
A.3.2 Mixin
A.4 文件结构
A.4.1 使用Import
A.4.2 文件结构示例
A.4.3 定制结构
A.5 小结
A.6 补充资源