Taro:使用taro完成小程序開發


前言:taro是一個可以很好實現一次開發,多端統一的框架,本文只介紹它小程序端開發的一些內容。
小程序項目搭建
gitup已經有很清楚的說明:https://github.com/NervJS/taro

一.主要操作步驟及命令:

1.cnpm install -g @tarojs/cli

全局安裝taro腳手架,此處我用的是淘寶鏡像cnpm,

寶鏡像配置命令:npm install -g cnpm --registry= https://registry.npm.taobao.org

安裝過程中會問你是否需要redux模板,可以先不要,等感覺確實需要redux再添加,

ts如果不會的話也不需要安裝

2.執行 cnpm run dev:weapp命令,就可以進入小程序開發環境進行開發了

二.開發過程碰到的一些坑:

1.事件綁定傳參
本人喜歡用es6方式傳值,但是在taro使用es6傳值編譯會出錯,所以在使用taro制作小程序時建議使用.bind傳值,如點擊事件傳值:

onClick={this.onClick.bind(this,num)}

2.底部TabBar使用
官方的TabBar配置只要在app.js中配置好就行了,但是官方的TabBar只提供了部分屬性不好擴展,如果需要擴展,建議自定義開發

3.小程序場景和頁面參數的獲取值獲取
小程序場景值獲取需要注意一點 ,: 只能在app.js的componentWillMount生命周期獲取,直接上代碼

```

const params = this.$router.params;//獲取所有參數
const query = params.query ;//query里面是鏈接上帶的參數
const scene = params.scene ;//scene為場景值

</blockquote>
<p>如果在其他頁面中使用 <strong>this.$router.params</strong> ,如果鏈接帶參數,得到的就是參數對象;如果不帶參數,得到的是頁面路徑,是拿不到<strong>scene</strong>場景值的,如果開發者需要場景值做一些事情,最好在 <strong>app.js</strong>中拿到scene儲存到本地</p>
<p><strong>4.video組件使用時的一些坑</strong><br>(1) <strong>poster</strong>屬性設置的背景圖無效 ,會一閃而過;<br>(2) 網上所說的,用cover-view或者cover-image,在視頻組件外套一層,<strong>親測在開發者工具下可以,但是真機調試下不行</strong>,代碼如下:</p>
<blockquote>&lt;video id="myVideo"  class="video-xx" src="{{videoUrl}}" controls&gt;<br>&lt;cover-view class="controls"&gt; &lt;cover-image class="img"  src="{{img}}"<br>/&gt; &lt;/cover-view&gt; &lt;/video&gt;</blockquote>
<p>本人的解決方案是,先隱藏Video組建,顯示背景圖;點擊背景圖再調用播放視頻接口,解絕了這個問題,代碼如下:</p>
<blockquote>

<Video className='video'
src='{video}
style={this.state.videoStyle}
controls={true}
customCache={false}
autoplay={false}
onPause={this.bindplay}
id='video'
>
</Video>
<View class='img_box' style={this.state.viewStyle}>
<Image className='img' src={Play} onClick={this.play} />
</View>


<p><strong>在play 方法中加入</strong></p>

const video = Taro.createVideoContext('video');
video.play();

</blockquote>
<p>(4) video不能設置圓角樣式,在開發者工具中可以展示圓角,真機上是無效的</p>
<p><strong>5.獲取微信授權,手機號登錄小程序</strong><br>獲取微信授權,拿到手機號登錄小程序,使用該功能前要注意一點:<strong>該功能僅支持企業版小程序</strong></p>
<p>下面講講該功能遇見的坑:<br>(1)使用該功能需要先獲取登錄的<strong>code</strong>碼,傳輸<strong>code</strong>到后台接口獲取到<strong>session_key</strong>,獲取<strong>code</strong>,最好是在<strong>componentWillMount</strong>生命周期里面,不要放在<strong>getPhoneNumber()</strong>(授權獲取手機號的方法中),否則多次操作獲取手機號操作會出現<strong>session_key</strong>失效的問題,直接上代碼:</p>
<blockquote>//<strong>首先按鈕上做好事件綁定</strong><p>&lt;Button openType='getPhoneNumber'<br>onGetPhoneNumber={this.getPhoneNumber.bind(this)}&gt;微信快速登錄&lt;/Button&gt;</p>
<p>//<strong>componentWillMount生命周期獲取code</strong><br>   Taro.login().then(res =&gt; {<br>   if (res.code) {<br>   this.setState({<br>   code: res.code<br>  })}})</p>
<p>//<strong>getPhoneNumber獲取授權解密手機號登錄</strong><br>getPhoneNumber(e)</p>
</blockquote>
<p>暫時先寫這么多,后面會再補充一些,這里有個簡單的小程序(涉及到的功能:手機號授權登陸,手機驗證碼登陸,登出,頁面跳轉的交互,視頻播放等),項目git地址:</p>
<p><a href="https://github.com/qzp199510/market" rel="nofollow noreferrer">https://github.com/qzp199510/...</a></p>
<p>接口api封裝參考文章地址:</p>
<p><a href="https://segmentfault.com/a/1190000016533592">https://segmentfault.com/a/11...</a></p>

                
                                                
原文地址:https://segmentfault.com/a/1190000016794779


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM