登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書

『簡體書』前端跨界开发指南:JavaScript工具库原理解析与实战

書城自編碼: 3770713
分類:簡體書→大陸圖書→計算機/網絡程序設計
作者: 史文强 著
國際書號(ISBN): 9787111708049
出版社: 机械工业出版社
出版日期: 2022-07-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:HK$ 158.7

我要買

 

** 我創建的書架 **
未登入.


新書推薦:
画楼:《北洋画报》忆旧(年轮丛书)
《 画楼:《北洋画报》忆旧(年轮丛书) 》

售價:HK$ 337.5
大国脊梁:漫画版
《 大国脊梁:漫画版 》

售價:HK$ 80.2
跟着渤海小吏读历史:大唐气象(全三册)
《 跟着渤海小吏读历史:大唐气象(全三册) 》

售價:HK$ 189.0
心智的构建:大脑如何创造我们的精神世界
《 心智的构建:大脑如何创造我们的精神世界 》

售價:HK$ 81.4
美国小史(揭秘“美国何以成为美国”,理解美国的经典入门读物)
《 美国小史(揭秘“美国何以成为美国”,理解美国的经典入门读物) 》

售價:HK$ 81.4
中国古代北方民族史丛书——东胡史
《 中国古代北方民族史丛书——东胡史 》

售價:HK$ 87.8
巨人传(插图珍藏本)
《 巨人传(插图珍藏本) 》

售價:HK$ 705.6
地下(村上春树沙林毒气事件的长篇纪实)
《 地下(村上春树沙林毒气事件的长篇纪实) 》

售價:HK$ 76.7

 

建議一齊購買:

+

HK$ 87.3
《深度学习入门 基于Python的理论与实现》
+

HK$ 93.2
《C程序设计语言(原书第2版·新版)典藏版》
+

HK$ 320.0
《代码大全2 最新中文纪念版 赠全彩检查清单册 软件开发奠基之》
+

HK$ 116.2
《机器学习中的基本算法》
+

HK$ 142.6
《Go专家编程》
+

