微信小程序小程实训报告
链接: 源代码下载
吐槽一下:我是个网络博主,搞交换路由的,不知道为毛写个期末作业,结果这篇文章变成了关注量最多的
简介
名称:网易云音乐
使用的技术:微信小程序,云服务
功能展示
(1)轮播图

(2)视频

(3)音乐

(4) 跳转


微信小程序目录和文件结构

index:主页
video:看点
me:我的
me_info:我的信息
me_music:我的音乐
首页页面结构

看点页面结构

我的页面结构

我的信息页面结构

我的音乐页面结构

(1)实现功能与效果图
轮播图

(2)结构代码
<swiper current="{{item}}" bindchange="changeTab">
<swiper-item>
<!-- 内容滚动区域 -->
<scroll-view class="content-info" scroll-y>
<!-- 轮播图 -->
<swiper class="content-info-slide" indicator-color="rgba(255,255,255,.5)" indicator-active-color="#fff" indicator-dots circular autoplay>
<swiper-item><image src="/images/timg1.jpg" /></swiper-item>
<swiper-item><image src="/images/timg2.jpg" /></swiper-item>
<swiper-item><image src="/images/timg3.jpg" /></swiper-item>
</swiper>
</scroll-view>
</swiper-item>
</swiper>
(3)样式代码
.content-info-slide {
height: 302rpx;
margin-bottom: 20px;
}
.content-info-slide image {
width: 100%;
height: 100%;
}
(1)实现功能与效果图
播放视频

(2)结构代码
<view class="video_div">
<view class="video_top">
<view><image src="/images/video_author1.jpg" class="video_author"/></view>
<view class="video_author_name">阿巴阿巴</view>
<view><image src="/images/video_follow.png" class="video_follow"/></view>
</view>
<view>
<video src="cloud://wxqm-6g3ssr0z4386c66a.7778-wxqm-6g3ssr0z4386c66a-1313733838/视频/1.mp4" controls class="video_video"></video>
</view>
<view class="video_bottom">
<view class="video_name">这事只能中午干</view>
<view><image src="/images/video_nice.png" class="video_nice"/></view>
</view>
</view>
(3)样式代码
/*布局*/
.video_div{
background-color: rgb(236, 235, 233);
width: 350px;
margin: auto;
border-radius:3%;
margin-top: 10px;
}
.video_top{
justify-content: center;
display:flex;
padding-top: 10px;
padding-bottom: 3px;
}
.video_bottom{
justify-content: center;
display:flex;
padding-top: 8px;
padding-bottom: 10px;
}
/*详细*/
.video_author{
width: 30px;
height: 30px;
border-radius:50%;
}
.video_author_name{
width: 250px;
margin-left: 10px;
margin-top: 4px;
font-size: 13px;
}
.video_follow{
width: 20px;
height: 20px;
margin-top: 5px;
}
.video_video{
width: 350px;
height: 200px;
}
.video_name{
width: 80%;
font-size: 17px;
}
.video_nice{
width: 20px;
height:20px;
}
(1)实现功能与效果图
跳转

(2)结构代码
<navigator url="me_music/me_music">
<view class="me_music">
<view class="me_music_div1">
<image src="/images/music1.jpg" class="me_music_photo"/>
</view>
<view class="me_music_div2">
<view class="me_music_name">我的音乐</view>
<view class="me_music_num">81首</view>
</view>
<view class="me_music_div3">
<image src="/images/sc.png" class="me_music_play"/>
</view>
</view>
</navigator>
(3)样式代码
/*我的音乐*/
.me_music{
width: 90%;
border-radius: 10px;
display: flex;
flex-direction: row;
justify-content: center;
margin:0 auto;
margin-top: 20px;
background-color: rgb(252, 241, 214);
padding-top: 10px;
padding-bottom: 10px;
}
.me_music_div1{
width: 60px;
}
.me_music_div2{
width: 200px;
}
.me_music_div3{
width: 50px;
display:flex; /*设置为flex布局*/
justify-content: center; /*水平居中*/
margin-top: 10px;
}
.me_music_photo{
width: 50px;
height: 50px;
border-radius:25%;
}
.me_music_name{
margin-top: 5px;
margin-left: 10px;
font-size: 16px;
}
.me_music_num{
margin-left: 10px;
margin-top: 5px;
font-size: 10px;
color: #9B9B9B;
}
.me_music_play{
width: 30px;
height: 30px;
}
(4)js代码
Page({
onLoad: function (options) {
this.setData({
title: options.title
})
}
})
(1)实现功能与效果图
播放音乐

