猜你喜欢
Scratch底层架构源码分析

Scratch底层架构源码分析

书籍作者:孟灿 ISBN:9787111667704
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:3991
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书从谷歌Blockly技术开始讲起,逐步深入到Scratch技术生态,对Scratch中的核心技术进行了深入分析和源码讲解,让读者不但可以系统地学习Scratch中的核心概念,而且还能深入理解其代码实现,为二次开发打下基础。
本书共7章,对核心技术进行了精讲,并对相关技术进行了介绍。本书涵盖的内容有Blockly简介、Scratch-blocks源码分析、Scratch-vm源码分析、Scratch-render源码分析、Scratch-storage源码分析、Scratch-gui源码分析,以及Scratch-paint、Scratch-audio和Scratch-parser的简单介绍及其相互联系和连接。
本书涉及软件开发的底层内容,深入Scratch的架构设计及源码实现,非常适合Scratch技术开发人员阅读,也适合作为相关研究机构的参考资料使用。

编辑推荐
本书特色
内容丰富:围绕核心模块,全面、系统地介绍Scratch技术生态的相关知识。
重点突出:围绕代码块、虚拟机、渲染和存储等核心技术多角度展开讲解。
深入浅出:以简单易懂的语言讲解深层次的架构知识,降低学习难度。
实用性强:针对Scratch开发过程中的常见疑点和难点进行系统性讲解。
前言
截至目前,全球已经有超过150个国家和地区的人在使用Scratch。Scratch被翻译成了40多种语言。作为一种可拖曳、图形化的编程语言,它已经深入人心。
  Scratch不仅是一个学习工具,从更加广泛的意义上来说也是教育的一部分。国内外目前正在掀起一波Scratch教学和研究的热潮。就国内而言,基于Scratch的少儿编程教育发展得已经非常成熟,许多公司和科研机构纷纷进入该领域,并推出了自己的产品和研究成果,此外,基于Scratch的论文、图书、论坛、会议及竞赛也非常多。
  在这样的大环境下,Scratch技术开发人员越来越受到相关教学和培训机构的青睐,就业市场方面对Scratch技术人才的需求量也在逐年增加。可以说,Scratch技术人员必将是未来的一大人才缺口,因此掌握Scratch技术对于社会和个人而言都具有非常重要的意义。
  笔者是在2018年开始接触Scratch技术的。刚开始笔者还只是停留在Scratch语言的使用层面,并没有深入了解其内部的实现原理。2019年,笔者真正开始参与Scratch技术开发工作,当时有幸加入了一家名为“核桃编程”的少儿编程教育公司,基于Scratch开源项目做二次开发,推出了相关的编程教育产品。
  在从事Scratch开发工作期间,笔者被其强大的功能深深地吸引,决心要深入理解它的实现原理。但是在实践过程中,笔者发现国内已经出版的图书都是介绍Scratch如何使用的,还没有一本是介绍Scratch语言的底层架构技术与实现的,而且互联网上几乎没有相关资料,想要深入学习,只有阅读Scratch的底层实现源码这一个途径。另外,Scratch的底层源码注释也很不完善,阅读门槛很高。于是笔者就有了编写一本介绍Scratch底层源码图书的想法,希望给后来者提供一点帮助,让他们尽量少走一些弯路。
本书特色
  本书从Scratch底层源码讲起,首先对源码进行结构和流程上的梳理,然后深入每个模块,详细地讲解核心概念,并对其实现原理做深入分析,读者只要具备前端开发的相关知识就可以很轻松地理解和掌握本书内容。本书具有以下三大特色:
* 挑选Scratch生态最核心的内容进行深入剖析,同时尽可能覆盖主要知识点,避免知识盲区。
* 讲解深入浅出,对一个大的知识模块先从宏观上进行概括性描述,再逐步深入分析,减少跳跃性,以方便读者学习。
* 具有非常强的实用性,能让读者深入理解Scratch生态的底层技术,并针对不同的业务场景对Scratch进行二次开发。
本书内容
  本书内容涵盖Scratch技术生态中的核心技术点,如Scratch代码块、Scratch虚拟机、Scratch渲染引擎、Scratch存储模块和Scratch用户界面等。各章内容简单介绍如下:
  第1章对Scratch进行概述,并简要介绍项目中用到的两个重要工具Webpack和NPM。
  第2章详细介绍积木块Scratch-blocks,并对其源码进行详细分析。
  第3章主要介绍虚拟机Scratch-vm的相关技术。
  第4章深入剖析渲染引擎Scratch-render。
  第5章详细介绍Scratch的存储技术Scratch-storage。
  第6章详细介绍Scratch的图形化界面Scratch-gui。
  第7章主要介绍Scratch生态中一些非核心但非常重要的技术,包括绘图编辑器Scratch- paint、音频引擎Scratch-audio及解析验证工具Scratch-parser。
本书读者对象
* Scratch技术开发人员;
* Scratch技术研究人员;
* 游戏引擎开发人员;
* 想扩充自己技术栈的前端开发人员;
* 其他对少儿编程有兴趣的人员。
源码下载地址
  本书涉及的Scratch源码下载地址如下:
