零秒收录-网站导航-网站大全-网站目录-网站分类-分类目录-网址导航-自动收录-秒收录-0msl.com
免费加入

微信小程序开发科普,让你1小时内从入门到上手|雷锋网公开课

文章编号:74时间:2023-12-02人气:


1月9日,微信小程序正式上线,互联网迎来了一次狂欢。

张小龙在上个月的公开演讲中表示,“小程序是一种比现有所有App更加灵活,更加唾手可得的一种形态,并将无处不在。”作为微信的一种新形态,小程序不仅扩大了微信的生态,也被看作是移动互联网的“革命者”。

任何文字解析都不如视频直播直观。

本次硬创公开课雷锋网请到了「开眼」视频的技术负责人为大家直播演示讲解如何开发一款视频微信小程序。「开眼」视频是一款短视频日报应用。由「开眼」视频团队制作微信小程序「开眼Eyepetizer」,作为为数不多的第一批上线的视频类小程序,受到了许多开发者的关注。

杨凯,「开眼」视频团队技术负责人。

曾供职于360,是360手机桌面创始团队成员之一,由他参与研发的该款桌面在国内第三方桌面市场很长时间排名第一。2014年加入豌豆荚,任豌豆荚TechLead,负责豌豆荚主程序开发,主要参与网络库优化,UI性能调优,通过代理缓存多媒体web页等工作。后加入「开眼」视频团队,作为技术负责人,负责技术开发、迭代工作。

下文为雷锋网整理的本次公开课直播分享中的要点。课后陈凯老师还分享了本次课程中完成的demo,关注雷锋网「唯物」公众号(ID:okweiwu),回复「小程序」即可获取链接。

今天主要讲一下微信小程序的开发,希望通过直播开发一个「开眼」视频的小程序,帮大家了解微信小程序的开发步骤、流程以及基本API的使用,内容主要包括以下几个方面:

开发一个可滚动列表,在这个列表的制作中,我们会熟悉微信小程序数据绑定的方法,以及怎么样发起一个网络请求;

处理点击事件,通过这一操作了解微信是怎样做事件绑定的;

将页面分享给好友,在好友对话里可以看到制作的微信小程序。

大家可以看到「开眼」视频小程序就是一个简单的列表,列表中的每一个画面其实都是一个可以点开播放的视频。进一步分析可以得知,在我们看到的每一个视频封面图上有一个icon,图下面是这个视频的文字介绍,标题以及分类。继续向下拉会发现,有多少视频,就会显示多个元素,并且是刷新不到头的。当我们点击一个视频封面或播放按钮 icon时,视频会开始播放,接着点击播放第二视频时,第一个视频就会自动停止播放,以上就是我们这堂课想要完成的事情。

步骤一:开发一个可滚动列表

由于时间关系,本次直播不会从零开始做这款小程序,会直接从微信的demo(小程序组件)中开始操作。

这是微信小程序官方给出的一个demo,可以看到有两个tab,今天的操作主要是在第二个tab的右边再添加一个tab,在第三个tab中实现一个跟「开眼」视频小程序一样的功能。

可以看到pages列表内容非常多,其内容主要是定义或声明一下在这个小程序中会用到一些界面。windows花括号里面的一些选项是帮你定义toolbar 上的颜色和信息,可以在这个页面看到demo中toolbar的颜色就在这里设置的。    

在tabbar里新加一个“开眼视频”文件夹,配置地址是刚刚写好的,抄过来就好,配制完成可以看到左边的页面已经出来了,虽然没有内容,但第三个tab的框架已经完成了。接下来是继续开发这个tab,我一般会直接从之前写好的代码里复制过来,然后进行一些简单的修改,演示一下变化过程。

注意要把相关文件名也改成“开眼视频”,否则会出现找不到布局文件的情况发生。

文件夹名称改完后,可以看到刚在第三个tab里添加的内容,已经可以显示出来了,这是一个微信小程序官方audio的页面,还需要对这个页面进行一些改动。

解释一下拷过来的这几行代码。第一代码是WX:for,前面WX是微信的简称,后面的for是说,它会在你的JS文件里找到一个名字叫videos的变量,该变量是一个数组,image这个便签会重复多次,直到和videos数组长度一致。

onready是第一次渲染完毕;

onhide是监听页面被隐藏。

如果有前端开发经验的话,可以看到跟window的很多页面很像.最常用的是onload,再仔细看一下这个方法的使用,在这个地方会尝试调用一个叫load的方法,并且把“我们自己”传进去,再传一个options。解释一下options,举个简单的例子,如果想调一个这样的配置,可以看到它的url=page/item/item,后面会带一个参数,参数名叫id值等于1,这个方法是在调用者那边使用的,被调用者也就是被唤起的页面怎么样读到这个id等于1的参数呢?是通过constid=options.id这个代码,options相当于页面间传递参数传递的一个工具。                                               

再看下load的方法,一行一行的来看,第一行pages和options是两个传参,第二行wx.ewqiest是发送一个API请求,注意,小程序官方文档里的对wx.ewqiest的定义是发送一个HTTPS请求,现在是本地操作,如果是线上环境的话,一定要写成HTTPS,否则会被拦截。完整示例写法如下:

data是url里的参数,也就是我们传进去的参数;

header是我们发送HTTPS请求的时候所带的header;

success当发送成功时,这个方法会被回掉;

fail当请求失败时,会回调这个方法,通知你失败的原因。

再回到开发页面,video:videoData是说把本地变量变为配置的参数,要注意的是微信小程序和Vue不同,小程序的数据不是双向绑定的,或者说不是默认双向绑定的,如果数据或数据结构发生了改变,想通知到video层级上,让video去刷新,必须要通过page中的setdata来实现。也就是说必须要这样写,videos才会生效(video=videoData的形式不不会生效)。

接着写css,微信的css语法和标准的css语法几乎没有区别,只是有一些子集不支持,这些在微信的开发文档里也有写,但是我们一般用到的都有。需要额外讲下rpx,这是微信小程序里自己定义的一个属性。这个属性的定义是说它认为所有屏幕的宽都是750个rps,也就是说,你拿到一台iphone5和一台iphone6S,它的宽都是750rpx。

但是会反过来算一个像素等于多少rpx,在iphone5里,假如说一个像素等于一个rpx的话,在iphone6里,两个像素等于一个rpx。这样做的好处是降低了UI的适配成本。

到这里本堂课的第一个目标已经完成,已经开发完成了一个可滚动的列表,并熟悉了数据绑定和网络请求。 

步骤二:处理点击事件

接下来要处理一个点击事件,点击事件触发之后,会在图片原来的位置展示一个视频播放器,并且播放图片所代表的视频。

先看一下微信小程序定义的的事件绑定过程是怎样的:

在组件中绑定一个事件处理函数,如bindtap,这个用户在点击组件的时候,就会出发到这个video的bindtap。

接下来在项目里定义一个绑定,把image的点击事件绑定在一个onTap的方法上。接下来要在JS里实现这个onTap的方法。

在JS里onload下面,重起一行接着写onTap:function(element),微信小程序官方文档中对element的定义中包涵了几个属性:

timeStamp(事件生成时的时间戳)

target(触发事件组件的一些属性值结合)

currentTarget(当前时间的一些属性值集合)

接下来要实现一个方法叫tap,它需要两个传参,第一个是page,第二个是element。page就是this,element就是刚刚定义的element,传进来后可以看到这个方法就被调用了。打一个log可以看到以下结果。

每点一次,下面都会出现一个tap,也就是说已经成功的把video上的事件传递到了JS的处理函数中。

第一段代码中的element就是刚刚传过来的被点击元素,currenttarget是当前被点击的目标…重点讲下videoUrl,videoUrl是刚在开发中定义的一个内容,不是系统自带的,看下它是从哪里来的

id我们用不到,先删去。上面的写法是-video-url这个地方写成videoUrl略有不同。原因是微信小程序会帮开发者们做一件事情,把data和后面的横线去掉,然后自动驼峰。

举一个简单的例子,如果在页面加载完后,设一个timer定时器,每五秒中告知当前列表中展示的第一个元素是什么,这个在小程序里做不到。因为没有办法主动拿到当前列表这个元素,也就没办法拿到列表上展示的内容,只有一种办法,用户手动触发了一个事件时,开发者才可能拿到这个事件相关的(并不是所有的)一些信息。

为了取到当前被点击的这个item上面绑定的video的播放地址,要通过这种方式来实现,而不能通过其它的方式来实现,这个确实有点绕。

这个思想在微信小程序里可以说是最重要的思想,也就是DOM模型几乎完全不能用。这个可能给很多前端开发带来非常大的困扰。

步骤三:在列表指定位置展示视频播放器

对上面三个变量做个定义:

currentUrl开始时为空,也就是说在开始时,视频播放器里是没有地址的。

再来看一下tap事件,直接复制过来三行。前面page.setdata是给下面的data进行一种更新,这是一种特殊的复制方法。offsettop这个属性会告诉你当前被点击的元素,相对它的父节点向下挪了多少位置。currentUrl,就是刚才拿到的url。后面的videodisply:block,是指现在可以显示出视频元素了。

先看一下微信小程序的的定义:

