前言
前段時間用mpvue開發過一個仿網易雲音樂的微信小程式(連結),但似乎mpvue好像是不再維護了,偶然得知有個Taro也可以開發小程式,但是用的是React,正好也想了解了解React,所以體驗了一下Taro。git地址
預覽
· 18/12/28 歌單詳情頁面
· 18/12/30 播放頁面1.0(還沒加入歌詞)
· 19/01/02 播放頁面2.0
· 19/01/03 個人頁面
· 19/01/03 每日推薦
· 19/01/04 熱門歌單、精品歌單
我的頁面 搜尋 個人歌單
Taro簡介
Taro 是一套遵循 React 語法規範的 多端開發 解決方案。使用 Taro,我們可以只書寫一套程式碼,再通過 Taro 的編譯工具,將原始碼分別編譯出可以在不同端(微信小程式、H5、RN 等)執行的程式碼,元件可以使用Taro的Taro-ui。(摘至官網)
Taro-ui
Taro-ui是一款基於 Taro 框架開發的多端 UI 元件庫,裡面的一些元件還是挺好用的,也挺好看的,官網很詳細而且還有效果圖提供觀看和體驗。
React
React的話跟著官網走一遍基本就能開發了,看了react以後還是覺得自己喜歡vue多一點(?)
專案流程
npm install -g @tarojs/cli
taro init myApp
npm run dev:weapp
複製程式碼
開發小程式注意事項
(摘自官網)若使用 微信小程式預覽模式 ,則需下載並使用微信開發者工具新增專案進行預覽,此時需要注意微信開發者工具的專案設定
- 需要設定關閉 ES6 轉 ES5 功能,開啟可能報錯
- 需要設定關閉上傳程式碼時樣式自動補全,開啟可能報錯
- 需要設定關閉程式碼壓縮上傳,開啟可能報錯
還有一些其他問題需要注意的,這裡基本都指出了,我在實際開發中好像也沒遇到過裡面提及過的問題(?)
開發相關
app.js對應的就是小程式的app.json一些基本配置可以在這裡完成,比如tarBar
"tabBar": {
"list": [
{
"text": "音樂",
"pagePath": "pages/music/music",
"iconPath": "./img/music.png",
"selectedIconPath": "./img/music.png"
},
{
"text": "電影",
"pagePath": "pages/index/index",
"iconPath": "./img/movie.png",
"selectedIconPath": "./img/movie.png"
}
]
}
複製程式碼
路由和傳值
//可使用Taro的
Taro.navigateTo({url:'/pages/some?tag=tags'})
//或者
<Navigator url="/pages/some?tag=tags">更多</Navigator>
//獲取時使用
this.$router.params.tag
複製程式碼
引用iconfont
先去iconfont官網選擇你想要的icon,
選擇新增到你自己的專案 複製上面的程式碼在瀏覽器裡開啟(前面記得加https:), 然後在自己的專案中src目錄下新建一個icon.scss名字隨意css也行,複製在瀏覽器開啟以後的內容貼上進去,最後在app.tsc中import './icon.scss'使用
<Text class="iconfont icon-play-circle"></Text>
父子元件
在其他地方寫好子元件後,父元件內直接 import就行,傳值的話直接在引用子元件時寫入需要傳遞的資料即可
<Child dataname={somedata} />
//在子元件中使用
this.props.dataname即可獲取傳遞過來的資料
複製程式碼
獲取setState以後的值
在開發過程中發現不能直接獲取setState以後的值,因為 this.state 和 props 一定是非同步更新的,所以不能在 setState 後馬上拿到 state 的值,正確做法是
this.setState({
somedata: 1
}, () => {
// 在這個函式內你可以拿到 setState 之後的值
})
複製程式碼