HK$ 106.7
《前端架构:从入门到微前端》
編輯推薦:
精选30 经典JavaScript工具库
从实战应用到底层原理进行深度剖析
提供大量完整可运行的示例代码
展现多元有趣的JavaScript应用场景
內容簡介:
本书是字节跳动资深前端工程师呕心沥血之作,也是目前市场上少有的从原理到实战深度剖析JavaScript生态中经典工具库的技术图书。
全书共有6篇,分别是基础篇、图形学篇、多媒体篇、跨端开发篇、游戏开发篇和跨界实践篇,书中不仅详细介绍了JavaScript语言在浏览器页面之外的不同应用场景,更从实用技巧、设计理念、原理源码等角度对精心挑选的30多个工具库进行了全方位的解析,希望读者在领略JavaScript代码之美的同时,也能拓宽技术视野。为了帮助读者更好地理解书中所讲述的内容,随书代码仓库里提供了大量可运行的源码,包括精简版的库重写和完整的代码示例。
關於作者:
史文强
前端资深技术专家,现任字节跳动幸福里团队前端工程师、西安交通大学航天学院特聘软件工程师,华为云云享专家,曾受Google GDG(Google开发者社区)邀请进行技术分享。拥有丰富的实战经验,擅长大型前端系统架构设计、性能优化及工程化体系建设。
活跃于各大前端技术社区,撰写了《Node.js原理&源码赏析》《带着Canvas去流浪》《响应式编程的思维艺术》等多个连载专题,累计发表前端技术原创博文百余篇,曾获2018年华为云社区杰出贡献奖(暨年度十大技术博主)。
目錄
【基础篇】
第1章 Mock.js:如何与后端潇洒分手2
1.1 为什么你总是下不了班3
1.2 联调加速4
1.3 使用Mock.js4
1.3.1 Mock.js的语法规范5
1.3.2 Mock.js实战6
1.3.3 自定义扩展8
1.4 Mock.js的基本原理9
1.4.1 从模板到数据9
1.4.2 为Ajax请求提供Mock数据11
1.5 从Mock服务到API管理平台14
第2章 Node.js:连接16
2.1 大话Node.js16
2.1.1 Node.js是什么16
2.1.2 Node.js能做什么17
2.1.3 招黑的JavaScript全栈工程师19
2.2 业界用Node.js做什么19
2.2.1 前端工程化20
2.2.2 中间层20
2.2.3 SSR引擎21
2.2.4 协作连接22
2.3 小结22
第3章 ESLint:你的代码里藏着你的优雅24
3.1 代码风格与破窗理论25
3.2 用editorconfig配置IDE28
3.2.1 基本语法及属性29
3.2.2 配置实例29
3.3 使用ESLint规范编程风格30
3.3.1 配置文件和规则集30
3.3.2 ESLint插件开发实战32
3.3.3 初学者的修行32
3.4 新秀工具Prettier33
3.5  静态类型检查工具的实现原理34
3.5.1 编译语言和解释语言34
3.5.2 编译流程34
3.5.3 编译简单的JavaScript程序35
第4章 模块演义与Require.js39
4.1  模块化的需求推演40
4.1.1 script标签40
4.1.2 代码隔离41
4.1.3 依赖管理42
4.2  模块规范大杂烩43
4.2.1 概述43
4.2.2 几个重要的差异44
4.3 模块化规范的兼容与工具演进48
4.4 Require.js的使用方法50
4.5 Require.js的核心原理52
第5章 Lodash.js是工具,更是秘籍55
5.1 Lodash.js是什么55
5.1.1 概述56
5.1.2 代码的较量56
5.2 重点API的剖析59
5.3 Lodash.js的源码结构62
5.3.1 基本结构62
5.3.2 Lodash.js源码的学习方法63
第6章 静态类型检查:Flow.js和TypeScript64
6.1 静态类型检查65
6.1.1 静态类型检查的优势65
6.1.2 静态类型检查的劣势66
6.2 Flow.js,易上手的静态类型检查工具67
6.2.1 Flow.js中的类型标注67
6.2.2 Flow.js的优势68
6.3 TypeScript,另一种选择69
第7章 用函数描述世界:Ramda.js71
7.1 本能的思考方式71
7.2 开始编码72
7.2.1 传统编程的实现72
7.2.2 函数式编程的推演73
7.2.3 函数式编程的意义76
7.2.4 函数式编程的基本理论77
7.3 基于Ramda.js体验函数式编程79
7.3.1 使用Ramda.js80
7.3.2 函数化的流程控制81
7.4 选择82
第8章 Rxjs:前端世界的“老人与海”83
8.1 信息管道84
8.1.1 不同的“单一职责”84
8.1.2 分布式状态的可能性86
8.1.3 你的程序在做什么87
8.2 数据的生产88
8.2.1 数据源的抽象88
8.2.2 设计模式的应用90
8.3 Rxjs:一切皆是流的世界91
8.3.1 Rxjs的核心概念92
8.3.2 Rxjs应用实例94
8.3.3 新版“老人与海”100
8.4 以自己喜欢的方式去编程101
第9章 不可变数据的制造艺术:Immer.js和Immutable.js102
9.1 克隆103
9.1.1 浅克隆103
9.1.2 深克隆103
9.2 元编程与Immer.js104
9.2.1 元编程105
9.2.2 Immer.js的核心原理106
9.3 Immutable.js与共享结构112
9.3.1 Immutable.js简介113
9.3.2 Immutable.js的核心原理113
9.3.3 Immutable.js中的读写操作117
9.4 小结119
第10章 Day.js:算个日期能有多难121
10.1 日期和时间121
10.2 使用Day.js125
10.3 国际化应用开发中的时间处理127

【图形学篇】
第11章 所见即所得的流程图:jsplumb.js和viz.js130
11.1 方案构思130
11.2 开始使用jsplumb.js132
11.3 图布局引擎viz.js135
11.4 所见即所得137
第12章 easel.js:一个标签一个世界139
12.1 能玩一生的标签139
12.1.1 基本语法介绍139
12.1.2 动画模式141
12.2 用easel.js操作Canvas142
12.3 工具库的封装技巧144
第13章 Echarts.js: 看见147
13.1 数据可视化生态148
13.2 开始使用Echarts.js148
13.2.1 Echarts的正确打开方式149
13.2.2 重点API151
13.2.3 配置项152
13.3 数据可视化三步曲153
13.3.1 数据准备153
13.3.2 图表选型153
13.3.3 细节打磨155
13.4 下一步的选择158
第14章 SVG变形记159
14.1 矢量图的世界159
14.1.1 SVG图形159
14.1.2 SVG的高级功能160
14.2 SVG变形165
14.2.1 SVG动画与CSS3动画165
14.2.2 经典SVG动画166
14.3 Snap.svg快速入门168
14.3.1 Snap方法集168
14.3.2 Snap.svg实战169
14.4 取舍171
第15章 Three.js:构建立体的用户界面172
15.1 三维世界的脚手架Three.js173
15.1.1 核心概念173
15.1.2 分解网格模型175
15.1.3 Three.js的基本使用方法177
15.2 实战:用Three.js制作漫威电影片头动画179
15.2.1 特效一:平面渐离180
15.2.2 特效二:字体浮雕模型181
15.2.3 特效三:视频纹理贴图183
15.2.4 特效四:镜头转换185
15.3 Three.js如何参与渲染186
15.3.1 相机模式和降维打击186
15.3.2 着色器190
15.3.3 WebGL的渲染流程192
15.4 用Cinema4D玩转跨界193

【多媒体篇】
第16章 Impress.js:网页里的PPT200
16.1 Impress.js的应用及原理200
16.1.1 快速上手Impress.js200
16.1.2 Impress.js的实现原理202
16.2 详解CSS变形和动画203
16.2.1 帧和关键帧204
16.2.2 CSS补间动画206
16.3 软技能:PPT设计208
16.3.1 内容为王208
16.3.2 设计入门课209
第17章 Velocity.js与高性能动画之谜211
17.1 CSS动画和JavaScript动画211
17.1.1 CSS动画212
17.1.2 JavaScript动画214
17.2 Velocity.js入门指南216
17.2.1 stagger交错动画217
17.2.2 在SPA框架中编写动画219
17.3 高性能动画的秘密223
17.3.1 像素渲染管线224
17.3.2 回流、重绘与合成226
17.3.3 使用合成层获得高性能227
17.3.4 隐式提升陷阱229
17.4 小结231
第18章 扭曲时间:tween.js和jQuery Easing Plugin232
18.1 缓动函数233
18.2 贝赛尔曲线234
18.2.1 绘制原理234
18.2.2 贝赛尔曲线的特性236
18.3 使用Tween.js和jQuery Easing Plugin237
18.4 选择恰当的缓动函数239
第19章 用Recorder.js实现语音信号处理241
19.1 百度语音识别实战241
19.1.1 工业系统测量的预备知识242
19.1.2 改造Recorder.js243
19.2 Web Audio API的工作模式246
19.2.1 中间件式的音频处理图246
19.2.2 Recorder.js核心原理:Script-ProcessorNode247
19.2.3 浅谈ArrayBuffer250
第20章 jsmpeg.js流媒体播放器253
20.1 视频编解码技术入门254
20.1.1 基础知识254
20.1.2 初识传输流255
20.2 现代浏览器中的播放技术258
20.2.1 Media Source Extension259
20.2.2 其他格式的媒体资源261
20.3 切片技术与TS文件解析262
20.3.1 文件切片技术 262
20.3.2 解析TS切片263
20.4 jsmpeg.js源码结构和低延迟播放实例266

