12Reads资讯
企业管理第一媒体

玩转微信应用号,「小程序」开发实操指南第三弹

玩转微信应用号,「小程序」开发实操指南第三弹

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

环球管理网注:从9月21日晚间,微信官方向部分公众号发出了应用号的内测邀请开始,网友对于微信小程序的研究热潮就一直没有减弱过。

环球管理网作者博卡君对于“应用号的最终形态”与“怎样将一个「服务号」改造成为「小程序」”的话题上,有着自己的独特的理解。

在环球管理网发布的文章中,他想要用第三方工具的实例,来演示开发过程,感兴趣的朋友,不要错过第一弹中序言,第一、二章的内容,以及第二弹中第三、四章的内容。想必大家都关心应用号的最终形态到底是什么样子?怎样将一个「服务号」改造成为「小程序」?

我们暂时以一款简单的第三方工具的实例,来演示一下开发过程吧。(公司的项目保密还不能分享代码和截图。博卡君是边加班边偷偷给大家写教程。感谢「名片盒」团队提供他们的服务号来动这个手术。)

目前微信公布的工具和代码都不是正式版,随时有可能调整,大家先体验和学习为主吧。

第五章:微信小程序名片夹详情页开发

今天加了新干货!除了开发日志本身,还回答了一些朋友的问题。

闲话不多说,先看下「名片盒」详情页的效果图:

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

备注下大致需求:顶部背后是轮播图,二维码按钮弹出模态框信息、点击微信栏、点击存入手机,地址栏需要地图展示,名片分享也是模态框指引。

首先是轮播图,autoplay 自动播放,interval 轮播的时间,duration 切换速度,可以根据自己需求去添加。

Delete:是删除按钮,加载进来是隐藏的,需用户点轮播图进去后,轮播图全屏显示才出来。
noClickImg 与 ClickImg:切换全屏与非全屏轮播图,绑定了点击事件 changeClick 来切换,只是改变样式即可。
Block:图片列表。
Number_img:当前轮播 index(currentNumber),与图片 length 集合(cardnum)。
其中 currentNumber:

//轮播图发生改变时改变数字

//初始化数据

Data:{

currentNumber:1

}

slidechange:function(e){

var number = e.detail.current;

this.setData({

currentNumber:number+1

})

},

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

这里可以看到全屏状态下当关闭按钮被点击后 getBackStyle,把 changeClick 切换到 imgFullScrenn 待命。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

再次点击返回原样式,

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

切换后事件又走回到 getBackStyle 了,灵活运用。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

刷新下开发者工具可以看到具体效果如下:

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

详情页可以看到信息基本都是样式一样,可以使用微信提供的循环 block。

下面是详情页里面的个人信息数据,

如果有信息就显示出来,没有数据的不显示,这里使用

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

//中文信息

               var chinaMessage = res.card.groups[0].fields;

var personMessage= []

               for(var i = 0;i<chinaMessage.length;i++){

                personMessage.push(chinaMessage[i])

               }

               //为空或者null是不显示判断

              for(var k in personMessage){

                if(personMessage[k].value==null || personMessage[k].value==””){

                personMessage[k][“display”] = “none”;

                }else{

                personMessage[k][“display”] = “block”;

                }

               }

具体以 json 数据格式来处理,我们需要做的就是给它绑定 display 的值,然后我们调用即可。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

微信此版本的 setData 不支持异步更新数据,故而我们在发生真实网络数据请求时一定要在后面加上 forceUpdata(),强制触发视图渲染,否则会出现很多莫名其妙的 bug。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

这里说明下:如是服务器真实数据。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

可以看到会报错,可能是 js 的执行顺序,依次往下走,此时网络数据还在请求中。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

定义一个变量即可。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

当然这里的数据都是 push 上来的。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

以下是二维码弹出信息。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

这是弹出模态框二维码信息,布好局初始化是none状态。那里需要它直接绑定数据即可:

This.setData({

//模态框名字:”显示?隐藏”

})

方法是让它显示。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

需要用他的地方调用方法即可。(支持重复调用)

详情页公司位置地图直接调用微信提供的接口实现(群里的 demo 有实现方式)。

可以看下实现的效果:

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

下一章:微信(小程序)名片盒我的页面开发。

第六章:微信小程序「名片盒」「我」的页面开发

效果图与需求:

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

用户有多张名片,需要左右切换查看,往下切换是菜单按钮。

这里需求两处滑动,用到了微信提供给我们的滑动组件 swiper,并且进行了嵌套使用,第一层是名片展示与菜单按钮的上下滑动,第二层是名片展示的左右滑动(支持互相嵌套使用的,可以放心使用)。

Vertical 加上就是纵向滑动,去掉即是左右滑动。

整体结构如下所示:

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

点击事件绑定的是数据切换方式,因为需要支持多次点击切换。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

初始化数据是 nextSlide:

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

再看下 nextSlide 事件。currentSlide 是当前页面的 index,改变它即可完成切换效果,可以看上图初始化数据时设置了 cs 是 0。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

因而赋值当前 data.cs+1 即可,再把绑定点击事件 clickNext 切换成 nextSlideAgain。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

再看下 nextSlideAgain 事件,执行的减去 1 个索引,实现多次点击切换效果。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

具体效果可以看到。

点击个人名片进去编辑名片页面,由于需要带参,故而使用的是 wx.navgateTo。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

可以看下效果:

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

最后上点干货:

我们发出第一篇教程的时候有人就注意到这点了,怎么做真实数据交互,下面大家可以了解下。

首先进去是 MD5 加密,requster 交互层。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

怎么引用 MD5.js?当然是模块化 require,被引用的 js 不要忘记 module.exports 出来。

下面是 requester.js 引用 MD5.js。

ApplicationRoot 是服务器地址(配置服务器时在开发设置页面查看 AppID 和 AppSecret,配置服务器域名)。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

Require.js 这里 module.exports 是暴露方法出去。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

这时候在全局 app.js 里面引入 require.js 映射到全局 global,这个 global 是全局的。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

这时候那个页面需要那个页面就直接去接受吧,模块化是不是很好用?

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

可以完整的看下与后台做数据交互的一个请求实现方式如下:

图一是 requester.js 里面的封装。

图二是需要调用数据的页面渲染。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

 

大家有什么疑问可以多指点,会在下一章说明一些已知疑问。

应该有一些人喜欢 sublime 编辑器,有人问怎么切换高亮,在你的右下角直接切换成 html 即可。

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

下一章:微信小程序编辑名片页面开发(涉及要点:检索、排序、滑动及页面交互)。

 

(公司的项目保密还不能分享代码和截图。博卡君是边加班边偷偷给大家写教程。感谢「名片盒」团队提供他们的服务号来动这个手术,目前微信公布的工具和代码都不是正式版,随时有可能调整,大家先体验和学习为主吧。)

更多商业新知,关注环球管理网微信号:环球管理网(ID:taimeiti)

%e7%8e%a9%e8%bd%ac%e5%be%ae%e4%bf%a1%e5%ba%94%e7%94%a8%e5%8f%b7%ef%bc%8c%e3%80%8c%e5%b0%8f%e7%a8%8b%e5%ba%8f%e3%80%8d%e5%bc%80%e5%8f%91%e5%ae%9e%e6%93%8d%e6%8c%87%e5%8d%97%e7%ac%ac%e4%b8%89%e5%bc%b9

环球管理网微信二维码

文章来源:钛媒体
喜欢 (0)
分享到:

评论 抢沙发

登录后发表你的伟大言论!

立即登录