定 價:99 元
叢書名:移動應(yīng)用開發(fā)技術(shù)叢書
- 作者:李藝
- 出版時間:2023/3/1
- ISBN:9787111721024
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP317.67
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
“微信小游戲開發(fā)”系列圖書包含《微信小游戲開發(fā):前端篇》和本書,融合了騰訊云TVP李藝多年來的一線項目研發(fā)和教學(xué)經(jīng)驗。本書在前端篇的基礎(chǔ)上,繼續(xù)講解微信小游戲開發(fā)后端部分的內(nèi)容,主要包括本地功能開發(fā)、云開發(fā)實踐、后端程序編寫等,最終讓讀者掌握微信小游戲全棧開發(fā)的知識體系與核心技能,并完成一個精心設(shè)計的實際項目。本書隨附完整的項目源碼,以方便讀者學(xué)習(xí)和實踐。
本書共7章,主要內(nèi)容如下。
第1~3章 本地功能
學(xué)習(xí)微信小游戲開發(fā),少不了要學(xué)習(xí)平臺組件和接口。這3章主要介紹如何利用平臺組件和接口實現(xiàn)微信小游戲開發(fā)中常用的本地功能,比如讀寫本地緩存和本地文件、顯示用戶的位置信息、添加背景圖片、監(jiān)聽并記錄錯誤、添加排行榜和廣告等。通過這3章的實踐,我們將使小游戲項目的本地功能更加完善,同時進(jìn)一步了解微信小游戲的平臺能力,為以后自學(xué)平臺組件和接口打下基礎(chǔ)。
第4、5章 云開發(fā)
云開發(fā)可以顯著降低運(yùn)維成本和運(yùn)維復(fù)雜度,對于獨立開發(fā)者來說尤為適合。云開發(fā)技術(shù)一直在快速演進(jìn),不斷有新功能、新接口出現(xiàn)。在這兩章中,我們將進(jìn)行基礎(chǔ)云開發(fā)(云函數(shù)、云數(shù)據(jù)庫、云存儲)方面的實踐,了解其運(yùn)行機(jī)制,這樣無論以后云開發(fā)技術(shù)如何推陳出新,我們都能快速掌握并運(yùn)用。
第6、7章 后端
編寫后端程序是重中之重。在這兩章中,我們在保證技能實踐的全面性的前提下,盡量將內(nèi)容簡化。我們將使用兩種常用的后端技術(shù)Node.js和Go編寫同一套接口,實現(xiàn)相同的后端程序功能。在編寫后端接口程序和Web后臺管理程序時,書中提供了分別基于koa2(Node.js Web框架)和Iris(Go Web框架)的快速開發(fā)項目模板,即使你是初學(xué)者,也能很快入門。
(1)作者權(quán)威:微信學(xué)堂“小程序性能優(yōu)化實踐”作者李藝新力作,騰訊云TVP專家,中移聯(lián)合智庫ICT專家級講師,前北京協(xié)同創(chuàng)新研究院人工智能課題項目技術(shù)負(fù)責(zé)人。(2)7位專家推薦:蔣濤、熊平、黃希彤、廖雪峰、陳超、寇永贊、舒欣。(3)內(nèi)容豐富,深刻全面:等于《從零起步學(xué)JS》+《微信小游戲基礎(chǔ)開發(fā)》+《微信小程序云開發(fā)》+《微信小程序Node.js+Go全棧開發(fā)》4本書。(4)實戰(zhàn)式拓展:不直接說教,通過一個個刻意設(shè)計的小功能案例,讓讀者自己實踐、領(lǐng)悟、逐步突破、適當(dāng)拓展,從而做到印象深刻、循序漸進(jìn)、全面掌握。
在極客時間成立四周年之際,筆者在該平臺上分享過這樣一段話:
我是一個砌石階的人。2021年國慶節(jié)我在趕書稿時,看著最終敲定的復(fù)雜代碼,突然確信—我所撰寫的這套技術(shù)圖書對讀者來說是有價值的。其價值就在于整套書都在寫一個PBL(Project Based Learning,項目引導(dǎo)式學(xué)習(xí))實戰(zhàn)案例,從最開始的3行代碼,到最終的幾萬行代碼。試想一下:如果要求學(xué)習(xí)者直接以結(jié)果代碼為模板進(jìn)行練習(xí),那肯定不太友好;但如果是讓學(xué)習(xí)者跟著筆者講解的節(jié)奏,從基礎(chǔ)代碼一步步修改得到結(jié)果代碼,那他應(yīng)該會很有成就感吧。
學(xué)編程就像登山,只要一步一個腳印堅持往上爬,就可以到達(dá)山頂。泰山雖高,但只要一步一級臺階,終可看到山頂無限風(fēng)光;而如果有人不走臺階,從荒山野嶺中攀爬,那他將很難爬上去。
這本書及它的姊妹篇《微信小游戲開發(fā):前端篇》就在這種指導(dǎo)思想下完成了。
很多程序員坦言,他們的編程技能并不是在大學(xué)里學(xué)到的,而是在走向工作崗位以后練就的。在IT公司中,新人成長最快的方式就是有人帶,師傅帶著徒弟做一個項目,等到項目完成時,徒弟也就將編程技能掌握得差不多了。筆者希望以書面的形式帶領(lǐng)讀者來學(xué)習(xí),就像公司里老人帶新人一樣,通過一個PBL實戰(zhàn)項目,系統(tǒng)地學(xué)習(xí)與前后端相關(guān)的所有知識點和技能點。
為什么要這樣學(xué)習(xí)呢?下面先看一下新人學(xué)習(xí)編程一般需要經(jīng)歷的5個階段。
初學(xué)者進(jìn)入一個行業(yè),首先要學(xué)習(xí)基礎(chǔ)知識。有了基礎(chǔ)知識,才能通過實踐不斷積累經(jīng)驗和技能;有了積累,最后才有可能頓悟。這個過程涉及5個階段,這5個階段可以用我國的古代典籍《易經(jīng)》中的描述來概括。
初九,潛龍勿用。
九二,見龍在田,利見大人。
上六,龍戰(zhàn)于野,其血玄黃。
九五,飛龍在天,利見大人。
上九,亢龍有悔。
這里的五段爻辭分別對應(yīng)著編程學(xué)習(xí)的以下5個階段。
“潛龍勿用”指的是神龍潛伏于水中,暫時還發(fā)揮不了作用。此時學(xué)習(xí)者剛學(xué)會了一點皮毛,不要著急應(yīng)用。
“見龍在田,利見大人”指的是神龍已出現(xiàn)在地面上,才干已經(jīng)初步顯露出來,利于被伯樂看到。此時學(xué)習(xí)者已經(jīng)習(xí)得了一些本領(lǐng),但根基尚不牢靠。
“龍戰(zhàn)于野,其血玄黃”指的是神龍戰(zhàn)于四方,天地亦為之變色。此時學(xué)習(xí)者已經(jīng)通曉了面向?qū)ο、模塊化、設(shè)計模式等基礎(chǔ)編程技能,可以獨立負(fù)責(zé)一個項目或維護(hù)一個開源軟件了。
“飛龍在天,利見大人”指的是神龍飛上天空,象征德才兼?zhèn)涞娜艘欢〞兴鳛椤4藭r學(xué)習(xí)者的知識已經(jīng)具備相當(dāng)?shù)纳疃群蛷V度,知識結(jié)構(gòu)更加完善。
“亢龍有悔”一般意為居高位的人要戒驕,否則會因失敗而后悔。這里指的是神龍飛得過高,可能會發(fā)生后悔的事。雖然此時學(xué)習(xí)已經(jīng)基本結(jié)束,但是不要覺得學(xué)完了就萬事大吉,有些內(nèi)容需要反復(fù)溫習(xí),經(jīng)過長期積累才能頓悟,產(chǎn)生新的認(rèn)知。
了解了這5個階段以后,有的讀者可能會問,我們在學(xué)習(xí)編程時,是應(yīng)該先學(xué)習(xí)基礎(chǔ)知識再學(xué)習(xí)具體的開發(fā)技術(shù),還是應(yīng)該先學(xué)習(xí)一門具體的開發(fā)技術(shù)再在工作中夯實基礎(chǔ)呢?這是一個老生常談的問題。
關(guān)于如何學(xué)習(xí)編程,一直有自下而上與自上而下的方式之爭。自下而上的學(xué)習(xí)方式,指的是先學(xué)習(xí)計算機(jī)基礎(chǔ)知識,再學(xué)習(xí)具體的某項技術(shù);自上而下的學(xué)習(xí)方式則是反過來,指的是先學(xué)項具體的技術(shù),再在工作中夯實基礎(chǔ)。
筆者的主張是,運(yùn)用PBL教學(xué)思想,在一個虛構(gòu)的實戰(zhàn)項目中將理論與實踐相結(jié)合,同時學(xué)習(xí)基礎(chǔ)知識與具體的技能。
2020年由北京市十一學(xué)校牽頭,北京懷柔九渡河小學(xué)做了一次PBL教學(xué)實驗。九渡河小學(xué)遠(yuǎn)離城區(qū),師資力量薄弱,學(xué)校就地取材,從附近村民中招攬了40余位傳統(tǒng)手工藝人,讓這些手工藝人教學(xué)生們磨豆腐、剪紙、糊燈籠等傳統(tǒng)手藝。學(xué)校老師則把1至6年級需要學(xué)習(xí)的所有知識點打散,然后全部融入這些傳統(tǒng)的手工藝實踐活動中,讓學(xué)生在實踐活動中學(xué)習(xí)。教學(xué)實驗非常成功。
在編程這個領(lǐng)域,學(xué)習(xí)者根本不需要考慮應(yīng)該自下而上學(xué)習(xí)還是自上而下學(xué)習(xí)。以往舊的學(xué)習(xí)方式,無論是在學(xué)校里按部就班地學(xué)習(xí)基礎(chǔ),還是在社會培訓(xùn)機(jī)構(gòu)里實踐應(yīng)用技能,都存在一定的偏差。最好的編程學(xué)習(xí)方式是在一個PBL教學(xué)案例中,既學(xué)習(xí)基礎(chǔ)知識,又鍛煉必要的技能,這也是最接近于公司里老人帶新人的學(xué)習(xí)方式。
關(guān)于這套書
筆者撰寫的這套“微信小游戲開發(fā)”系列圖書共包含兩本:一本是《微信小游戲開發(fā):前端篇》,主要通過一個小游戲?qū)崙?zhàn)項目,帶領(lǐng)讀者從3行代碼開始,一步步學(xué)會JavaScript(下文簡稱JS)語言、模塊化重構(gòu)、面向?qū)ο蟮能浖O(shè)計技巧及常見設(shè)計模式的實際應(yīng)用技巧;另一本就是本書,主要內(nèi)容包括小游戲常用本地功能優(yōu)化、廣告組件與社交營銷排行榜、云函數(shù)與云數(shù)據(jù)庫、后端接口程序及后臺Web管理系統(tǒng)等。前面提到的5個學(xué)習(xí)階段—潛龍勿用、見龍在田、龍戰(zhàn)于野、飛龍在天和亢龍有悔,前4個階段正好對應(yīng)這兩本書中的四篇內(nèi)容。其中:《微信小游戲開發(fā):前端篇》含潛龍勿用、見龍在田、龍戰(zhàn)于野這三篇,共11章,32課;《微信小游戲開發(fā):后端篇》即飛龍在天篇,共7章,18課。亢龍有悔篇作為番外篇,在筆者公眾號“藝述論”中回復(fù)關(guān)鍵字10000即可
看到。
微信小游戲是當(dāng)下最適合新人學(xué)習(xí)的編程技術(shù),所以筆者選擇它作為本套書的練習(xí)項目。表面上讀者學(xué)習(xí)的是微信小游戲項目開發(fā),但實際上卻是在系統(tǒng)學(xué)習(xí)編程語言、技巧及思想,小游戲項目僅是作為一個最適合新人的學(xué)習(xí)形式而存在的。
兩本書的講解風(fēng)格、寫作指導(dǎo)思想是一致的,內(nèi)容是連貫的,練習(xí)的也是同一個項目,對于編程初學(xué)者而言,宜先閱讀前端篇,再學(xué)習(xí)后端篇。
本書主要內(nèi)容
后端開發(fā)是全棧開發(fā)中非常重要的一環(huán),不可或缺。本書主要講解微信小游戲后端開發(fā)實戰(zhàn),共7章。
第1~3章 本地功能
這3章主要介紹在微信小游戲開發(fā)中常用的本地功能。學(xué)習(xí)微信小游戲開發(fā),離不開學(xué)習(xí)平臺組件和接口。通過這3章的實踐,我們將能使小游戲項目在本地功能方面更加完善,同時進(jìn)一步了解微信小游戲的平臺能力,為以后自學(xué)全部平臺組件及接口打下
基礎(chǔ)。
第4、5章 云開發(fā)
云開發(fā)可以顯著降低開發(fā)者的運(yùn)維成本和運(yùn)維復(fù)雜度,對于獨立開發(fā)者來說尤為適合。云開發(fā)技術(shù)一直在快速進(jìn)化,不斷有新能力、新接口出現(xiàn)。在這兩章中,我們將進(jìn)行基礎(chǔ)云開發(fā)(云函數(shù)、云數(shù)據(jù)庫、云存儲)方面的實踐,了解其運(yùn)行機(jī)制,這樣無論以后云開發(fā)技術(shù)如何推陳出新,我們都能快速掌握和運(yùn)用。
第6、7章 后端
這兩章主要講解如何編寫后端程序,是重中之重,我們盡量將實踐內(nèi)容簡化,同時保持技能實踐的全面性。我們將用兩種常用的后端技術(shù)Node.js和Go編寫同一套接口,實現(xiàn)相同的后端程序功能。Node.js是“后端的JS”,好入門、易上手、應(yīng)用廣泛,值得學(xué)習(xí);Go語言天生支持高并發(fā),被稱為“互聯(lián)網(wǎng)時代的C語言”,是全棧工程師必學(xué)語言
之一。
讀者對象
每一本書都有它特定的讀者,本套書面向編程新人,主要包括以下人群。
大中專院校的在校學(xué)生及編程培訓(xùn)機(jī)構(gòu)的初學(xué)人員。
準(zhǔn)備轉(zhuǎn)型開發(fā)的運(yùn)維人員和產(chǎn)品經(jīng)理。
在閱讀過程中如果感到吃力,可以先學(xué)習(xí)番外篇中的計算機(jī)基礎(chǔ)、JS語言語法和Go語言語法等內(nèi)容。這些內(nèi)容在筆者公眾號“藝述論”中回復(fù)相應(yīng)關(guān)鍵字即可看到。
如何學(xué)習(xí)本書
本書基于PBL教學(xué)理念撰寫,以一個小游戲項目貫穿始終,內(nèi)容由易到難,建議初學(xué)者按部就班地從前向后依次學(xué)習(xí)。為了啟發(fā)讀者思考,書中特意增加了以下兩類內(nèi)容。
原因探索引導(dǎo)。讀者在書中可能會看到一些運(yùn)行錯誤,這些錯誤是我們在實際開發(fā)中經(jīng)常會遇到的,這時適合停下來,想一想為什么會出現(xiàn)這樣的問題,應(yīng)該如何解決。
拓展內(nèi)容。書中凡標(biāo)題中帶有“拓展”字樣的小節(jié)都屬于實踐拓展內(nèi)容,這些內(nèi)容與當(dāng)前的實踐密切相關(guān),有助于加深對當(dāng)前實踐主題的理解。
本書附有隨書示例源碼供讀者下載,關(guān)于源碼的使用,有以下兩點說明。
示例源碼是分目錄獨立放置的,各目錄下的示例互不影響。代碼頂部一般都附有源碼文件的相對地址,另外當(dāng)某課內(nèi)容涉及代碼運(yùn)行及測試時,也會提示示例的相對目錄,讀者只需查看對應(yīng)的示例即可。
對于不同語言的示例源碼,需要使用不同的測試方式。如果是JS代碼,可以使用Node.js或babel-node測試;如果是小游戲項目源碼,則需要通過微信開發(fā)者工具測試。具體如何使用,書中都有詳細(xì)講解。
如何獲取更多資源
為方便讀者學(xué)習(xí),本套書為讀者提供以下額外資源。
項目源碼與讀者交流群
關(guān)注筆者的微信公眾號“藝述論”,回復(fù)關(guān)鍵字10000即可下載所有隨書示例源碼。同時,還能看到讀者交流群的入口。歡迎所有讀者進(jìn)群交流。
為了避免因為軟件版本差異給讀者帶來不必要的使用困惑,筆者將書中用到的所有軟件也放在了源碼包中,下載后在software子目錄下即可看到。
李藝 騰訊云TVP,有近20年互聯(lián)網(wǎng)軟件研發(fā)經(jīng)驗,參與研發(fā)的音視頻直播產(chǎn)品曾在騰訊QQ上線,有數(shù)千萬人使用;是中移聯(lián)合智庫ICT專家級講師,一汽大眾等企業(yè)內(nèi)訓(xùn)講師,北京協(xié)同創(chuàng)新研究院人工智能項目技術(shù)負(fù)責(zé)人。國內(nèi)早期閃客之一,曾自定義課件標(biāo)準(zhǔn)并完成全平臺教育課件產(chǎn)品研發(fā),被Adobe官方選為中國社區(qū)管理員。業(yè)余喜歡寫作,創(chuàng)建微信公眾號和視頻號“藝述論”,用以分享技術(shù)教程,是微信學(xué)堂“小程序性能優(yōu)化實踐”和極客時間“微信小程序全棧開發(fā)實戰(zhàn)”的專欄作者,著有《小程序從0到1:微信全棧工程師一本通》等書。
目 錄 Contents
序一
序二
前言
第1章 本地功能:本地存儲與
LBS定位1
第1課 讀寫本地緩存1
創(chuàng)建數(shù)據(jù)服務(wù)單例,實現(xiàn)本地數(shù)據(jù)
讀取2
拓展:使用Storage面板管理本地
緩存數(shù)據(jù)4
面向Promise編程:異步轉(zhuǎn)同步5
如何清除本地緩存12
本課小結(jié)13
第2課 使用FileSystemManager讀寫
本地文件13
讀寫本地文件,實現(xiàn)數(shù)據(jù)服務(wù)模塊14
面向Promise編程:避免使用try catch17
本課小結(jié)20
第3課 使用騰訊位置服務(wù)顯示用戶
城市20
使用騰訊位置服務(wù)21
拓展:小心隱藏字符錯誤27
解決回調(diào)函數(shù)簡寫引發(fā)的錯誤28
使用異步轉(zhuǎn)同步技巧重寫LBSManager29
本課小結(jié)30
第2章 本地功能:優(yōu)化游戲體驗
與性能31
第4課 優(yōu)化游戲體驗:添加背景圖片
和頂級UI層31
添加適配不同機(jī)型的背景圖片31
使用有限字符的自定義字體35
在左擋板失誤時振動37
監(jiān)聽并處理背景音樂的意外暫停39
使用一個暫停按鈕,控制游戲的暫停
與恢復(fù)41
解決游戲暫停后定時器不暫停的問題47
添加游戲頂級UI層,實現(xiàn)退出功能51
本課小結(jié)58
第5課 優(yōu)化游戲性能:監(jiān)聽全局錯誤,
記錄錯誤日志59
監(jiān)聽全局錯誤,使用外觀模式記錄
錯誤日志59
允許打開設(shè)置頁面,用戶自己管理
授權(quán)66
拓展:關(guān)于小游戲UI層結(jié)構(gòu)的說明68
主動垃圾回收68
拓展:如何控制屏幕亮度69
本課小結(jié)70
第3章 本地功能:添加排行榜和
廣告71
第6課 添加好友排行榜,為社交
營銷助力71
實現(xiàn)一個游戲內(nèi)玩家排行榜71
實現(xiàn)好友中心玩家排行榜82
開啟游戲圈:從小游戲中進(jìn)入游戲圈83
開啟客服會話:在小游戲中打開客服
窗口86
開啟用戶意見反饋通道87
添加防沉迷機(jī)制88
本課小結(jié)91
第7課 添加廣告92
添加Banner廣告92
添加視頻激勵式廣告93
本課小結(jié)94
第4章 云開發(fā):創(chuàng)建與使用云函數(shù)96
第8課 創(chuàng)建第一個云函數(shù)97
配置云開發(fā)98
開通云環(huán)境99
在云數(shù)據(jù)庫中創(chuàng)建集合101
認(rèn)識云函數(shù)102
創(chuàng)建云函數(shù)103
本課小結(jié)105
第9課 調(diào)試和調(diào)用云函數(shù)106
云端測試106
本地調(diào)試109
調(diào)用云函數(shù)111
本課小結(jié)112
第5章 云開發(fā):使用云數(shù)據(jù)庫113
第10課 在小游戲端直接操作云
數(shù)據(jù)庫113
在小游戲中初始化云環(huán)境113
直接操作云數(shù)據(jù)庫集合114
拓展:了解云數(shù)據(jù)庫中的字段類型118
本課小結(jié)120
第11課 用兩種方式實現(xiàn)分頁查詢120
使用分頁查詢方法121
使用聚合查詢方法123
使用循環(huán)的方式清空小數(shù)據(jù)集合126
拓展:為查詢字段添加索引,提升
執(zhí)行效率127
拓展:了解集合的權(quán)限控制128
本課小結(jié)129
第12課 用戶如何操作自己創(chuàng)建的數(shù)據(jù):
查詢與更新129
查詢用戶自己添加的歷史數(shù)據(jù)130
在調(diào)試區(qū)測試云函數(shù)133
使用原子操作,更新用戶自己創(chuàng)建
的數(shù)據(jù)133
拓展:關(guān)于數(shù)據(jù)庫操作符和數(shù)據(jù)庫
聚合操作符136
拓展:使用云文件ID137
本課小結(jié)138
第6章 后端:用Node.js實現(xiàn)接口
及處理客服消息139
第13課 準(zhǔn)備MySQL數(shù)據(jù)庫141
安裝MySQL數(shù)據(jù)庫與數(shù)據(jù)庫管理
工具141
創(chuàng)建數(shù)據(jù)庫實例142
創(chuàng)建數(shù)據(jù)表history143
拓展:了解常用的MySQL數(shù)據(jù)類型146
本課小結(jié)149
第14課 實現(xiàn)history的3個RESTful
API(Node.js版本)149
啟動模板項目149
熟悉node-koa2項目模板結(jié)構(gòu)150
拓展:了解RESTful API設(shè)計規(guī)范160
實現(xiàn)history的3個接口(Node.js
版本)162
拓展:學(xué)習(xí)9種HTTP請求方法166
本課小結(jié)167
第15課 在小游戲端調(diào)用Node.js接口167
實現(xiàn)后臺接口管理者模塊,調(diào)用
history的3個接口167
擴(kuò)展新方法getOpenid,注意保持
新舊代碼的兼容性171
小游戲與小程序接口不一定一致174
使用外觀模式實現(xiàn)統(tǒng)一的存儲服務(wù)
管理者178
本課小結(jié)181
第16課 在服務(wù)器端接收和處理客服
消息(Node.js版本)181
使用內(nèi)網(wǎng)穿透工具frp181
在小游戲后臺啟用與配置消息推送187
實現(xiàn)消息推送接口(Node.js版本)188
拓展:如何使用Linux指令查殺、
重啟程序192
拓展:如何在Windows系統(tǒng)上運(yùn)行
Linux指令193
本課小結(jié)196
第7章 后端:用Node.js和Go
實現(xiàn)管理后臺197
第17課 實現(xiàn)導(dǎo)航與登錄功能
。∟ode.js版本)197
創(chuàng)建數(shù)據(jù)表account198
拓展:互聯(lián)網(wǎng)鑒權(quán)方式簡介199
實現(xiàn)登錄200
添加歷