(2)结构代码
<view class="music_list">
<view wx:for="{{ list }}" wx:for-item="item" wx:key="index" bindtap="clickPlay" data-item="{{ item }}" data-index="{{ index }}">
<view class="item" class="music_div">
<view class="text"><image src="{{ item.photo }}" class="music_photo"/></view>
<view class="text" class="music_name">{{ item.title }}</view>
</view>
</view>
</view>
(3)样式代码
/*音乐列表*/
.music_love{
display: flex;
margin-top: 20px;
margin-bottom: 10px;
margin-left: 20px;
}
.load{
width: 20px;
height: 20px;
}
.music_list{
display: flex;
flex-direction: row;
justify-content: center; /*水平居中*/
width: 100%;
height: 150px;
flex-wrap:wrap;
}
.music_div{
height: 150px;
width: 150px;
margin: 0 10px 30px 10px;
}
.music_photo{
height: 150px;
width: 150px;
border-radius: 10px;
}
.music_name{
font-size: 14px;
display: flex;
justify-content: center;
}
(4)js代码
const AudioContext = wx.createInnerAudioContext()
Page({
data: {
// 音乐列表
list: [
{
photo:'cloud://wxqm-6g3ssr0z4386c66a.7778-wxqm-6g3ssr0z4386c66a-1313733838/images/起风了.jpg',
title: '起风了',
file: 'cloud://wxqm-6g3ssr0z4386c66a.7778-wxqm-6g3ssr0z4386c66a-1313733838/音乐/起风了.mp3'
},
{
photo: 'cloud://wxqm-6g3ssr0z4386c66a.7778-wxqm-6g3ssr0z4386c66a-1313733838/images/盗将行.jpg',
title: '盗将行',
file: 'cloud://wxqm-6g3ssr0z4386c66a.7778-wxqm-6g3ssr0z4386c66a-1313733838/音乐/盗将行.mp3'
},
{
photo: 'cloud://wxqm-6g3ssr0z4386c66a.7778-wxqm-6g3ssr0z4386c66a-1313733838/images/星辰大海.jpg',
title: '海平面的星1',
file: 'cloud://wxqm-6g3ssr0z4386c66a.7778-wxqm-6g3ssr0z4386c66a-1313733838/音乐/海平面的星.mp3'
},
{
photo: 'cloud://wxqm-6g3ssr0z4386c66a.7778-wxqm-6g3ssr0z4386c66a-1313733838/images/星辰大海.jpg',
title: '海平面的星2',
}
],
// 当前播放音频的索引
current: null,
},
//点击播放与暂停
clickPlay(e) {
// 当前行数据
const row = e.currentTarget.dataset.item
// 当前索引
const index = e.currentTarget.dataset.index
// 暂停播放
if(this.data.current == index) {
// 暂停播放并重置索引
AudioContext.pause()
this.setData({current: null })
}
// 从头开始播放
else {
// 设置为自动播放(必须)
AudioContext.autoplay = true
// 设置播放链接
AudioContext.src = row.file
// 开始播放并设置索引
AudioContext.play()
this.setData({current: index })
}
}
})

不会就百度
导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
前言一般来说,前端根据后台返回code码展示对应内容只需要在前台判断code值展示对应的内容即可,但要是匹配的code码比较多或者多个页面用到时,为了便于后期维护,后台就会使用字典表让前端匹配,下面我将在微信小程序中通过wxs的方法实现这个操作。为什么要使用wxs?{{method(a,b)}}可以看到,上述代码是一个调用方法传值的操作,在vue中很常见,多用于数据之间的转换,但由于微信小程序诸多限制的原因,你并不能优雅的这样操作,可能有人会说,为什么不用if判断实现呢?但是if判断的局限性在于如果存在数据量过大时,大量重复性操作和if判断会让你的代码显得异常冗余。wxswxs相当于是一个独立
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
我的Rails应用程序中安装了carrierwave。但是,当用户上传多页pdf时,我只希望应用程序获取文档中的第一页并将其转换为jpeg。这可能吗?用什么命令?这是我的uploader。#encoding:utf-8classImageUploader[200,300]##defscale(width,height)##dosomething#end#Createdifferentversionsofyouruploadedfiles:version:thumbdoprocess:resize_to_fill=>[150,210]process:convert=>:jpgdefful
有没有办法跳过CSV文件的第一行,让第二行作为标题?我有一个CSV文件,第一行是日期,第二行是标题,所以我需要能够在遍历它时跳过第一行。我尝试使用slice但它会将CSV转换为数组,我真的很想将其读取为CSV,以便我可以利用header。 最佳答案 根据您的数据,您可以使用另一种方法和skip_lines-option此示例跳过所有以#开头的行require'csv'CSV.parse(DATA.read,:col_sep=>';',:headers=>true,:skip_lines=>/^#/#Markcomments!)do|
我的任务是从数组中选择最高和最低的数字。我想我很清楚我想做什么,但只是努力以正确的格式访问信息以满足通过标准。defhigh_and_low(numbers)array=numbers.split("").map!{|x|x.to_i}array.sort!{|a,b|ba}putsarray[0,-1]end数字可能看起来像"80917234100",要通过,我需要输出"9234"。我正在尝试putsarray.first.last,但一直无法弄明白。 最佳答案 有Array#minmax完全满足您需要的方法:array=[80,
或者好像我必须自己写方法?(保持DHA不变):ruby-1.9.2-p180:001>s='omega-3(DHA)'=>"omega-3(DHA)"ruby-1.9.2-p180:002>s.capitalize=>"Omega-3(dha)"ruby-1.9.2-p180:003>s.titleize=>"Omega3(Dha)"ruby-1.9.2-p180:005>s[0].upcase+s[1..-1]=>"Omega-3(DHA)" 最佳答案 如果我的回答只是垃圾,我深表歉意(我不做ruby)。但我相信我已经为您找到了答
我有这个字符串:auteur="comtedeFlandreetHainaut,Baudouin,Jacques,Thierry"我想删除第一个逗号之前的所有内容,即在这种情况下保留“Baudouin,Jacques,Thierry”试过这个:nom=auteur.gsub(/.*,/,'')但这会删除最后一个逗号之前的每个逗号,只保留“Thierry”。 最佳答案 auteur.partition(",").last#=>"Baudouin,Jacques,Thierry" 关于rub