微信小游戏开发:前端篇
上QQ阅读APP看书,第一时间看更新

前言

笔者在极客时间(在线教育平台)上线4周年之际,在该平台上分享过这样一段话:

“我是一个砌石阶的人。2021年国庆节我在赶书稿写作进度时,看着最终敲定的复杂的代码,突然确定——我所撰写的这套技术图书,对读者来说是有价值的。其价值就在于整套书都基于一个PBL(Project Based Learning,项目引导式学习)实战案例,从最开始的3行代码,到最终的几万行代码。试想一下:如果要求学习者直接以结果代码为模板进行练习,那肯定不太友好;而学习者如果跟着节奏从基础代码一步步修改得到结果代码,那应该会很有成就感吧。

“学编程就像登山,只要一步一个脚印坚持往上爬,就可以到达山顶。泰山虽高,只要一步一级台阶,终可看到山顶无限风光。但如果有人不走台阶,在荒山野岭中攀爬,那他将很难爬上去。”

这本书及它的姊妹篇《微信小游戏开发:后端篇》就在这种指导思想下完成了。

多数程序员坦言,他们的编程技能都是走向工作岗位以后练就的。在IT公司中,新人成长最快的方式就是有人带,师傅带着徒弟做一个项目,等项目完成时,徒弟的编程技能也就掌握得差不多了。笔者希望以类似的形式带领读者来学习,通过一个PBL实战项目,系统地学习微信小游戏开发所需的所有前端和后端知识点与技能。

为什么要这样学习呢?

初学者进入一个行业,首先要学习基础知识。有了知识,才能通过实践不断积累经验和技能;有了积累,最后才有可能顿悟。这个过程涉及5个阶段,挑选我国的古代典籍《易经》中的描述来概括[1]

初九,潜龙勿用。

九二,见龙在田,利见大人。

上六,龙战于野,其血玄黄。

九五,飞龙在天,利见大人。

上九,亢龙有悔。

这里的五段爻辞,分别对应着以下编程学习的5个阶段。

□“潜龙勿用”指的是神龙潜伏于水中,暂时还无法展示威力。此时我们刚学会了一点皮毛,不要着急应用。

□“见龙在田,利见大人”指的是神龙已出现在地面上,才干已经初步显露出来,利于被伯乐看到。此时我们已经习得了一些本领,但根基尚不牢靠。

□“龙战于野,其血玄黄”指的是神龙战于四方,天地亦为之变色。此时我们已经知晓了面向对象、模块化、设计模式等基础编程技能,可以独立负责一个项目或维护一个开源软件了。

□“飞龙在天,利见大人”指的是神龙飞上天空,象征德才兼备的人一定会有所作为。此时的学习者对知识的深度和广度均有深刻认识,知识结构更加完善了。

□“亢龙有悔”一般意为居高位的人要戒骄,否则会因失败而后悔。这里指的是神龙飞得过高,可能会发生后悔的事。此时学习基本已经结束,但不要觉得学完就万事大吉了,有些内容需要反复温习,经过长期积累才能顿悟,产生新的认知。

了解了这5个阶段以后,可能有读者就要问了:我们在学习编程时,是应该先学基础知识再学习具体的开发技术,还是应该先学习一项具体的技术,再在工作中夯实基础呢?这是一个老生常谈的问题。

如何学习编程,一直有自下而上与自上而下之争。自下而上的学习,指的是先从计算机基础开始学习,之后再学习具体的某项技术;自上而下的学习则是反过来,先学习某项具体技术,再于工作中夯实基础。

笔者的主张是,运用PBL教学思想,在一个虚构的实战项目中将理论与实践相结合,基础知识与具体的技能同时学习。

在编程这个领域,学习者根本不需要考虑应该自下而上学习,还是自上而下学习。以往旧的学习方式,无论是在学校里按部就班地学习基础,还是在社会培训机构里实践应用技能,都存在一定的偏差。PBL是最接近于公司老人带新人的学习方式。

关于这套书

微信小游戏开发系列图书共包含两本。一本是本书,主要通过一个小游戏实战项目,一步步学会JS[2]语言语法、模块化重构、面向对象的软件设计技巧及常见设计模式的实用技巧。另一本是《微信小游戏开发:后端篇》,主要内容包括小游戏常用单机功能优化、广告组件与社交营销排行榜、云函数与云数据库、后端接口程序及后台Web管理系统、Go语言语法等方面的知识讲解。前面提到的5个学习阶段——潜龙勿用、见龙在田、龙战于野、飞龙在天和亢龙有悔,正好对应这两本书中的5篇内容。其中:本书涉及潜龙勿用、见龙在田、龙战于野这3篇,共11章,32课;《微信小游戏开发:后端篇》则包含飞龙在天,共7章,18课。亢龙有悔在番外篇中,在笔者公众号“艺述论”回复关键字10000时可以看到。

