云开发之:微信小程序组件化开发

下图是微信小程序的目录结构,components文件夹主要存放组件的代码

我们在components目录下新建一个playlist组件(是一个文件夹,结构和小程序页面一样)

 playlist.js

其中properties的参数,playlist用来接收传入的一个对象

// components/playlist/playlist.js
Component({/*** 组件的属性列表*/properties: {playlist:{type:Object}},observers:{['playlist.playCount'](count){this.setData({playCount: this._tranNumber(count, 2)})}},/*** 组件的初始数据*/data: {playCount:'',},/*** 组件的方法列表*/methods: {_tranNumber(num,point){let numStr=num.toString().split('.')[0]if(numStr.length<6){return numStr}else if(numStr.length>=6 && numStr.length<=8){let decimal=numStr.substring(numStr.length-4,numStr.length-4+point)return parseFloat(parseInt(num/10000)+'.'+decimal)+'万'}else if(numStr.length>8){let decimal = numStr.substring(numStr.length - 8, numStr.length - 8 + point)return parseFloat(parseInt(num / 100000000) + '.' + decimal) + '亿'}}}
})

playlist.json

我们需要把组件设置为true

{"component": true,"usingComponents": {}
}

playlist.wxml

这里面写组件的结构

<!--components/playlist/playlist.wxml-->
<view class="playlist-container">
<image src="{{playlist.picUrl}}" class="playlist-img"></image>
<view class="playlist-playcount">
<image src="/images/comp/earphone.png" class="playlist-countimg"></image>
<text>{{playCount}}</text>
</view>
<view class="playlist-name">{{playlist.name}}</view>
</view>

playlist.wxss

这里面写相关的样式

/* components/playlist/playlist.wxss */
.playlist-container{width: 220rpx;position: relative;padding-bottom: 20rpx;
}
.playlist-img{width: 100%;height: 220rpx;border-radius: 6rpx;
}
.playlist-playcount{font-size: 25rpx;color: #fff;text-shadow: 1px 0 0 rgba(0, 0, 0, 0);position: absolute;right: 10rpx;top:4rpx;padding-left: 26rpx;display: inline-block;text-align: middle;
}
.playlist-countimg{width: 15px;height: 15px;margin-right: 5px;
}
.playlist-name{font-size: 26rpx;line-height: 1.2;padding: 2px 0 0 6px; display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow: ellipsis;
}

写好之后,我们就可以在小程序页面(pages)引入我们写好的这个组件

在pages目录下的playlist.json文件中,我们要引入组件的路径

{"usingComponents": {"x-playlist":"/components/playlist/playlist"}
}

在playlist.wxml中,我们就可以使用<x-playlist>标签引用组件

<!--miniprogram/pages/playlist/playlist.wxml-->
<swiper indicator-dots="true" autoplay="true" interval="2000" duration="1000">
<block wx:for="{{swiperImgUrls}}" wx:key="url">
<swiper-item>
<image src="{{item.url}}" mode="widthFix" class="img" bind:tap="jump"></image>
</swiper-item>
</block>
</swiper> <view class="playlist-container"><block wx:for="{{playlist}}" wx:key="picUrl"><x-playlist playlist="{{item}}" bind:tap="jump"></x-playlist></block>
</view>

playlist.js

这里面包含相关的数据信息

