亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

24小時從0到1開發(fā)陰陽師小程序

laoLiueizo / 1182人閱讀

摘要:最后放效果圖感興趣的同學(xué)歡迎掃碼體驗喲手機長按不能進入小程序,需要在微信發(fā)現(xiàn)小程序搜索式神獵手進入結(jié)尾以上所有內(nèi)容均已開源,歡迎大家參考后端式神獵手后端小程序端式神獵手小程序解決方案原文地址作者

0.序

玩陰陽師的肝帝們都知道,每天早上5點和下午6點會刷新兩次封印任務(wù),每次做任務(wù)時最蛋疼的就是找各種怪物對應(yīng)的副本以及神秘線索。 陰陽師提供了 網(wǎng)易精靈 可以進行一些數(shù)據(jù)查詢,但體驗實在太感人,所以大多數(shù)人選擇使用搜素引擎搜索怪物分布及神秘線索。

而每次使用搜索引擎查找又十分不方便,所以筆者決定寫一個查詢陰陽師妖怪分布的小程序,力求做到使用快捷體驗更快捷,把更多的時間留給狗糧和御魂。

恰好上周末有兩天時間,所以立馬開寫。

1.構(gòu)思與設(shè)計 ( 3小時 ) 1.1 構(gòu)思

要做的小程序主要功能就是查詢功能,所以主頁應(yīng)該像搜索引擎一樣簡潔,搜索框是肯定需要的;

主頁包含熱門搜索,緩存最熱式神的搜索;

搜索支持完整匹配或者單字匹配;

點擊搜索結(jié)果直接跳轉(zhuǎn)到式神詳情頁;53. 式神詳情頁應(yīng)該包含式神的圖鑒、名稱、稀有度、出沒地點,并且出沒地點按妖怪數(shù)量從多到少排序;

加入數(shù)據(jù)報錯及提建議的功能;

支持用戶個人的搜索歷史;

小程序的名字,綜合考慮小程序的功能最后決定叫做 式神獵手 ( 其實這是最后開發(fā)完成后才想好的 );

1.2 設(shè)計

構(gòu)思好后筆者就開始用筆者半吊子的 PS 水平設(shè)計了下草圖,大概是這個樣子:

嗯,最主要的首頁和詳情頁設(shè)計好就行,然后就可以開始具體考慮怎么做了!

1.3 技術(shù)架構(gòu)

前端毫無疑問就是微信小程序咯;

后端使用 Django 提供 Restful API 服務(wù);

當(dāng)前最熱搜索用 redis 做緩存服務(wù)器進行緩存;

個人搜索記錄就使用微信小程序提供的 localstorage ;

式神分布信息使用爬蟲爬取清洗,格式化為 json , 入庫前再做人工檢查;

式神圖片及圖標(biāo)直接爬取官方資料;

自己制作爬不到的式神圖片及圖標(biāo);

小程序要求 HTTPS 連接,恰好筆者之前搞過,可以直接看這里 HTTPS 免費部署指南

到此,正式開發(fā)前的準(zhǔn)備得當(dāng)后,我們就可以開始正式開發(fā)了

2. API 服務(wù)開發(fā) ( 5小時 )

Django 的 API 服務(wù)開發(fā)筆者之前經(jīng)常做,所以有比較完整的解決方案,可以參考這里 django-simple-serializer

之所以花了 5 個小時是因為近 4 個小時在增加 django-simple-serializer 對 Django ManyToManyField 中 through 特性的支持。

簡而言之, through 特性就是可以使多對多關(guān)系的中間表增添一些額外的字段或?qū)傩?,例? 怪物副本和怪物之間的多對多關(guān)系就需要增加一個儲存每個副本有多少只相應(yīng)怪物數(shù)量的字段 count。

搞定 through 支持后 API 的構(gòu)建就很快啦,主要有五個 API :

搜索接口;

式神詳情接口;

式神副本接口;

熱門搜索接口;

反饋接口;

寫好接口后添加一些 mock data 以供測試;

3. 前端開發(fā) ( 8小時 )

前端花了最久的時間。

一方面筆者真的是個后端工程師,前端屬于半路出家,另一方面小程序有一些坑。 當(dāng)然,最主要的是一直在調(diào)整界面效果,這里花了大量時間。

寫小程序的整體體驗筆者感覺就和寫 vue.js 一摸一樣,只不過一些 html 標(biāo)簽沒辦法使用,而是需要按小程序官方提供的組件進行書寫, 這里有一點感受就是,小程序本身組件化的設(shè)計思路應(yīng)該是借鑒了 React 而語法之類的應(yīng)該是借鑒了 vue.js 。

最后前端開發(fā)完畢后主要分為這幾個頁面:

主頁 ( 搜索頁 );

式神詳情頁;

我的頁面 ( 主要是放搜索歷史和免責(zé)申明等等東西 );

反饋界面;

聲明界面 ( 為何需要這個界面? 因為所有圖片及一些資源都是直接抓取陰陽師官方的資源,所以這里需要申明只是非盈利性質(zhì)的使用,版權(quán)亂七八糟的都還是陰陽師的 )。

哎,丑媳婦早晚要見公婆,這里不得不放最后開發(fā)出來的界面圖了

對于微信小程序的入門及基礎(chǔ),筆者就不在這里多講了,相信到現(xiàn)在對微信小程序有關(guān)注的開發(fā)者或多或少自己寫個簡單的 demo 肯定是沒問題的,我就主要講一講我在開發(fā)中遇到的坑:

3.1 background-image 屬性

在寫式神詳情頁的時候兩個地方需要用到 background-image 屬性設(shè)置背景圖,在微信開發(fā)者工具中一切顯示正常,但一到真機調(diào)試就沒有辦法顯示,最后發(fā)現(xiàn)小程序的 background-image 在真機不支持引用本地資源,解決方案有兩種:

使用網(wǎng)絡(luò)圖片: 考慮到背景圖的大小,筆者放棄了這種方案;

使用 base64 編碼圖片。

正常來講,css 中的 background-image 就支持 base64 ,這種方案相當(dāng)于把圖片直接用 base64 編碼成一段 base64 碼進行儲存,在使用時這樣使用即可:

background-image: url(data:image/image-format;base64,XXXX);

image-format 為圖片本身的格式,而 xxxx 就是圖片經(jīng)過 base64 后得到的編碼。這種方式其實是一種變相引用本地資源的方式,好處在于可以減少請求圖片的次數(shù),而缺點則是會增大 css 文件并使其不是那么好看。

最后筆者選擇第二種方式主要還是考慮到圖片的大小以及 wxss 的增大在可接受范圍內(nèi)。

3.2 template

小程序支持模版,但要注意模板擁有自己的作用域,只能使用data傳入的數(shù)據(jù)。

另外,在傳入數(shù)據(jù)時需要將相關(guān)數(shù)據(jù)解構(gòu)傳入,在模版內(nèi)部是直接以 {{ xxxx }} 的形式進行訪問,而不是像在循環(huán)中 {{ item.xxx }} 這種訪問形式;

關(guān)于解構(gòu):