Scratch底層架構源碼分析 ( 簡體 字) |
作者:孟燦 編著 | 類別:1. -> 程式設計 -> Scratch |
譯者: |
出版社:機械工業出版社 | 3dWoo書號: 53712 詢問書籍請說出此書號!【缺書】 NT售價: 495 元 |
出版日:11/1/2020 |
頁數:285 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787111667704 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: 截至目前,全球已經有超過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技術研究人員;
* 游戲引擎開發人員;
* 想擴充自己技術棧的前端開發人員;
* 其他對少兒編程有興趣的人員。 |
內容簡介:本書從谷歌Blockly技術開始講起,逐步深入到Scratch的技術生態,對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開發過程中的常見疑點和難點進行系統性講解。 |
目錄:前言 本書知識結構導圖 第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-storage 228 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 什么是React 247 6.2.2 React關鍵技術 248 6.2.3 什么是Redux 249 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 |
序: |