微信定义一个方法叫creatVideoContext,意思是说在传入一个videoid时,它会把当前videoid的video元素与系统的播放器进行绑定,也就是完成这个操作后的你添加的这个元素就可以播了。                                  

微信官方共提供了play、pause、seek、sendDanmu四种方法。

看下代码,可以看到creatVideoContext,传入的参数叫video,就是刚才说布局文件里定义的一个id等于video。                              

可以发现视频已经开始播了,划动一下列表,视频跟着这个列表在走,第二个视频显示出来后,并没有播放。

这是我自己发现的微信小程序里bug,点击第二个视频时不能自动播放,手动点控制条的时候有可能触发播放,这是小程序系统的bug。但有方法可以绕过:在原来的方法上加两句话,就是设一个timeout,也就是将这个事件延迟一段时间再出发,点击事件结束之后500毫秒再去触发视频的播放。

微信官方推荐用自带的IDE来做开发。但是我平时还会做其它平台的开发,所以会比较倾向统一用intellij,写好代码后只在微信小程序里做调试。绕过bug后可以看到滑视频随着列表滚动可以自动播放了。这样我们基本上完成第二个目标,在列表中播放视频,而且在滚动列表时只有一个视频在播放。

步骤四:将页面分享给好友

在微信小程序官方文档的最后,可以看到有一个关于 onShareAppMessage的说明,意思是如果你在页面里定义了这个函数,这个函数叫onShareAppMessage,右上角会出现分享按钮。

可以看到,不定义这个函数时,点击右上角会出现“当前页面未设置分享”的提示。

接下来写这个代码,直接把官方文档抄过来即可,要注意,设置页面元素时,一定要在page后的括号中写,也就是说,一定要在page页面里设置有关这个页面的系统回调。保存后回到IDE,点击右上角,会出现分享按钮,可以自定义分享标题与自定义分享描述。

看一下代码也是这么写的:自定义标题、自定义描述、自定义path。自定义path是最外层还有一个APP.gaisen,里面定义了所有的页面地址,把页面地址可以写过来后我们今天的任务就完成了。



相关标签: 微信小程序小程序开发杨凯小程序微信小程序开发微信小程序开发文档

上一篇:中邮通信Hinova12SE发布骁龙600系卖到2199

下一篇:雅柏威士忌多款单品价格大跌,泥煤顶流也不香

内容声明:

1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违法信息,如您发现违法内容,请联系我们进行举报处理!
4、本文地址:http://www.0msl.com/a/74.html,复制请保留版权链接!


温馨小提示:在您的网站做上本站友情链接,访问一次即可自动收录并自动排在本站第一位!
随机文章
梦见蛆虫梦见蛆虫什么意思

梦见蛆虫梦见蛆虫什么意思

一般来说,梦见蛆是发财的预兆,表示最近你的财运很好。如果梦见白蛆,可能表示目前你正做的事情将会成功,并且家庭会很幸福。如果梦见蛆虫满地爬,说明你的婚姻可能会遭受破坏,建议你要提防第三者的出现。

周公解梦 2024-05-02 12:45:31

华为Pura70Ultra拆解结果出炉:国产率超过90%_热点资讯

华为Pura70Ultra拆解结果出炉:国产率超过90%_热点资讯

近日,市场研究公司FomalhautTechnoSolutions发布了华为Pura70系列的拆解报告。 拆解报告指出,华为Pura70系列零部件的国产化率极高,仅有Pura70Ultra的主传感器来自索尼,其余包括Pura70、Pura70Pro、Pura70Pro+等机型的处理器、面板、机壳、电池、镜头、散热、声学元件等零组件,几乎全面国产化。 换言之,除去高端传感器外,目前Pura70系列已经做到了几乎所有零部件的国产化,整体国产率超过90%。 其零部件的主要供应商...

今日头条 2024-05-01 20:30:34

vivoX100s谍照曝光:换用直角边框设计_热点资讯

vivoX100s谍照曝光:换用直角边框设计_热点资讯

日前,根据GSMArena的消息,vivo将在5月推出新机vivoX100s,并放出了该机器的谍照。 从照片来看,vivoX100s在设计语言上与此前的vivoX100系列基本保持一致,但边框调整为了带有纹理饰面的直角设计,配合微曲的2.5D玻璃后盖。 这意味着,该机器很可能不会和vivoX100系列一样采用曲面屏,而是使用直屏或微曲屏。 其他方面,根据现有消息,vivoX100s将有标准版、Pro与Ultra三个版本,其中标准版将沿用X100的影像方案,包括15mm超广角、70mm潜...

今日头条 2024-04-27 21:53:47

大姐先被五步蛇咬后被蜱虫叮险丧命专家提醒户外活动小心蛇虫