【跨端开发篇】
第21章 “懒”是第一生产力:制作命令行工具272
21.1 Commander.js与Git风格的命令行工具273
21.2 Inquirer.js与交互式命令行工具275
21.3 从工具化到工程化277
第22章 用Shelljs实现自动化部署279
22.1 Linux入门小课279
22.2 实用的跨平台工具281
22.3 实战:使用Shelljs和node-ssh完成自动化部署283
22.4 下一站:性能监控288
第23章 跨端技术的秘密289
23.1 Cordova的前世今生290
23.2 React Native291
23.3 小程序292
23.4 原生App与网页的通信294
23.5 小结296
第24章 protobuf与二进制消息298
24.1 前端常见的消息格式298
24.2 二进制消息格式:protobuf302
24.3 使用protobuf.js307
24.4 初探gRPC310
第25章 控制反转与Inversify.js314
25.1 依赖为什么需要注入315
25.2 IOC容器的实现317
25.3 AOP和装饰器322
25.4 用Inversify.js实现依赖注入325
25.5 小结330
游戏开发篇
第26章 基于CreateJS解构游戏开发332
26.1 工具包CreateJS333
26.2 实战开发:《飞龙大战》334
26.3 性能提升技巧341
第27章 经典物理与matter.js345
27.1 经典力学回顾346
27.2 仿真的实现原理347
27.2.1 基本动力学模拟347
27.2.2 碰撞模拟349
27.3 物理引擎matter.js350
27.3.1 《愤怒的小鸟》的物理特性分析350
27.3.2 使用matter.js构建物理模型351
27.3.3 物理引擎如何牵手游戏引擎354
第28章 Phaser:从工具到生态357
28.1 快速上手Phaser游戏开发357
28.2 浅谈框架的选择364

