前言: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为场景值
```

如果在其他页面中使用 this.$router.params ,如果链接带参数,得到的就是参数对象;如果不带参数,得到的是页面路径,是拿不到scene场景值的,如果开发者需要场景值做一些事情,最好在 app.js中拿到scene储存到本地

4.video组件使用时的一些坑
(1) poster属性设置的背景图无效 ,会一闪而过;
(2) 网上所说的,用cover-view或者cover-image,在视频组件外套一层,亲测在开发者工具下可以,但是真机调试下不行,代码如下:

<video id="myVideo" class="video-xx" src="{{videoUrl}}" controls>
<cover-view class="controls"> <cover-image class="img" src="{{img}}"
/> </cover-view> </video>

本人的解决方案是,先隐藏Video组建,显示背景图;点击背景图再调用播放视频接口,解绝了这个问题,代码如下:

```

<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>
```

在play 方法中加入

```

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

(4) video不能设置圆角样式,在开发者工具中可以展示圆角,真机上是无效的

5.获取微信授权,手机号登录小程序
获取微信授权,拿到手机号登录小程序,使用该功能前要注意一点:该功能仅支持企业版小程序

下面讲讲该功能遇见的坑:
(1)使用该功能需要先获取登录的code码,传输code到后台接口获取到session_key,获取code,最好是在componentWillMount生命周期里面,不要放在getPhoneNumber()(授权获取手机号的方法中),否则多次操作获取手机号操作会出现session_key失效的问题,直接上代码:

//首先按钮上做好事件绑定

<Button openType='getPhoneNumber'
onGetPhoneNumber={this.getPhoneNumber.bind(this)}>微信快速登录</Button>

//componentWillMount生命周期获取code
Taro.login().then(res => {
if (res.code) {
this.setState({
code: res.code
})}})

//getPhoneNumber获取授权解密手机号登录
getPhoneNumber(e)

暂时先写这么多,后面会再补充一些,这里有个简单的小程序(涉及到的功能:手机号授权登陆,手机验证码登陆,登出,页面跳转的交互,视频播放等),项目git地址:

https://github.com/qzp199510/...

接口api封装参考文章地址:

https://segmentfault.com/a/11...

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

Taro:使用taro完成小程序开发的更多相关文章

  1. Taro框架下qq小程序开发体验

    qq小程序发布了,作为第一批体验者 .还是发现了和微信小程序很多不同的地方. 最新的小程序我这里都是用Taro开发的,体验较为不错.数据管理用的是redux.JS用的ES6加async等. 微信小程序 ...

  2. 《微信小程序项目开发实战:用WePY、mpvue、Taro打造高效的小程序》(笔记1)WePY开发环境的安装

    WePY的安装或更新都通过npm进行,全局安装或更新WePY命令行工具,使用以下命令: npm install wepy-cli -g 稍等片刻,成功安装后,即可创建WePY项目. 注意:如果npm安 ...

  3. 微信小程序项目开发实战:用WePY、mpvue、Taro打造高效的小程序》(笔记4)支持React.js语法的Taro框架

    Taro本身实现的情况类似于mpvue,mpvue的未来展望中也包含了支付宝小程序,现在的版本中,也可以使用不同的构建命令来构建出百度小程序的支持,如第10章所示,但是现在Taro先于mpvue实现了 ...

  4. 小程序开发:用原生还是选框架(wepy/mpvue/uni-app/taro)?

    小程序开发:用原生还是选框架(wepy/mpvue/uni-app/taro)? 自 2017-1-9微信小程序诞生以来,历经2年多的迭代升级,已有数百万小程序上线,成为继Web.iOS.Androi ...

  5. 第一个mpvue小程序开发总结

    前言 说起小程序,其实在去年我都还只试着照着官方文档写过demo的,不过现在这家公司小程序做得比较多,我来之后也参与了几个小程序的开发了,最开始那几个是用的wepy,最近一个开始转用mpvue开发,最 ...

  6. 微信小程序开发心得

    微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司 ...

  7. 【微信小程序开发•系列文章六】生命周期和路由

    这篇文章理论的知识比较多一些,都是个人观点,描述有失妥当的地方希望读者指出. [微信小程序开发•系列文章一]入门 [微信小程序开发•系列文章二]视图层 [微信小程序开发•系列文章三]数据层 [微信小程 ...

  8. 微信小程序开发日记——高仿知乎日报(下)

    本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...

  9. 微信小程序开发日记——高仿知乎日报(中)

    本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该教 ...

随机推荐

  1. log4j2中LevelRangeFilter的注意点

    LevelRangeFilter的注意点 在log4j2中,LevelRangeFilter的minLevel,maxLevel的配置是和log4j 1.x相反的:minLevel需要配置的是高级别, ...

  2. DHCP snooping(DHCP监听)

    DHCP监听可以防范利用DHCP发起的多种攻击行为,如DHCP中间人攻击,伪造多台设备耗尽地址池 DHCP监听允许可信端口上的所有DHCP消息,但是却过滤非可信端口上的DHCP消息,DHCP监听还会在 ...

  3. java操作mongodb数据库实现新建数据库,新建集合,新建文档

    *首先明确一点,要通过java代码创建mongodb数据库实例,需要同时创建集合和文档. 代码实现: /* 建立与mongodb数据库的连接,可指定参数,如:MongoClient client = ...

  4. A.走方格

    链接:https://ac.nowcoder.com/acm/contest/368/A 题意: 在一个n*n的方格中,你只能斜着走. 你还有一次上下左右走的机会 给你一个起点(sx,sy),和终点( ...

  5. [洛谷P2186] 小Z的栈函数

    题目链接: 传送门 题目分析: 大模拟,先得存操作,然后再处理每个数-- 有一个小优化,在处理操作的时候顺便判一下最后栈里是不是有且仅有一个数,但A完了才想起来,所以就算了-- 总之就是个模拟题--没 ...

  6. 洛谷 P4503 [CTSC2014]企鹅QQ

    暴力枚举不同的一位即可.. 主要是常数问题 1.统计答案时用sort速度快于用tr1/unordered_map,后者又快于map (tr1/unordered_map完全达不到理论复杂度上的O(1) ...

  7. 1-26HashSet简介

    Set的特点 Set里面存储的元素不能重复,没有索引,存取顺序不一致. package com.monkey1024.set; import java.util.HashSet; /** * Set的 ...

  8. 通用全局CSS样式

    PC全局样式 *{padding:0;margin:0;} div,dl,dt,dd,form,h1,h2,h3,h4,h5,h6,img,ol,ul,li,table,th,td,p,span,a{ ...

  9. Spring使用_进阶

    概述 本文主要写了几个关于Spring Aware,多线程,计划任务(定时任务),条件注解,组合注解,元注解,Spring测试的小例子以及关于@Enable*注解的工作原理的理解. Spring Aw ...

  10. Mvc 多级控制器 路由重写 及 多级Views目录 的寻找视图的规则

    1.那么我们再来看我们需要的访问方式,如下图 如果我们要访问Admin下的TestController里面的Index页面,那么我们输入Test/Index,这个肯定不行的.因为TestControl ...