大姐先被五步蛇咬后被蜱虫叮险丧命专家提醒户外活动小心蛇虫

近日,一位大姐在户外活动时先后遭遇了五步蛇咬伤和蜱虫叮咬的惊险经历,几乎危及生命,幸运的是,大姐被及时送往医院,并得到了专业的治疗,医生通过为她注射五步蛇血清和处理蜱虫叮咬,成功挽救了她的生命,然而,这一事件仍然给我们敲响了警钟。

今日头条 2024-04-20 21:51:19

梦到约定预示着什么梦到约定是什么意思

梦到约定预示着什么梦到约定是什么意思

每一个人都会做梦,而且有的时候梦中的场景,让我们感觉很熟悉,好像自己经历过。有人说梦具有预言性,甚至能够预知未来,也有人说梦境是内心欲望的体现。那么,梦到约定预示着什么?梦里约定代表什么意思?梦到约定这个梦是好是坏?请随小编往下看,哪一种约定梦境解析最能说服你。

周公解梦 2024-04-17 21:21:28

武平:昂首阔步迈入“高铁时代”

武平:昂首阔步迈入“高铁时代”

武平:昂首阔步迈入“高铁时代”

今日头条 2024-04-14 09:23:00

森林之王三大生肖森林之王12生肖指哪个

森林之王三大生肖森林之王12生肖指哪个

森林之王三大生肖分别是虎生肖、羊生肖和猴生肖。虎生肖作为森林之王,有着强大的力量和威严,他们喜欢保护朋友和家人,永不背叛。羊生肖作为草原之君,有着温柔善良的性格和宽广的胸怀,他们喜欢结交新朋友,重视友谊。猴生肖作为灵长类动物之王,有着聪明、机智和灵活的性格特点,他们喜欢追求新鲜感和刺激感,重视利益。

十二生肖 2024-04-14 08:15:52

梦见服装厂什么意思梦见服装厂代表什么预兆

梦见服装厂什么意思梦见服装厂代表什么预兆

每一个人都会做梦,而且有的时候梦中的场景,让我们感觉很熟悉,好像自己经历过。有人说梦具有预言性,甚至能够预知未来,也有人说梦境是内心欲望的体现。那么,梦到服装厂预示着什么?梦里服装厂代表什么意思?梦到服装厂这个梦是好是坏?请随小编往下看,哪一种服装厂梦境解析最能说服你。

周公解梦 2024-02-04 09:32:03

梦见红色的床是什么意思梦见红色的床是什么征兆

梦见红色的床是什么意思梦见红色的床是什么征兆

每一个人都会做梦,而且有的时候梦中的场景,让我们感觉很熟悉,好像自己经历过。有人说梦具有预言性,甚至能够预知未来,也有人说梦境是内心欲望的体现。那么,梦到红色的床预示着什么?梦里红色的床代表什么意思?梦到红色的床这个梦是好是坏?请随小编往下看,哪一种红色的床梦境解析最能说服你。

周公解梦 2024-02-04 09:27:43

梦见在地道里避难是什么意思梦见在地道里避难是什么预兆

梦见在地道里避难是什么意思梦见在地道里避难是什么预兆

每一个人都会做梦,而且有的时候梦中的场景,让我们感觉很熟悉,好像自己经历过。有人说梦具有预言性,甚至能够预知未来,也有人说梦境是内心欲望的体现。那么,梦到在地道里避难预示着什么?梦里在地道里避难代表什么意思?梦到在地道里避难这个梦是好是坏?请随小编往下看,哪一种在地道里避难梦境解析最能说服你。

周公解梦 2024-02-04 09:18:29

梦到电话亭意味着什么梦到电话亭是什么意思

梦到电话亭意味着什么梦到电话亭是什么意思

导语:日有所思夜有所梦,做梦是一件非常正常的现象,有人说梦具有预言性,甚至能够预知未来,也有人说梦境是内心欲望的体现。那么,梦到电话亭预示着什么?梦里电话亭代表什么意思?梦到电话亭这个梦是好是坏?请随小编往下看,哪一种电话亭梦境解析最能说服你。

周公解梦 2024-01-27 07:05:22

梦到种萝卜代表什么梦到种萝卜好吗

梦到种萝卜代表什么梦到种萝卜好吗

每一个人都会做梦,而且有的时候梦中的场景,让我们感觉很熟悉,好像自己经历过。有人说梦具有预言性,甚至能够预知未来,也有人说梦境是内心欲望的体现。那么,梦到种萝卜预示着什么?梦里种萝卜代表什么意思?梦到种萝卜这个梦是好是坏?请随小编往下看,哪一种种萝卜梦境解析最能说服你。

周公解梦 2024-01-10 09:30:59