遵循实践,从头构建实际应用。
深入解析不可多得的JavaScript高级主题。
为你构建21世纪的杀手级应用贡献一臂之力
《图灵程序设计丛书:JavaScript编程实战》深入探讨了如何基于JavaScript技术从头开始创建真实的应用,共分为四个部分。第一部分介绍了实践以及库、框架与插件,为构建应用奠定坚实的基础。第二部分讨论了前端的构建,包括Backbone.js、JavaScript模板,以及表单处理和校验的相关内容。第三部分涉及如何用Node.js编写服务器端JavaScript。最后一部分挑战程序的功能极限,介绍了如何构建实时应用程序、调整移动领域的Web程序、JavaScript图形处理技术等内容。
《图灵程序设计丛书:JavaScript编程实战》适合所有熟悉JavaScript并希望提升相关技术水平的开发人员和设计人员学习参考。
Jon Raasch Web,开发专家。用户体验重度关注者,坚信只要满足了用户的需求,商业目标就能随之达成。除本书外,还著有Smashing WebKit和Smashing Mobile Web Development。现居住在美国俄勒冈州波特兰市。Twitter账号:jonraasch。个人网站:jonraasch.com。
吴海星,2001年毕业于南京理工大学。编程数载代码不过十万,翻译几年码字不过百万。项目不过十几个,带队不到五十人。年过而立,惴惴不安,愈加发奋,孜孜求学,愿凭绵薄之力,贡献于IT社区。除此书外,还译有《量化:大数据时代的企业管理》、《Java程序员修炼之道》。
第一部分 坚实的基础
第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 补充资源
1.3.3 版本控制
如果你开发时不用版本控制工具,那我就不用跟你强调它的重要性了。不过我在每个项目中都会用到,即便是只有我一个人做的微型项目。版本控制能追踪代码库随时问发生的变化。如果你能定期提交代码,就能回退到原来的任何一点上,甚至可以把某次提交中的修改合并到其他提交点上。如果要跟其他开发人员协作,版本控制更是必不可少。不要试图自己搞清楚谁改了哪个文件,让版本控制工具替你跟踪吧。 如果你和其他开发人员修改了同一个文件,版本控制工具可以将你们的改动合并到一起。但偶尔也会发生冲突,比如你们改了同一行代码。出现这种情况时,版本控制工具可以让你们手动合并。不过即便你是独自开发,我也会强烈建议你使用版本控制工具。使用版本控制工具之前,我总是会把当时不再使用的代码注释掉,怕我以后万一还要用。现在如果再有需要,我只要回退那些修改就行了,这样代码库比以前整洁多了。并且如果客户对功能的需求发生了变化,我只要用一行命令就能回退代码库。 在各种各样的版本控制系统中,我个人最喜欢Git。Git应用很广,在选择协作软件时这一点很重要。更重要的是,Git是分布式版本控制系统,不是集中式的。这种版本控制有几个优势。首先,这样每个用户都有自己的存储库,以后可以合并到主库(或其他库)中,因此提供了额外的版本层次。此外,它用起来更容易,因为你无需服务器就可以设置本地的分布式版本控制(可以以后再连到服务器上)。关于如何使用Git,有一本免费的电子书可以参阅——
1.3.4 CSS预处理
我不准备在本书中谈论太多CSS,但程序里肯定要用到样式,所以你真的应该使用CSS预处理器。借助SASS和LESS之类的CSS预处理器,你可以用更精巧的方式编写CSS。它们提供了大量的脚本操作,最终都能编译成静态CSS文件。也就是说,你既能借用动态脚本语言的力量,又能得到任何浏览器都可以识别的标准CSS文件。
……
我一直以来都觉得,要真正掌握一门编程语言,光看书是不够的,关键在于实践。而《JavaScript编程实战》这本书,恰恰就能满足我这种“动手派”的学习需求。它不是那种只会告诉你“怎么做”,而是会告诉你“为什么这样做”。书中的很多章节,都围绕着一些实际的开发场景展开,比如如何构建一个响应式的导航栏,如何实现一个简单的图片轮播效果,甚至是更复杂的,如何与后端API进行交互,处理数据,等等。我个人比较喜欢它在讲解复杂概念时,会提供详细的代码示例,并且对每一行代码都做了清晰的注释。这对于我这种喜欢刨根 জিজ্ঞাসা(探究)的人来说,简直是福音。我常常会在书上敲完代码,然后自己尝试去修改一些参数,看看会发生什么变化,这种探索的过程,让我对JavaScript的理解更加深入。而且,它还鼓励读者去思考,在实际项目中,有哪些可以改进的地方,或者说,有哪些替代的解决方案。
评分说实话,我一开始对这本书的期待并不算太高,毕竟市面上的JavaScript书籍实在太多了,很多都是泛泛而谈,或者只是一些零散知识点的堆砌。但《JavaScript编程实战》给我带来的惊喜,远超我的预期。它不像一些教材那样,上来就给你灌输一大堆概念,而是非常注重“学以致用”。我特别喜欢它在讲解一些高级特性时,会先给出一些实际的应用场景,然后逐步深入地解释背后的原理。例如,在讲到异步编程时,它没有直接去解释Promise的细节,而是先抛出了一个常见的网络请求场景,比如需要同时发起多个请求,并且在所有请求完成后再进行下一步操作。然后,它会一步步地引导读者思考,在没有Promise之前,我们可能需要依赖回调函数,但回调函数容易陷入“回调地狱”,这时,Promise就应运而生,它提供了一种更优雅的方式来处理异步操作。这种循序渐进、由浅入深的学习方式,让我感觉非常受用,也更容易将学到的知识融会贯通。
评分刚开始接触《JavaScript编程实战》这本书时,我抱着一种“试试看”的心态,毕竟市面上的JavaScript书籍五花八门,质量参差不齐。然而,这本书很快就让我刮目相看。它最吸引我的地方在于,它并没有将JavaScript的学习过程变成一场枯燥的理论考试,而是将它融入到了一系列引人入胜的“编程实战”中。我特别喜欢它在讲解面向对象编程时,不仅仅是停留在类和对象的概念上,而是通过构建一个简单的游戏引擎来演示如何运用这些概念。这种“玩中学”的方式,让我觉得学习过程充满了乐趣。而且,书中还提供了一些非常实用的技巧,比如如何进行代码调试,如何优化代码性能等等,这些都是在实际开发中非常重要的技能。我感觉,这本书就像一个经验丰富的导师,循序渐进地引导我,让我能够更自信地应对各种JavaScript编程挑战。
评分我是在一个偶然的机会下接触到《JavaScript编程实战》这本书的,当时我正在寻找一本能够帮助我提升JavaScript编程技能的书籍。这本书给我最深的印象就是它的“接地气”。它没有使用过于深奥的语言,而是用一种通俗易懂的方式,将复杂的JavaScript概念一一呈现。我尤其喜欢它在讲解异步编程时,并没有直接上来就介绍Promise、async/await,而是先通过一些实际的例子,比如模拟网络请求,让读者体会到异步操作带来的挑战,然后再逐步引出解决方案。这种方式让我感觉,书中的知识点都是为了解决实际问题而存在的,而不是为了理论而理论。而且,这本书的排版也很舒服,代码块清晰,注释也很到位,阅读起来不会有太大压力。我感觉,这本书非常适合那些有一定JavaScript基础,想要进一步提升自己,或者想系统学习JavaScript高级特性的读者。
评分《JavaScript编程实战》这本书,我拿到手的时候,就被它厚实的体积和沉甸甸的分量惊艳到了。翻开目录,扑面而来的都是那些我一直以来或多或少有所耳闻,但总觉得系统学习起来会很枯燥的知识点。比如,什么作用域链、闭包、原型链这些概念,听起来就头大。我一直都是那种“够用就好”的学习模式,对于那些深层次的原理,总觉得离我的实际开发需求有点远,但内心里又隐隐知道,如果想真正地提升自己,绕不开这些。这本书给我的感觉是,它并没有直接把你丢进那些晦涩难懂的理论海洋,而是通过一系列精心设计的“实战”案例,让你在解决问题的过程中,不知不觉地去理解那些核心概念。我记得其中有一个章节,讲的是如何优化前端性能,通过一些实际的代码片段,展示了如何利用懒加载、代码分割等技术来提升页面的加载速度。当时我就是跟着书上的例子一步步操作的,虽然过程中遇到了一些小问题,但最终看到效果的时候,那种成就感是无法言喻的。这本书的优点在于,它能够把那些看似抽象的原理,转化为看得见摸得着的实践,让你在动手实践中,建立起对JavaScript更深层次的理解。
评分书面和书页没有什么破损,差不差页的,看了才知道。
评分很好,下次还在京东买了。
评分没有包装,书表面很脏,边角有变形,有划痕,京东,你能告诉我,这是一手的新书吗? 要不是看中里面的内容,就选择退货了了
评分逐字逐句地看完这本书以后,我的心久久不能平静,震撼啊,震撼!好书啊,好书!为什么会有如此好的书! 在看完这本书以后,我没有立即来评论,因为生怕我庸俗不堪的回复会玷污了这本世间少有的书。 能够在如此精彩的书后面留下自己的名字是多么骄傲的一件事啊 !请原谅我的自私!我知道无论用多么华丽的辞藻来形容这本书的精彩程度都是不够的,都是虚伪的,所以我只想说一句:这本书太好看了!我愿意一辈子不断地看下去!此书构思新颖,题材独具匠心,段落清晰,情节诡异,跌宕起伏,主线分明,引人入胜,平淡中显示出不凡的文学功底,可谓是字字珠玑,句句经典,是我辈应当学习之典范。就商业猎奇的角度而言,这篇书不算太成功,但它的实际意义却远远大于成功本身。正所谓:“一马奔腾,射雕引弓,天地都在我心中!”真不愧为游记界新一代的开山老怪!本来我已经对这个类别失望了,觉得这个类别没有前途了,心里充满了悲哀。但是看了作者这本书,我告诉自己这本书是一定要评论的!这是百年难得一见的好书啊!苍天有眼啊,让我在有生之年得以观得如此精彩绝伦的书!作者要继续努力啊!此书,就好比黑暗中刺裂夜空的闪电,又好比撕开乌云的阳光,一瞬间就让我如饮甘露,让我明白了永恒的真理在这个世界上是真实存在着的。 只有这样具备广阔胸怀和完整知识体系的人,才能作为这真理的唯一引言者。看了此书,让我陷入了严肃的思考中,我认为,如果不把此推荐给广大读者,就是对真理的一种背叛,就是对谬论的极大妥协。因此,我决定义无返顾的强推!真知灼见啊!此书实在是一语中的。子曰:三人行而必有我师焉。斯言善哉。不知不觉读书这么多年,好的书坏的书都看过了,看多了。渐渐的也觉得没什么意思了。 渐渐觉得自己已经达到奋斗的顶峰了。可是,第一眼看到这本书的时候,我的眼前竟然感觉一亮!仿佛看到了倾城倾国的美人,正轻摇柳步款款而行。正好似这本书,语态端正,论证从容。好书啊!只有那种真理在握,洞视这个世界真实本质的人,才能显示出这样惊人的笔力。在日益苍白肤浅的新书堆里,我从此书中不但看到了真理,更加看到了新书的希望。为表达我对的敬意,也是为了向作者学习。我决心要把这本书评论、强推!这本书实在是写得太好了。文笔流畅,修辞得体,深得魏晋诸朝遗风,更将唐风宋骨发扬得入木三分,能在有生之年看见的这本书。实在是我三生之幸啊。看完的这本书之后,我竟感发出一种无以名之的悲痛感,这么好的书,我内心的那种激动才逐渐平复下来。可是我立刻想到,这么好的书,倘若别人看不到,那么不是浪费作者的心血吗?经过痛苦的思想斗争,我终于下定决心,我要把这个书强推,使劲推!推到所有人都看到为止!看完,我的心情竟是久久不能平复,正如老子所云:大音希声,大象无形。我现在终于明白我缺乏的是什么了,正是那种对真理的执着追求和那种对理想的艰苦实践所产生的厚重感。面对此书,我震惊得几乎不能动弹了,那种裂纸欲出的大手笔,竟使我忍不住一次次的翻开这本书,久久不忍合上。
评分这两种方法在N=100万,K=50万时速度都尤其“漫长“,往往让人抓耳挠腮,作者讲叙到还有一种算法1秒钟就可以得出答案。该算法原理和快速排序一致,但只有一个方向的递归。平均复杂度O(N)。
评分嗯,放着,这个是特价买的,it书都不便宜
评分介绍的东西是相当好的,即便我没完全看明白,但我知道它对js程序员的意义,乃至js这门语言的意义. 但是大牛确实很牛,但是不愿意详细描述,所以呢,不怎么建议很新的新手看这本书,在有了一点程度再来看这本书效果将相当好. 个人愚见
评分嗨哦地来得及
评分此书翻译的很好,很值得入手。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有