因为微信小游戏是当下最适合新人学习的编程技术,所以笔者选择它作为本套书的练习项目。表面上读者学习的是微信小游戏项目开发,但实际上是在系统地学习编程语言、技巧及思想。

两本书的讲解风格、编撰指导思想是一致的,内容也是连贯的,练习的也是同一个项目,编程初学者宜先阅读本书,再学习《微信小游戏开发:后端篇》。

本书的主要内容

本书分为三篇,共11章,32课。

□第一篇(第1章),潜龙勿用,共2课,介绍微信小游戏是如何运行的,以及如何创建第一个小游戏项目。

□第二篇(第2~5章),见龙在田,共14课。第2~3章介绍如何用HTML5技术实现一个小游戏,第4~5章介绍如何将这个HTML5小游戏改写成微信小游戏。为什么不直接用微信小游戏开发?因为学习从HTML5移植改写,也是本书的重要内容之一,方便开发者从4399平台或3366平台上学习与借鉴游戏创意。

□第三篇(第6~11章),龙战于野,共16课。本篇是本书的实战重点,主要介绍如何对小游戏项目进行重构。重构是软件开发中非常重要的一环,好的软件不是事先设计出来的,而是通过不断重构慢慢迭代出来的。重构不是知识,更多是一种技能。第6~8章介绍小游戏项目的模块化重构方法,第9~11章介绍小游戏项目的面向对象重构方法。

主要读者

任何一本书都有它的特定读者群体,本套书主要面向以下初学者群体。

□在校大学生、高职生、中专生及编程培训机构的初学人员;

□准备转型的运维工程师和产品相关从业者。

如何学习本书

本书按照PBL教学理念编写,以一个小游戏项目贯穿全书,内容由易到难,建议初学者按部就班,从前向后依次学习。书中为了启发读者思考,特意增加了以下3类内容。

原因探索引导。读者在书中可能会看到一些运行错误,这些错误是我们在实际开发中经常会遇到的。这时适合停下来,想一想为什么会出现这样的问题,应该如何解决。

拓展内容。书中的章节标题凡带有“拓展”字样的,都属于实践拓展内容。这些内容都是与当前实战示例密切相关的,阅读这些内容有助于加深对当下实践主题的理解。

思考与练习。这些习题也是与当前实践主题高度相关的,希望读者可以停下来做一做。书末附有参考答案,练习之后可以对照。

本书附有随书示例源码供读者下载。读者在使用源码时,需要注意以下两点。

□示例源码是分目录独立放置的,各目录下的示例互不影响。代码顶部一般都附有源码文件的相对地址。另外,当每课内容涉及代码运行及测试时,也会提示示例的相对目录,读者只需要查看对应的示例源码即可。

□对于不同语言的示例源码,需要使用不同的测试方式。如果是JS代码,可以使用node或babel-node测试;如果是小游戏项目源码,则通过微信开发者工具测试。具体如何使用,书中都有详细讲解。

如何获取更多资源

关注笔者的微信公众号“艺述论”,回复10000,即可下载所有随书源码。同时公众号设置了读者交流群的入口,欢迎所有读者进群交流。

为了避免因为软件版本差异给读者带来的使用困惑,笔者将书中用到的所有软件也放在了随书源码中,下载后在software子目录下即可看到。

勘误与支持

限于笔者水平,书中难免会出现一些表述错误或者不准确的地方,请读者在阅读过程中如有发现,请来信告知,笔者的邮箱是9830131@qq.com,邮件标题请注明“小游戏勘误与建议”,也欢迎提出批评及改进建议。

致谢

十分感谢机械工业出版社的编辑,他们的认真和敬业令人折服,没有他们的理解、支持和鼓励,这套书可能无法面世。

最后,感谢一直支持我的家人和朋友,感谢每位读者。真诚地希望每个人都能学有所成。

李艺

2022年5月29日于北京通州


[1]这里只是为说明5个阶段,并非实际的《易经》原文顺序。

[2]即JavaScript,本书简称为JS,遵循业界常用简称。