* Blockly:https://github.com/google/blockly;
* Scratch-blocks:https://github.com/LLK/scratch-blocks;
* Scratch-vm:https://github.com/LLK/scratch-vm;
* Scratch-render:https://github.com/LLK/scratch-render;
* Scratch-storage:https://github.com/LLK/scratch-storage;
* Scratch-gui:https://github.com/LLK/scratch-gui;
* Scratch-paint:https://github.com/LLK/scratch-paint;
* Scratch-audio:https://github.com/LLK/scratch-audio;
* Scratch-parser:https://github.com/LLK/scratch-parser。
售后支持
  限于作者水平,加之写作时间有限,书中可能存在一些疏漏和不当之处,敬请各位读者指正。读者阅读本书时若有疑问,可以通过以下方式反馈。
  E-mail:[email protected]
  微信:mengcan555
  知乎:www.zhihu.com/people/mengcan555
  
  编者

本书知识结构导图
目录

前言
本书知识结构导图
第1章 开始Scratch之旅1
1.1 Scratch概述1
1.1.1 Scratch发展历史1
1.1.2 Scratch技术生态2
1.1.3 Scratch使用现状2
1.1.4 Scratch源码分析的意义2
1.2 Webpack打包工具简介3
1.2.1 Webpack的核心概念3
1.3 NPM包管理工具简介4
1.3.1 NPM的组成4
1.3.2 NPM的使用场景4
1.4 小结5
第2章 Scratch-blocks:积木块源码分析6
2.1 Scratch-blocks概述6
2.1.1 Blockly技术简介6
2.1.2 Scratch-blocks与Blockly之间的关系8
2.1.3 Scratch-blocks的作用9
2.1.4 Scratch-blocks的分类9
2.2 Scratch-blocks代码结构与流程9
2.2.1 Scratch-blocks代码结构10
2.2.2 Scratch-blocks代码流程12
2.3 Scratch-blocks核心代码分析14
2.3.1 blockly_uncompressed_vertical.js:垂直方向的非压缩打包文件14
2.3.2 options.js:配置工作区17
2.3.3 inject.js:将Scratch-blocks注入页面19
2.3.4 workspace模块:工作区28
2.3.5 toolbox.js:工具箱34
2.3.6 Flyout模块:工具箱中的托盘38
2.3.7 xml.js:XML读写器46
2.3.8 event模块:各模块之间的通信54
2.3.9 Field模块:代码块上的域63
2.3.10 blockly.js:Blockly的核心JS库75
2.3.11 connection模块:代码块之间的连接81
2.3.12 input.js:代码块上的输入94
2.3.13 mutator.js:代码块的变形器97
2.3.14 extensions.js:代码块的扩展102
2.3.15 block.js:定义一个代码块105
2.4 小结120
第3章 Scratch-vm:虚拟机源码分析121
3.1 Scratch-vm概述121
3.1.1 Scratch-vm的职责121
3.2 Scratch-vm代码结构与流程122
3.2.1 Scratch-vm代码结构122
3.2.2 Scratch-vm代码流程123
3.3 Scratch-vm核心代码分析129
3.3.1 virtual-machine.js:最外层的API定义129
3.3.2 blocks模块:代码块原语的实现138
3.3.3 dispatch模块:消息派发系统151
3.3.4 engine模块:虚拟机的引擎155
3.3.5 serialization模块:序列化与反序列化188
3.3.6 sprite模块:精灵的渲染196
3.4 小结199
第4章 Scratch-render:渲染引擎源码分析200
4.1 Scratch-render渲染技术概述200
4.1.1 WebGL概述200
4.1.2 canvas概述201
4.1.3 twgl.js概述201
4.1.4 Scratch-render概述201
4.2 Scratch-render代码结构与流程202
4.2.1 Scratch-render代码结构202
4.2.2 Scratch-render代码流程203
4.3 Scratch-render核心代码分析211
4.3.1 twgl.js关键函数介绍212
4.3.2 RenderWebGL.js:渲染引擎最外层API的定义219
4.4 小结227
第5章 Scratch-storage:资源存储源码分析228
5.1 Scratch-storage概述228
5.1.1 什么是Scratch-storage228
5.1.2 Scratch-storage的主要内容229
5.2 Scratch-storage代码结构与流程229
5.2.1 Scratch-storage代码结构229
5.2.2 Scratch-storage代码流程230
5.3 Scratch-storage核心代码分析239
5.3.1 ProxyTool模块:网络代理工具239
5.3.2 FetchTool模块:基于Fetch的网络工具240
5.3.3 NetsTool模块:基于Nets的网络工具241
5.3.4 FetchWorkerTool模块:基于任务的网络工具241
5.4 小结245
第6章 Scratch-gui:图形化界面源码分析246
6.1 Scratch-gui概述246
6.1.1 Scratch-gui所处的位置246
6.1.2 Scratch-gui的主要内容247
6.2 React技术栈概述247
6.2.1 什么是React247
6.2.2 React关键技术248
6.2.3 什么是Redux249
6.2.4 react-redux介绍249
6.3 Scratch-gui代码结构与流程250
6.3.1 Scratch-gui代码结构250
6.3.2 Scratch-gui代码流程251
6.4 Scratch-gui核心代码分析261
6.5 小结275
第7章 Scratch生态其他项目276
7.1 Scratch-paint:绘图编辑器276
7.1.1 Scratch-paint目录结构276
7.1.2 Scratch-paint使用方法277
7.2 Scratch-audio:音频引擎279
7.2.1 Scratch-audio目录结构280
7.2.2 Scratch-audio在Scratch-gui中的使用280
7.3 Scratch-parser:解析验证工具283
7.3.1 Scratch-parser目录结构283
7.3.2 Scratch-parser在Scratch-vm中的使用283
7.4 小结284