项目预览图

小程序?大改变?

之前就被朋友安利使用小程序,最近接近了小程序,发现了它竟然带来了一场“大革命”。

简单说,它就是一个可以实现之前只能是原生态APP可以实现的效果和功能。比如说,一些酷炫的页面与转场,一些可以直接和手机硬件交互的功能,录音啊,拍视频啊,调用手机的重力感应啊,GPS啊等等。

专业点来说,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。

小程序的轻量化带来了app所不具有的许多优点,它同时也在向着我们的日常app“宣战”,这场战争花落谁家,就让我们拭目以待吧。

制作简单?

小程序作为一颗冉冉升起的新星,他之所以能被大家接受,不仅仅是因为他的轻量化,脱去了app的繁重外壳,还因为他很容易上手。在经过几天时间去熟悉小程序的构建和说明文档等,我这种初学者也能慢慢地摸到小程序的门槛,进入小程序这个新世界,完成自己的构思。

我们能做什么?

作为一个二次元爱好者(别看着我,我当然不是死宅(ノ=Д=)ノ┻━┻),使用最多的app当然就是我大b站了(哔哩哔哩 (゜-゜)つロ 干杯~-bilibili),所以应着自己的爱好,尝试着制作了一个哔哩哔哩的小程序,途中简直是经历了千难万险,最后因为能力问题只是制作了一个半成品,尚有很多功能尚未实现,但是我是有梦想的人,之后还是要多学习,将它慢慢完善,这次就当交流,大家互相学习(。ò ∀ ó。)

项目工具及文档

  1. 微信web开发者工具: 微信小程序官网微信开发的小程序编辑软件,下载安装即可使用;
  2. 开发文档: 微信小程序宝典秘籍 这里面详细的介绍了小程序的各种信息,包括组件、框架、API等等,有很多值得我们去阅读的信息;
  3. 图标库: Iconfont-阿里巴巴矢量图标库 这个是网站简直是神器,什么图标都能找到,我很喜欢。

目录结构

├── app.js
├── app.json
├── app.wxss
├── utils
│   └── util.js
├── pages
│   ├── common
│   │   ├── header.wxml
│   │   └── item.wxml
│   ├── index
│   │   ├── index.js
│   │   ├── index.wxml
│   │   └── index.wxss
│   ├── selectColor
│   │   ├── selectColor.js
│   │   ├── selectColor.wxml
│   │   └── selectColor.wxss
│   ├── play
│   │   ├── play.js
│   │   ├── play.json
│   │   ├── play.wxml
│   │   └── play.wxss
└── resources└── images

页面注册

app.json

"pages":["pages/index/index","pages/play/play",    "pages/selectColor/selectColor"],

项目功能

已实现功能:

  • 广告轮播图
  • 视频播放
  • 弹幕功能
  • 弹窗功能
  • 分享功能

未实现功能:

这个有点多。。。毕竟是我大B站,目前只实现了一些力所能及的功能,以后会完善的。

部分功能实现

顶部导航栏

<scroll-view class="scroll-view_H" scroll-x="true" style="width: 100%"><text wx:for="{{section}}" wx:key="id" id="{{item.id}}" catchtap="handleTap"class="nav-name {{item.id == currentId ? 'nav-hover' : ''}}"style=" padding-right:{{topdistance}}px;padding-left:{{topdistance}}px">{{item.name}}</text></scroll-view></view></view><block wx:if="{{currentId == 1001}}"><view class="slider-wrapper"><swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}"interval="{{interval}}" duration="{{duration}}" indicator-active-color="#EA6CAF"><block wx:for="{{imgUrls}}"><swiper-item><navigator url="{{item.link}}" hover-class="navigator-hover"><image src="{{item.url}}" class="slide-image" width="355" height="150" /></navigator></swiper-item></block></swiper></view>
onLoad: function (options) {// 页面初始化 options为页面跳转所带来的参数this.setTopDistance();this.setData({stagePoint: util.stagePoint()})if (this.data.currentId == 1001) {this.Page();}else if (this.data.currentId == 1004) {this.channelPage();}else if (this.data.currentId == 1003) {this.livePage();}}

顶部导航栏实际就是利用scroll-view控件,给他绑定当前页面的id,当触发点击事件时,加载与该id匹配的信息。要注意的是一开始要给currentId一个页面的值,不然无法显示出来。

弹幕功能

小程序本身具备弹幕功能,阅读api,对着原版代码进行了一些改变,实现了弹幕自己选择颜色,并且将弹幕和弹出层结合在一起使用。

Page({inputValue: '',data: {isRandomColor: true,src: '',numberColor: "#ff0000",danmuList: [{text: '这波不亏呀',color: '#ff0000',time: 1}, {text: '大神666',color: '#00ff00',time: 2},{text: '今生无悔入fate',color: '#D9D919',time: 3},{text: '吾王赛高(。ò ∀ ó。)',color: '#C0D9D9',time: 4}],showModalStatus: false},powerDrawer: function (e) {var currentStatu = e.currentTarget.dataset.statu;this.util(currentStatu)},util: function (currentStatu) {/* 动画部分 */// 第1步:创建动画实例 var animation = wx.createAnimation({duration: 200, //动画时长 timingFunction: "linear", //线性 delay: 0 //0则不延迟 });// 第2步:这个动画实例赋给当前的动画实例 this.animation = animation;// 第3步:执行第一组动画:Y轴偏移240px后(盒子高度是240px),停 animation.translateY(240).step();// 第4步:导出动画对象赋给数据对象储存 this.setData({animationData: animation.export()})// 第5步:设置定时器到指定时候后,执行第二组动画 setTimeout(function () {// 执行第二组动画:Y轴不偏移,停 animation.translateY(0).step()// 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象 this.setData({animationData: animation})//关闭抽屉 if (currentStatu == "close") {wx.createVideoContext('myVideo').play();this.setData({showModalStatus: false,});}}.bind(this), 200)// 显示抽屉 if (currentStatu == "open") {wx.createVideoContext('myVideo').pause();this.setData({showModalStatus: true});}},onLoad: function onLoad() {var _this = this;wx.getSystemInfo({success: function success(res) {// video标签默认宽度300px、高度225pxvar windowWidth = res.windowWidth;var videoHeight = 225 / 300 * windowWidth;_this.setData({videoWidth: windowWidth,videoHeight: videoHeight});}});},onReady: function onReady(res) {this.videoContext = wx.createVideoContext('myVideo');},onShow: function onShow() {var _this = this;wx.getStorage({key: 'numberColor',success: function success(res) {_this.setData({numberColor: res.data});}});},bindInputBlur: function (e) {this.inputValue = e.detail.value;}}
})

参考了开源代码后,发现弹幕其实就是对字进行动画效果,沿着y轴滚动出现,利用计时器不停播放多组动画,抽屉效果也就是对遮罩层的利用,然后利用动画效果,将弹出栏显示出来,在制作时,记得让视频暂停,这样才能给用户一个好的体验,毕竟没有人想错过一部精彩的视频( ̄y▽ ̄)~

分享功能

其实也是对api的一种利用,(这里强调一下,api真的很重要,喜欢大家好好阅读),微信小程序也是前段时间才可以通过按钮实现分享功能。

onShareAppMessage: function onShareAppMessage() {wx.createVideoContext('myVideo').pause();return {title: '【Fate全系列】英灵乱斗: 夺回未来的战争「Grand Order」',desc: '【Fate全系列】英灵乱斗: 夺回未来的战争「Grand Order」',path: '/pages/play/play',success: function (res) {// 转发成功wx.showToast({title: '成功',icon: 'succes',duration: 1000,mask: true})wx.createVideoContext('myVideo').play();       },fail: function (res) {// 转发失败wx.showToast({title: '失败',icon: 'fail',duration: 1000,mask: true})wx.createVideoContext('myVideo').play();}}}

这是我的写法,下面给出api内容,可以根据不同人的想法进行修改。

分享api格式

onShareAppMessage: function () {return {title: '自定义分享标题',path: '/page/user?id=123'}}

但是这个id很多人不明白是什么id,之前我也不明白,后来发现这个id就是你要分享的这篇文章的id,但是一定要注意异步与同步的问题。

踩过的坑<(`^´)>

1.微信小程序的编译包是不能超过2M的,一开始放了一大堆的本地图片,结果打包的时候,告诉我太大了,无奈下想办法将图片上传到云端,将图片链接化;

2.再次强调,小程序api很重要,里面包含了很多知识,我的弹幕功能也是后来查找时发现了api,这可以让我们少走很多弯路;

3.重要的事情说三遍,页面内跳转不能超过5级,页面内跳转不能超过5级,页面内跳转不能超过5级。_(:з」∠)_

项目地址

http://git.oschina.net/djcx/XiaoChengXuShiZhan--FangbilibilXiaoChengXu

最后要说的话

现在的自己技术还是有些不太成熟,接触小程序不久,还有很多需要学习的地方,不能很好的重现哔哩哔哩的功能,不过作为一个学生,还有很长的学习之路要走。

最后希望能得到各位在求学路上同行的小伙伴的小星星:star:,谢谢(´∀`)♡

小程序实战--仿bilibil(哔哩哔哩)小程序相关推荐

  1. 微信小程序实战-仿盒马鲜生

    盒马鲜生是阿里巴巴对线下超市完全重构的新零售业态,热度十分 项目功能 * 用户信息注册 * 首页几个轮播和界面交互 * 分类商品管理购买 * 购物车界面交互及其操作 * 个人信息界面 小程序设计过程 ...

  2. 微信小程序之仿淘宝分类入口 —— 微信小程序实战商城系列(2)

    分类入口,已经成为了商城项目必须的布局之一,这里以仿照淘宝的分类入口来做案例 下图红框部分,就是本文重点讲解部分,另外本文并没有写点击某个入口跳转页面. 如需学习页面跳转的同学,可以参考此文 微信小程 ...

  3. 21小时精通微信小程序开发(仿猫眼电影App、微信小程序问答)

    21小时精通微信小程序开发(仿猫眼电影App.微信小程序问答) 网盘地址:https://pan.baidu.com/s/1GTpPX4A1U-w_3i6k7lLztQ 密码: 5pcz 备用地址(腾 ...

  4. android微信下拉出现小程序,Android仿微信首页下拉显示小程序列表

    花点时间重新熟悉一下AndroidUI方面的东西,把古董PullToRefreshView又撸了一遍,技术这种东西真是忘得快啊...在基础上新增一点东西,粗糙地实现了仿微信首页下拉显示小程序列表的样式 ...

  5. 微信小程序实战 《跨时空》旅行日记小程序

    题外话 我喜欢旅行,在正文开始前,先向有共同兴趣的朋友推荐一个自己每次出行前必装的 APP -- 面包旅行.我主要用它来写旅行日志,每天行程结束,我都会将当天拍的照片上传并做简单的文字记录,记录是回顾 ...

  6. 微信小程序实战--仿知识星球(一)

    发现一款好好看的app 名字叫做知识星球 (虽然整款app除了绿色就还是绿色 但是还是好看啊) 不多扯 我开始说我的项目吧 项目地址: AndIMissU/Stars 项目视频: 项目环境和资源需求网 ...

  7. 小程序实战 -- 仿网易蜗牛读书

    最近一段时间在学习怎么写小程序,然后自己利用课外时间,也撸了一个.一直都很喜欢网易蜗牛读书这款App,对于喜爱的事物总是情不自禁的,于是就仿照网易蜗牛读书的App简单做了这款小程序. 项目地址:杳杳飞 ...

  8. python爬取微信小程序(实战篇)_爬虫爬取微信小程序

    之前打算做个微信小程序的社区,所以写了爬虫去爬取微信小程序,后面发现做微信小程序没有前途,就把原来的项目废弃了做了现在的网站观点,不过代码放着也是放着,还不如公开让大家用,所以我把代码贴出来,有需要的 ...

  9. 【小程序实战学习(一)】购物小程序-首页

    一.搭建目录结构 目录名 作用 styles 公共样式 components 组件 lib 第三方库 utils 自己的帮助库 request 自己的接口帮助 二.引入字体和图标 阿里巴巴字体图标网 ...

最新文章

  1. 德尔塔克戎,新冠“双毒合一”变体首次证实
  2. matlab的fft函数写法,matlab的fft函数的使用例子
  3. Unable to execute dex: Multiple dex files define Lcom/kenai/jbosh/AbstractAttr
  4. JCheckbox全选
  5. jzoj3347,bzoj3257-[NOI2013模拟]树的难题【树形dp】
  6. CUBA平台–新的Java企业应用程序框架
  7. 转载 Net多线程编程—System.Threading.Tasks.Parallel
  8. 了解如何在20分钟内创建您的第一个Angular应用
  9. 计算机网络的非性能特征PPT,计算机网络概述课件课件.ppt
  10. 微软全球执行副总裁沈向洋离职;马云回应双十一数据作假;GitHub 官方终于出 App 了! | 极客头条...
  11. 数据切分——Mysql分区表的建立及性能分析
  12. python数值运算代码_Python数值
  13. 6.解决AXIOS的跨域问题
  14. MySQL笔试题附加自己写的答案
  15. 杨中科老师-C语言也能干大事链接
  16. (转载)BitCometTracker使用指南
  17. 好书推荐《月亮与六便士》
  18. 计算机绿屏如何解决,电脑开机绿屏怎么解决_win10电脑开机就绿屏的解决方法
  19. 微软良心伙伴,OneDrive首发支持iOS11的文件App
  20. 数字图像学笔记——7. 噪音生成(泊松噪音生成方法)

热门文章

  1. 苹果iWatch确实存在 或于第四季度发布
  2. MySQL 主从时间字段相差1秒深度揭密
  3. 360度全景图像展开MATLAB程序
  4. 量化交易交易系统主要包括哪些内容?
  5. 第五届硬见开发者论坛,邀您共话智能汽车硬核技术
  6. new date()标准时间转yyyy-mm-dd hh:mm 24小时制
  7. 计算机技术在钢结构制作中应用,计算机在大型钢结构整体安装中控制技术及应用.doc...
  8. 广发计算机首席研究员,2012年新财富行问业最佳分析师资料库.doc
  9. JavaWeb学习——JSTL学习笔记
  10. 三菱FR-A800系列变频器的控制方法的说明