微信小程序<每日查看>开发总结
之前一直在做iOS平台的App和SDK开发,发现微信小程序还蛮有意思的,花了将近几天的时间,从看书学习到萌发想法,最后开发出一款小应用,现在花点时间总结一番!作为自我勉励和后续继续学习动力~
先上效果图:

小程序码如下,用户打开微信使用扫一扫,即可启动; 或者在小程序列表里搜索关键字"DCL每日查看",即可搜索到,启动即可!

1.0.2 新版本

附上最近开发的另一个小程序:

功能和交互简单描述:
针对微信使用用户每天的零碎时间来进行天气,新闻要点等查看,免去了打开其他App来查看,同时还可以跟图灵小机器人进行各种话题闲聊来打发时间,针对每一天,对历史上的今天发生的大事进行随机展示,告知用户时间的重要性,珍惜当下~
技术要点:
1.基本包含了基本的微信小程序开发所需要使用的技术要点; 一些代码可复制用来开发其他微信小程序!
2.自定义组件开发,小程序提供的组件和API使用
3.第三方小程序组件的使用
4.一些第三方js库如何使用
5.界面布局,样式和动画
6.第三方网页数据解析和api服务数据请求,解析和展示
一些要点详解:
自定义组件开发,小程序提供的组件和API使用
组件:
view: 用来布局的主要组件,可用来控制子项伸缩布局,有点类似RN的View和前端开发的DIV;
icon: 小程序提供的默认图标,不需要开发者额外开发; 这里页面的今日要点子项点击弹出标题详情页面后,进行返回用;可以控制颜色跟背景色相融;
text:文字展示用组件;
navigator: 导航组件,这里页面的今日要点子项用来点击弹出新页面用的;
其他组件使用参考官方文档: https://developers.weixin.qq.com/miniprogram/dev/component/
组件使用总结:查看官方文档,看提供哪些特性,跟自己的项目功能有没有结合的地方,没有的话看下有没有第三方提供开发好的组件; 注意: 版本兼容,微信App版本和对应的基础库版本!我这里使用到了一个第三方组件库:WeUI, 项目里用到了searchbar和loading组件,对样式控制和事件触发进行修改和增加来适应功能需要,把这两个组件放入自己的自定义组件库里,进行改造

如何建立自定义组件,参考官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/
api:
网络
wx.request: 基本的GET和POST请求, 必须是HTTPS请求,建议在开发功能初期把所有即将用到的域名在小程序后台都进行配置,因为一个月只有5次修改机会! 在项目里主要用来(第三方网页数据和api服务)数据请求,拿到结果!这里跟移动平台原生开发有点不一样的是,不需要库来解析对应的结构,这里返回的数据就已经是一个对象了,开发者按照结构进行点语法就能拿到对应的结果了
参考官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/network-request.html#wxrequestobject
数据缓存
wx.setStorage,wx.getStorage: 用来缓存一些key-value数据的,在项目里用来缓存历史的今天数据集,当天有网络的时候,只需解析一次网页数据,拿到结果,缓存下来,下次不需要再次解析网页数据了,我这里选用的网页,下发数据量比较大,每次进入小程序都去解析,对数据请求量会大,所以需要进行缓存;
参考官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/data.html#wxsetstorageobject
位置
wx.getLocation: 用来获取用户位置经纬度的,项目里需要获取到实际的位置,比如城市名称,为了简化开发,我这里用了高德地图的微信小程序SDK,按照官方文档加入项目即可,注意对包体增量大小进行考量,现在是程序包体不能超过4M

第三方小程序组件的使用
1.目前发布上线的小程序功能有限,UI和UE设计的还有些瑕疵,暂时用到了WeUI
一些第三方js库如何使用
1 前端开发使用的一些第三方JS库,如果涉及到DOM和BOM操作,是不能直接拿来用的, 可以使用的库,建议用压缩后的js库,这样对包体体积增量会有所缓解; 这里项目使用的网页数据解析库改造自: https://github.com/Jxck/html2json ,来源于: https://github.com/icindy/wxParse; Github上有很多"轮子"可以用,时间不足的开发者,可以按需选用配合自己的创意,做出好用好玩的小程序!
使用第三方js库,有很多风险,开发者最好有相当的JS语言基础,还要学习一些ES6语法,这样在用第三方JS库才有一点的心里有数,后续也可以自己开发出供别人使用的“轮子”
推荐一本介绍JavaScript的书:

ES6新语法:http://es6.ruanyifeng.com
界面布局,样式和动画
这三块很大一部分都是前端开发的东西,可以直接拿过来用
看的网站资料: https://www.w3cschool.cn
css书籍是:CSS揭秘
小程序开发官方文档: https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/
项目使用总结:
这里的动画控制比较简单,主要是两个交互,第一个是点击今日要点下的某一条目,上方绿色进度条加载到完成后,标题列表视图渐渐从透明到不透明; 第二个是点击底部搜索框,输入文字后完成,当图灵小机器人有回复的时候,根据文字内容生成一个视图,从搜索框顶部向上伸缩弹出,动画代码都用CSS来写,定义在.wxss文件里,在触发时机通过数据绑定来修改这个视图的样式
主要代码如下
//默认样式
.reviewText
{ text-overflow: ellipsis;
word-break: break-all;
-moz-box-orient: vertical;
overflow: hidden;
/* //white-space: nowrap; */
max-height:;
font-size: 14px;
position:fixed;
bottom:50px;
left:0px;
width:98%;
height:auto;
text-align: left;
padding-top: 3px;
padding-right:12px;
padding-left: 3px;
z-index:;
} //弹出动画时候的样式
.displayReviewText
{
border-left: 7px solid #343338;
background-color:burlywood;
overflow: hidden;
transition: max-height .55s; max-height: 2000px;
} //文字自动隐藏时候的样式
.hideReviewText
{
overflow: hidden;
transition: max-height .35s;
background-color:transparent;
/*
transition: 0 .75s; */
max-height: 0px;
} //文字自动隐藏时候的样式
.hideReviewTextColor
{
transition: background-color .35s;
}
<view class='reviewText {{displayReviewText}} {{hideReviewText}} {{hideReviewTextColor}}'>
<text style='width:90%;'>{{tulinText}}</text>
</view>
第三方网页数据解析和api服务数据请求,解析和展示
由于目前精力有限,没有自有数据的收集,有一些功能只能借助互联网上的一些数据(如果涉及到侵权,本人会下架该小程序,做此声明),目前使用到的技术是爬取一些静态网站内容,分析其html结构,解析出需要的数据,做小程序端逻辑处理,通过百度和google,用到的是html2json,参照其Github上的README基本可以知晓其使用,难点在于对html中DOM树结构的理解和预判,这段逻辑需要做很多容错处理!除了爬取网页数据外,还可以查找一些免费的API服务接口,比如阿凡达,京东云等,这里注意先测试下对应的Api服务域名是否符合小程序的请求规范,不然在小程序后台配置request请求域名的时候白白浪费一次配置机会,因为现在一个月只能配置5次,所以建议第一次修改的时候,把所有需要用到的域名都配置上,减少后续配置次数
项目使用总结:如下图所示,这里去爬取了一个网站的数据,解析出需要的列表数据,然后做随机展示,下拉刷新新一条随机展示

再比如如下图所示,这里使用了高德地图小程序SDK和京东云的天气API接口,使用并不复杂,只是会花费一些时间
这里的背景颜色会根据温度不同作不同的颜色填充
该小程序当前正在开发新版本,敬请期待~ 等后续功能完善后,会把源码发布到Github,一起交流技术实现!
[另: 该小程序对应的ReactNative版本也基本开发完成,正在提交Appstore审核! 功能基本一致,其中的代码重用率达到了90%,剩下的10%只是UI实现技术了,ReactNative使用的JSX跟传统的CSS有些许差别,其中有一些好用的部分还舍弃了,额外增加了一些新功能!]
博客园的各位朋友,如果对该小程序有什么建议,欢迎留言!
附上另一个小程序

微信小程序<每日查看>开发总结的更多相关文章
- 《腾讯游戏人生》微信小程序开发总结
为打通游戏人生擂台赛与线下商家的O2O衔接,同时响应时下日臻火热的微信小程序,项目团队决定也开发一款针对性的微信小程序,以此方便商家在我们平台入驻并进行擂台赛事的创建和奖励的核销,进一步推广擂台赛的玩 ...
- 微信小程序开发入门教程
做任何程序开发要首先找到其官方文档,微信小程序目前还在邀请内测阶段,目前官方放出了部分开发文档,经过笔者一天的查看和尝试,感觉文档并不全面,但是通过这些文档已经能够看出其大概面貌了.闲话不多说,我们先 ...
- 微信小程序开发 -- 01
微信小程序开发基础 -- 开发前的准备 缘由 1月9日张小龙微信小程序正式上线,因为微信,所以小程序从诞生开始就头戴巨大的光环,很多的团队,公司以及开发的个体都眼巴巴的盯着这个小程序.而那个时候我却在 ...
- 微信小程序开发 (资料汇总,谁还没被坑过?希望助你绕过一些坑)
最近帮人家做一个微信小程序,刚好想熟悉一下.由于牵扯到多用户使用系统,以及数据共享,所以自然架构选择了,客户端和服务器的方式. 后台服务器是windows server,后台程序是.Net WebA ...
- 零基础入门微信小程序开发
注:本文来源于:<零基础入门微信小程序开发> 课程介绍 本达人课是一个系列入门教程,目标是从 0 开始带领读者上手实战,课程以微信小程序的核心概念作为主线,介绍配置文件.页面样式文件.Ja ...
- 微信小程序开发平台新功能「云开发」快速上手体验
微信小程序开发平台刚刚开放了一个全新的功能:云开发. 简单地说就是将开发人员搭建微信小程序后端的成本再次降低,此文刚好在此产品公测时,来快速上手看看都有哪些方便开发者的功能更新. 微信小程序一直保持一 ...
- 微信小程序开发——开发者工具中素材管理功能使用的注意事项
为什么使用“素材管理”: 微信小程序环境中本地资源图片是无法通过 WXSS 获取的,可以使用网络图片,或者 base64,或者使用<image/>标签.. 当然,如果不想这么麻烦,你可能会 ...
- 微信小程序开发学习资料
作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- 微信小程序开发及相关设置小结
今年过年,主要看了<奇葩说>和<电锯惊魂>,很不错,好东西的确需要留出足够的时间来看,匆匆忙忙走马观花是对作者的不尊重.除此之外,就是研究了一下微信小程序开发,先说对小程序的看 ...
- 微信小程序开发中的二三事之网易云信IMSDK DEMO
本文由作者邹永胜授权网易云社区发布. 简介 为了更好的展示我们即时通讯SDK强悍的能力,网易云信IM SDK微信小程序DEMO的开发就提上了日程.用产品的话说就是: 云信 IM 小程序 SDK 的能力 ...
随机推荐
- spring boot(12)-数据源配置原理
本篇讲的不仅是数据源配置,这也是spring boot实现自动配置的一部分.要理解数据源的配置原理,首先要理解第十篇tomcat连接池的配置 数据源配置源码 这里截取org.springframewo ...
- CentOS6.4 下安装 jdk1.7.0_67
1.卸载系统自带的jdk 1.1.查看该操作系统上是否已经安装了jdk [root@xhTest-1 ~]# rpm -qa | grep jdk 1.2.删除系统自带的jdk [root@xhTes ...
- RHEL7系统管理之网络管理
1. RHEL7的网络介绍 在RHEL7中, NetworkManager 提供的默认联网服务是一个动态网络控制和配置守护进程, 支持ifcfg类型的配置文件. NetworkManager 可用于连 ...
- asp.net MVC 使用PagedList.MVC实现分页
在上一篇的EF之DB First中,存在以下的两个问题: 1. 添加/编辑页面显示的是属性名称,而非自定义的名称(如:姓名.专业...) 2. 添加/编辑时没有加入验证 另外数据展示使用分页 @Htm ...
- Jquery的跨域调用
JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念.当然,究其本质还是通过script标签动态加载js,似乎这是实现真正跨域的唯一方法. getJSON ...
- 查询会龄 sql部分
AND ( case when ${fld:vc_age} = '1' then ((current_date-d.c_idate::date)/30)<3 when ...
- mysql优化——explain详解
MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP).这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的.这条命令并没有提供任何调整建议,但它能够提供重要的信息 ...
- 检查windows系统支持的密码套件
Windows 10客户端及Windows server 2016 服务器可以使用powershell 命令获得系统支持的密码套件列表,禁用启用相应的密码套件. #命令链接:https://techn ...
- oracle 数据库数据备份
oracle 数据库数据备份 1.使用oracle用户应该就可以进行数据备份(不需要root用户):su oracle 查oracle实例名:echo $ORACLE_SID 例如查出来的 ...
- mysqlDOS命令
MySQL : 1.安装mysql服务:mysqld install 2.删除mysql服务:sc delete mysql 3.启动mysql服务:net start mysql 4.初始化设置密码 ...