【跨界实践篇】
第29章 brain.js:写给前端的神经网络入门课366
29.1 从关键词开始366
29.2 认识神经网络369
29.2.1 基本结构369
29.2.2 神经元的数学模型372
29.2.3 激活函数与非线性决策边界374
29.2.4 神经网络中的信息传递377
29.3 使用brain.js构建神经网络379
29.4 小结382
第30章 TensorFlow.js:开箱即用的深度学习工具383
30.1 上手TensorFlow.js383
30.2 使用TensorFlow.js构建卷积神经网络387
30.2.1 卷积神经网络387
30.2.2 搭建LeNet-5模型390
30.3 基于迁移学习的语音指令识别392
第31章 用JavaScript玩转物联网394
31.1 入门级物联网“玩具”Arduino394
31.1.1 Arduino UNO R3板卡结构395
31.1.2 模拟量和数字量396
31.1.3 Arduino原生编程入门397
31.1.4 Arduino实验示例一:按钮控制三色LED灯398
31.1.5 Arduino实验示例二:使用DHT11模块采集温湿度信息402
31.2 PC与MCU之间的串口通信403
31.3 使用Johnny-Five进行嵌入式开发407
31.3.1 初识Johnny-Five407
31.3.2 Firmata.js源码导读408
31.3.3 舵机风扇实验410
31.4 小结412
內容試閱
【为什么要写这本书】
笔者学习JavaScript语言并在前端开发领域工作若干年以后,发现了一些有趣的现象。例如,很多不了解前端的开发者都认为前端很简单,因为主流的框架都提供了完备的脚手架工具,开发者很容易初始化一个前端项目,只要浏览一下官方文档,复制、粘贴一些示例代码并按照自己的业务逻辑进行相应的定制和修改就可以了,即使不是专业的前端工程师,也可以很快实现一个有模有样的网站或者应用程序,在他们的认知里,这就是前端的全部。对此,经验尚浅的前端工程师几乎无力反驳,因为他们日常工作里所做的事情大抵如此,看起来非常容易,这使得许多前端工程师在团队里没有话语权,成为真正意义上的“码农”,升职加薪的机会就更不用想了。
很多新人在社区里咨询如何实现个人技术的积累或突破瓶颈,有经验的工程师都会推荐新人在遇到瓶颈时阅读JavaScript领域的经典书籍来积累基础知识。部分新人对此并不理解,或者说只是人云亦云地觉得基础很重要,毕竟每个行业做到顶尖以后,比拼的都是基本功,巩固基础知识总是不会错的。于是,他们花了不少时间在JavaScript的基础知识上,然而这么做除了对这门语言的认知在不断增加以外,个人能力却似乎并没有什么变化。客观来讲,无论你是否清晰地理解自己所写的程序,对用户来说你所提供的价值几乎没有什么变化,即便你使用React或者Vue等流行的新技术重构了团队的“祖传代码”,提高了可维护性,也并不会成为用户买单的理由。2014年笔者刚接触编程的时候,在只了解基本JavaScript语法的情况下,只用了2个多月就自学并利用开发框架和第三方服务独立开发出了一款带有即时通信功能的App并成功交付。那时候Angularjs1在国内才刚刚起步,连中文资料都极少。这就是框架带来的可能性,即使编程经验不足,依旧能编写出界面优雅的可交付程序。从这个角度来看,花很多时间积累基础知识似乎只是一种个人的追求罢了。
我们常听到“技术深度”和“技术广度”这两个词语,基础知识的积累就属于加强“技术深度”的范畴,它提升的是开发者解决问题的能力,这种技术能力在面试、技术方案评审或定位并解决问题时才会表现出价值。如果你希望自己在常规的业务开发之外承担更多复杂度较高的工作,就需要不断加强“技术深度”。前端领域提升“技术深度”的路线是相对明朗的,就是不断阅读优秀的源码并深入原理,从JavaScript语言的基础知识到翻过“三座大山”—设计模式、数据结构、基础算法,再到开发框架的设计思想、核心原理和最佳实践,最后再在工程化或者更加综合的场景中应用自己所学。这是一个漫长且煎熬的过程,是每一个希望在行业里一直走下去的高级前端工程师必须经历的修行。行内常有人说“前端没有中级工程师,如果你觉得自己算不上高级工程师,那只能算是个新人”。前端领域的知识很庞杂,在积累“技术深度”的过程中,你能创造的价值或许跟之前没什么区别,但请一定保持耐心。
而提到“技术广度”,很多开发者都非常热衷于“全栈工程师”的概念,觉得那是比单纯的前端更高级的职业形态。许多前端工程师在拥有1~2年的开发经验后,将技术提升的路线转向了后端、数据库和运维等领域,梦想着有一天能够独立编写一个项目的各个组成部分,然后转岗成为“全栈工程师”或者“架构师”,走向人生巅峰。然而现实是残酷的,你会发现大多数奔着提升技术广度去的开发者,最终沦为了“全栈码农”,因为他们不得不在各个开发角色之间来回切换,但是大多数人只能做一些“搬砖”性质的低技术含量的工作。诚然,我们应该学习和了解其他开发角色所做的一些工作,拓宽知识储备,但这并不是为了抢谁的饭碗,而是为了借鉴、交流不同的思想和经验,也是为了更好地协作。
对于前端工程师来说,技术广度的拓宽其实另有途径,也就是笔者将在本书中展示的路线,即通过学习和应用优秀的第三方库来了解JavaScript除了用来写页面外还能做什么。很多时候,我们缺少的并不是与某个特定语言相关的知识,而是不了解编程语言之外的思想和领域知识。要知道并不是只有先学会Java或者Go才可能成为后端工程师,也不是不懂Python就无法涉足人工智能领域。通过本书你会发现世界各地的前端工程师正在用JavaScript做着各种有趣且生动的尝试,即便只了解JavaScript,你一样可以了解任何你想要了解的领域,做非常多有意思的事情。在一步步了解JavaScript带来的无限可能性以及它为你的职业规划和人生选择所带来的想象空间后,你一定会喜欢上“前端工程师”这个身份,这也是笔者编写本书的原因所在。