// miniprogram/pages/playlist/playlist.js
Page({/*** 页面的初始数据*/data: {openid:'',swiperImgUrls:[{url:'https://cn.bing.com/th?id=OIP.J7C76dlRHqMy_l_TGNIb0QHaEK&pid=Api&rs=1'},{url: 'https://cn.bing.com/th?id=OIP.cp5Jujcc4CL4Wh-4jangqwHaEK&pid=Api&rs=1'},{url: 'https://cn.bing.com/th?id=OIP.o0M1u4Znrnj2MQf0m9A9TAHaEK&pid=Api&rs=1'}],playlist:[{playCount:200000000,name:'yaoyi is very handsome and smart',picUrl:'https://cn.bing.com/th?id=OIP.Qz9nEqNOQ73HWNBIF5FDTgHaHa&pid=Api&rs=1'},{playCount: 2555008400,name: 'she is clever but she don not love her',picUrl: 'https://cn.bing.com/th?id=OIP.TYmT9lvbezQ9hspnOYaIGQAAAA&pid=Api&rs=1'},{playCount: 23244300,name: 'everyone has her dream',picUrl: 'https://cn.bing.com/th?id=OIP.zhvykjGi-XOzifCtwcsU2wAAAA&pid=Api&rs=1'},{playCount: 121225400,name: 'you say say with me say that yorkmass is very wonderful',picUrl: 'https://cn.bing.com/th?id=OIP.EilG3DsOAJL2mcBff-E-8wAAAA&pid=Api&rs=1'},{playCount: 145250400,name: 'what a pity you see see yourself',picUrl: 'https://cn.bing.com/th?id=OIP.CpJBaT7j9_GJKsJ5cXb67gAAAA&pid=Api&rs=1'},{playCount: 50400,name: 'what a pity you see see yourself',picUrl: 'http://img.wowoqq.com/allimg/180129/1-1P12Z62159-51.jpg'}]},jump(){wx.navigateTo({url: '/pages/demo/demo',})},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {wx.cloud.callFunction({name:'login'}).then((res)=>{this.setData({openid:res.result.openid})})},/*** 生命周期函数--监听页面初次渲染完成*/onReady: function () {},/*** 生命周期函数--监听页面显示*/onShow: function () {},/*** 生命周期函数--监听页面隐藏*/onHide: function () {},/*** 生命周期函数--监听页面卸载*/onUnload: function () {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh: function () {},/*** 页面上拉触底事件的处理函数*/onReachBottom: function () {},/*** 用户点击右上角分享*/onShareAppMessage: function () {return{title:openid+'沙雕的日常',path:'/pages/blogs'}}
})

这样,我们就能很好的在pages中的playlist界面使用playlist组件了!

云开发:微信小程序开发-组件化开发相关推荐

  1. 使用uniapp 开发微信小程序map组件在开发过程中遇到的问题

    ** 使用uniapp 开发微信小程序map组件在开发过程中遇到的问题 [菜鸟记录] ** 发现的问题: 如果给map设置初始化scale的话,手指缩放地图后,点击按钮让地图再次回到和初始化一样的 s ...

  2. 从0到一开发微信小程序(2)——开发第一个小程序

    文章目录 其他相关文章 1.创建项目 2.小程序代码目录介绍 2.1.描述整体的app.* 2.2.描述各自页面的pages下面的目录 其他相关文章 从0到一开发微信小程序(1)--申请账号并安装开发 ...

  3. 【小程序】组件化开发的基本使用(一)

    文章目录 小程序组件化开发基本使用 小程序组件化思想 自定义组件的过程 组件样式实现细节 小程序组件化开发基本使用 小程序组件化思想 组件插槽定义使用 小程序在刚刚推出时是不支持组件化的, 也是为人诟 ...

  4. 微信小程序之组件的开发

    跟着视频开始小程序的项目的开发,视频中这个小程序已经上线了,可以很好的看着小程序的界面进行开发,昨天看了一下具体的需求,觉得真的细节好多啊,而且其中设计的组件的思想也是很好的,能够很好的实现代码的复用 ...

  5. 校园音乐点歌平台的设计与开发 微信小程序 推荐点歌 java 开发

    1. 微信小程序前台展示 (基于协同过滤算法 根据用户点歌行为 对用户点歌进行推荐) 2 . 使用到的技术框架 Springboot+maven+mybatis+网易云相关API 3.  后台展示 项 ...

  6. 校园音乐点歌平台的设计与开发 微信小程序 点歌系统 java 开发

    1. 微信小程序前台展示 2 . 使用到的技术框架 Springboot+maven+mybatis+网易云相关API 3.  后台展示 项目地址: 项目地址

  7. 从0到一开发微信小程序(7)—小程序组件库(提高开发效率)

    文章目录 其他相关文章 1.组件库 1.1.TDesign 引入TDesign 使用 NPM 修改 app.json 使用组件 TDesign的应用 Rate 评分 Sticky 吸顶容器 Toast ...

  8. 从0到一开发微信小程序(6)—小程序常用API

    文章目录 其他相关文章 1.小程序API 1.1.路由 1.1.1.navigateTo(保留当前页面,跳转到应用内的某个页面,可以带参数) 1.1.2.redirectTo(关闭当前页面,跳转到应用 ...

  9. 从0到一开发微信小程序(5)—小程序WXML

    文章目录 其他相关文章 1.WXML 1.1.事件 1.1.1.系统 1.1.2.分类 1.1.2.1.冒泡事件(bindtap) 1.1.2.2.非冒泡事件(catchtap) 1.1.3.携带参数 ...

  10. 从0到一开发微信小程序(1)——申请账号并安装开发环境

    文章目录 其他相关文章 1.什么是微信小程序? 2.如何申请? 3.开发工具下载 其他相关文章 从0到一开发微信小程序(1)--申请账号并安装开发环境 从0到一开发微信小程序(2)--开发第一个小程序 ...

最新文章

  1. PHP复制和移动目录
  2. 计算机网络实验五:虚拟局域网技术
  3. ElasticStack系列之八 _source 字段
  4. 多线程 简单的实现案例
  5. how to write a good api
  6. 方方格子补丁_方方格子wps版下载 方方格子Excel工具箱插件(WPS版全套) v3.2.8.0 中文官方安装版 下载-脚本之家...
  7. 软考中级数据库系统工程师备考详细资料
  8. Houdini定义属性方式
  9. python下载pandas库_Python中的pandas库
  10. 轻松搞懂word2vec / FastText + SVM(支持向量机)实现中英文情感分类
  11. 人脸识别算法DeepFace论文解读
  12. endless walk
  13. python什么字体好看_python docx 中文字体设置的操作方法
  14. 厨神之路一--群英荟萃1
  15. Proteus:logic contentions detected on net B15
  16. Datawhale组队学习之MySQL-task2
  17. 不同厂商手机系统日志抓取方法
  18. 如何自学Python爬虫,python爬虫快速入门教程
  19. UDP-Based 多路径乱序传输
  20. 网速快慢与网线材质的选择关系

热门文章

  1. win7连接sftp_WinSCP官方版下载_WinSCP(SFTP客户端) v5.17.1中文版 - Win7旗舰版
  2. 实例——Python爬虫requests网络图片的爬取和存储
  3. 智能运营新功能,多波次营销全触达
  4. 每日一课 | SQL模糊查找
  5. navicat如何连接mysql?navicat 连接mysql Navicat使用教程
  6. 少儿编程pythonppt-五年级的孩子学编程有没有意义?
  7. animal farm 第一章阅读笔记
  8. 2021年中国存款余额持续增长,人民币、外币存款余额均创历史新高[图]
  9. 《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践》读后感
  10. 21、python的K-means聚类分析方法案例代码