Taro小程序仿网易云音乐

前言

前段时间用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 之后的值
 })
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在尝试开发了一个微信小程序之,后发现有mpvue这么个东西可以来开发小程序以后就忍不住了,所以把小程序和我用vue开发过的版本结合修改以后,再尝试用mpvue iview-weapp开发一个版本。后台接口用的是NeteaseCloudMusicApi,感谢大佬的分享git地址,demo项目代码质量不是很好,哈哈哈哈多多见谅预览(不动点大图看)目前完成推荐歌单排行榜歌单详情播放页歌单评论搜索扫一扫(基础功能)周边(百度地图api)项目搭建最开始还是要把微信小程序开发工具下载一下mpvue项目建立,跟着官网走一遍是最快的 快速上手支持iview-weapp,还是跟着官网快速上手,这里就一个地方要注意,把下载下来的iview-weapp项目的dist文件夹(可以改名字)是放到你项目编译后的dist目录下,iview-weapp官网没有效果的展示,所以建议扫它上面的二维码查看效果以后对照它的代码进行开发最后就是用微信小程序开发工具打开项目(不是dist目录),用你常用的编译器编写代码(src目录下)请求方面微信小程序有自带的wx.request()可以使用,还可以用Flyio,我是用的Flyio具体使用的话可以再每个模块中var Fly=require("flyio/dist/npm/wx") var fly=new Fly fly.get(url).then(res=>{})还有就是在main.js中const Fly = require('flyio/dist/npm/wx'); let fly = new Fly(); Vue.prototype.$fly = fly; //模块中使用  this.$fiy.get(url).then(res=>{})路由跳转传参wx.navigateTo({url:'../test/main?id=' id})\u7b2c\u4e00\u79cd\uff1aonShow\u00a0(options)\u00a0{\r\n\r\nlet\u00a0id\u00a0=\u00a0options.id\r\n\r\n}\u7b2c\u4e8c\u79cd\uff1a\u5728\u6240\u6709\u9875\u9762\u7ec4\u4ef6\u5185\u53ef\u4ee5\u901a\u8fc7 this.$root.$mp.query \u83b7\u53d6,\u8981\u6ce8\u610f\u5c31\u662f\uff1a\u5199\u5728mounted\u51fd\u6570\u91cc\uff0c\u5199\u5230created\u62a5\u9519\u3002\u7b2c\u4e09\u79cd\uff1a\u5728\u6240\u6709\u7684\u7ec4\u4ef6\u5185\u53ef\u4ee5\u901a\u8fc7 this.$root.$mp.appOptions\u83b7\u53d6\u3002\u6b63\u5e38\u60c5\u51b5\u4e0b\u4e09\u79cd\u5e94\u8be5\u90fd\u662f\u53ef\u4ee5\u7684\uff0c\u67d0\u4e00\u79cd\u6ca1\u7528\u7684\u65f6\u5019\u5c31\u5c1d\u8bd5\u53e6\u5916\u4e24\u79cd\u65b9\u9762\u8fd8\u662f\u548cvue\u91cc\u9762\u7684\u4f7f\u7528\u4e00\u6837\uff0c\u7b80\u5355\u7684/src/store/store.jsimport\u00a0Vue\u00a0from\u00a0'vue' import Vuex from 'vuex'; Vue.use(Vuex); export default new Vuex.Store({   state: {    oneState:'one'     }   },   mutations: {     setItem: (state,data) => {       state.oneState = data     },   },   getters : {     getItem (state) {         return state.oneState     }, });/src/main.jsimport store from './store/store' Vue.prototype.$store = store;/src/page/text.vueimport {mapGetters} from 'vuex'   export default {      computed:{        ...mapGetters([          'oneState'         ])      },      },      methods:{          test(){              this.$store.commit('setItem', 'two')          }      }总结好了,基本的开发流程就是这样,具体的开发大部分还是像vue开发那样,自己在开发的时候,遇到的坑还是有的,但网上基本都能找到解决方案,具体遇到的时候就查一查都能查到,收获很多。 最后这里还有一个用vue开发的版本可在线预览,建议用chrome的手机模式预览

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值