【读者对象】
本书适合拥有0~3年开发经验的JavaScript开发者、前端工程师、Node.js工程师以及所有对前端感到好奇或者感兴趣的读者阅读。

【如何阅读本书】
本书分为六篇,笔者挑选了图形学、多媒体、跨端开发、游戏开发、人工智能、物联网等领域的第三方JavaScript库,针对基本原理、领域相关知识、最佳实践等进行了详细的讲解,具体内容包含:
基础篇(第1~10章)挑选了前端工程师日常开发中经常用到的工具,主要涉及编写模拟数据、服务端开发、静态类型检查、模块管理工具、实用工具库、函数式编程等,旨在帮助初级前端工程师了解日常使用工具的原理和最佳实践,提升开发能力。
图形学篇(第11~15章)首先介绍前端工程师如何实现流程图的绘制,然后给出Canvas技术、数据可视化、SVG技术及3D渲染相关的知识及实战指南,帮助读者掌握2D/3D渲染相关技巧。
多媒体篇(第16~20章)主要介绍如何在网页中绘制PPT,以及高性能动画、音频处理和视频处理相关的知识与应用。在短视频技术流行的当下,一线互联网公司中有很多前端工程师专门从事音视频相关领域的研发工作,本篇能够帮助读者基本了解这个细分领域。
跨端开发篇(第21~25章)主要介绍如何使用JavaScript编写命令行工具、Shell自动化脚本、跨端Hybrid应用和桌面应用,以及如何发送二进制消息或通过控制反转来实现代码解耦,旨在帮助读者提升工程化能力和基本的跨端跨界开发能力。
游戏开发篇(第26~28章)主要介绍游戏开发相关的基本知识、开发技巧以及物理引擎相关的知识和实践,每一章都提供了完整的可运行代码和美术素材。
跨界实践篇(第29~31章)主要介绍如何使用JavaScript来实现人工神经网络,并利用工具库实现了一个可以语音控制的“吃豆人”游戏,最后讲解了如何使用JavaScript来进行物联网的开发。

由于篇幅的原因,关于成长和职场反思的文章以及部分代码未能放在书中,笔者将其发表在个人的掘金博客(掘金账号:大史不说话)和本书代码仓库中,具体内容包括:
《写作那些事儿》讲述笔者写技术博客的收获、心得并针对读者的写作给出了建议。
《学习那些事儿》介绍笔者对于“图像记忆”“快速阅读”和“思维导图”等高效学习法的理解与使用建议。
《职场那些事儿》讲述笔者如何从个人开发者视角转变为团队管理者视角,并进行了反思和总结。
《面试那些事儿》为准备面试大厂的候选人提供了结构化备战的建议。

书中演示的所有源代码均可以在https://github.com/dashnowords/imfe找到。

勘误和支持
由于笔者水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果大家在阅读过程中遇到问题,可以在本书的Github仓库里提issue,笔者将尽量提供满意的解答。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱dashnowords@qq.com。期待听到你们的真挚反馈。

致谢
感谢机械工业出版社华章分社编辑杨绣国的耐心指导,她的鼓励和帮助引导我顺利完成全部书稿,她认真仔细的工作风格给我留下了非常深刻的印象。
感谢京程一灯的创始人志佳老师在我接触前端领域之初就为我极大地拓宽了视野,让我喜欢上前端这个领域并不断深入探索,不断进步。
感谢前端早早聊的创始人Scott老师在我职业生涯面临关键选择时提供宝贵且专业的建议和方向指引。
感谢所有在本书创作过程中给予我中肯建议的朋友。
感谢我的家人,我的爸爸、妈妈和妻子,他们在我写作的过程中给予了足够的鼓励和支持。
最后要感谢自己,即使花费了比预期长2倍的时间,也没有轻言放弃,最终完成了本书的创作。
谨以此书,献给所有热爱前端的朋友。

史文强(大史不说话)
2022年6月于北京

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 大陸用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.