先講一下如何將本項目起來。 第一種方式:若是不進行受權,則沒法使用書架
和我的書架
頁,使用方式以下:javascript
## clone
git clone https://github.com/k-water/taro-reader
## install deps
npm install
## compile
npm run dev:weapp
複製代碼
而後將dist
文件夾導入微信開發者工具便可預覽。css
第二種方式:若是進行受權,涉及到微信小程序登陸,須要多一些數據,在/src/cloudFunctions/userLogin
中建立一個config.js
文件,內容以下:html
const config = {
appid: 'your appid',
secret: 'your secret',
}
module.exports = config
複製代碼
而後將雲函數上傳並部署,記得安裝依賴,接下來的操做同第一種方式。前端
Taro是一個遵循React語法規範的多端開發的框架。自從其開源以來,就一直關注,從一開始0.x版本,到後來的1.0版本。時至今日,Taro已經發展成爲一個成熟的框架,社區也逐漸完善。有一點值得點讚的是,Taro的維護人員處理問題很快,開發者很快能獲得響應,專一認真的開源態度,我以爲是Taro發展好的緣由之一。java
此項目是一個閱讀類的小程序,基於Taro開發。大概的初衷就是想試用一下Taro,熟悉Taro的開發流程等。拋開Taro,既然是閱讀類的小程序,那麼數據源要從何獲取?一開始思考的就是這個問題,有過幾個想法:git
通過本身的搜索,加上我的時間上的限制,最終選擇了第三個方案。github上確實有相關的項目可供使用,可是大部分都是基於Python,對Python不太熟悉,有必定的學習成本,故舍之。而爬取整站的書源對於我一個寫頁面的來講,也有點不太實際。最後在網上看到了追書神器
的API,進行一番搜索和思考後,以爲這個東西能夠做爲數據源,畢竟我主要是想嘗試Taro,因此數據源方面能簡單解決最好了。網上關於追書神器API的說明也有不少,本身經過搜索整理後,總結成了如下幾個部分:github
大大小小API大概有20+個,實現的功能基本與之相關。因爲接口是HTTP
的,因此經過本身的服務器作了一層HTTPS
的代理,方便使用。後端項目爲:reader-apinpm
此項目並無什麼邏輯,只是對參數作了下簡單的處理,經過curl
發送請求拿到數據。json
數據源解決了,下一步就是頁面如何設計,UI怎麼寫等問題。對於一個不擅於設計的前端er來講,這方面仍是稍微有一些阻滯的。一開始,經過墨刀畫出了初始的原型圖,在畫原型圖的過程當中,腦中思考的是頁面的佈局和要實現的功能,對於UI方面,則到了實際代碼開發中才實現。初始界面設計如圖所示:redux
在實際開發中,頁面UI和佈局參考了微信讀書,實現上可能沒有那麼精細,但也能夠接受。
有了以上準備,就能夠進入寫代碼的階段了。在初始化項目前思考,需不須要狀態管理,要初始化什麼樣的項目。因爲本項目頁面與頁面之間的數據共用的可能性不大,一些頁面跳轉的參數能夠放在路由參數上,因此沒有使用redux。
├─ config
├─ dist
└─ src
├─ app.js
├─ app.scss
├─ cloudFunctions ## 雲函數
├─ components ## 公用組件
├─ index.html
├─ pages ## 主頁面
│ ├─ book
│ ├─ class
│ ├─ index
│ └─ person
├─ static ## 靜態資源
│ ├─ icon
│ └─ image
├─ subpages ## 子包
└─ utils.js ## 工具函數
├─ package.json
├─ project.config.json
├─ .editorconfig
├─ .eslintrc
├─ .gitignore
├─ LICENSE
├─ README.md
複製代碼
從目錄結構看出,主頁面有四個,即
由於書架
和我的中心
這兩個頁面涉及到用戶的信息存儲,因此這裏結合了小程序雲開發,經過調用雲函數的方法進行數據通訊,方便開發。 根據實際狀況,其餘的頁面即經過分包的方式進行加載,減小小程序首屏的加載時間。
根據已有的API,實現的功能有:
這樣說可能有點抽象,看一張GIF展現圖:
因爲我的開發者不能上傳閱讀類的小程序,再者這個小程序本就是來練手的,因此更多功能請下載使用。
整體來講,Taro的開發體驗是很不錯的。因爲我的以前寫習慣了React,因此基本看一下文檔就上手了。根據文檔來開發,效率仍是不錯的。對於Taro不支持的小程序API或者語法,能夠經過直接書寫原生小程序代碼實現。並不影響代碼編譯和功能開發。在代碼校驗方面,Taro從新定義Eslint規則,遇到不合理的代碼規範,會有詳細的中文提示,這位開發者節省了很多功夫。 因爲社區的活躍和維護者處理issue神速,總體沒什麼阻滯,沒遇到什麼坑,也許多是我尚未用到那麼多特性吧(~ ̄▽ ̄)~ 。接下來有機會還會繼續實踐,持續關注ing。