微信图书馆开发——cnsoft总结

前言

浅谈一下微信,也真的只是浅谈,就是cnsoft结束之后的总结。代码写得急,也写得挺烂的,也只是大概总结一下用了哪些技术(主要是我负责的这一块)。还算拿了个名次,但我觉得真的是写得不行,这里也只是总结一下,为自己及他人开发微信提供一些小小的参考。

正文

准备

公众号

微信开发怎么说,你得要用微信吧,首先必须得准备一个公众号才行。一般来说,个人号的测试号基本能够满足需求,JSSDK测试号也是支持的。你是否需要花三百去注册一个服务号的重要判定条件即是否需要微信支付,如果需要微信支付的话必须是服务号。虽说三百很多而且还有审核不过的风险,但是腾讯只要给钱事情就能办好,你只要材料都有,第二天就给你过了,这波投资现在看了高效而且不亏。。如果没有支付要求,一个测试号也基本能够满足要求了。

服务器

服务器虽说可以用自己的电脑代替,但是一直开机也不大现实,所以还是有一台服务器比较好。一直用的是腾讯云的一元学生机,不过现在好像已经不能再申请了,暗自开心一会。其他阿里云什么的也都有,反正最好有一台,不然不大方便。

域名

域名而且是需要备案过的域名,因为很多地方都需要你认证过的域名,比如支付以及JSSDK,如果有一个已经备案过的域名可以防患于未然。而且域名备案周期相对较长,江苏地区的话一周左右吧,有些地区可能要一个月,所以说还是要提前开始准备的,准备过程中也可以将其他不需要域名的工作先做完。

前台

weui+

微信开发,归根到底还是网页的开发,整套的设计也基本是用网页的模式设计的,两者有着紧密的联系。微信本身提供了一套很好的UI叫做weui,这套UI可以统一整个网站的风格,使其微信化,是一个很好的选择。我们选择的是weui+,它基于weui进行了许多扩展,具体的功能大家去github上好好看看就行了,不过因为是个人项目作者维护得比较少了,在这里还是要感谢他的付出。

javascript(jQuery)

网页前端用的最多,当然是最经典的jQuery了,作为老牌的js库,它的使用不知道简化了多少代码,我这里就主要讲一下重要的使用以及坑。

  1. ajax&json
    ajax是网页前后台交互经常使用的方式,异步方式局部刷新的方式提升了网页整体的响应速度。而一般返回值都是json,因为比较好处理,js自身也支持json的处理。不过我一直在想的是,ajax对接口的保护可能存在问题,写在前台无疑就是暴露接口,安全性仍待商榷。

  2. 冲突
    有时候为了前端特效,经常会使用多个js库,往往他们都会使用 $ 作为关键词,这时候不可避免地产生了库与库之间的冲突,我一般是自定义jQuery别名,如下面的代码所示(当然其他方法也有):
    var $j=JQuery.noConflict();

  3. 节点操作
    倘若想要前端完全没有后台语言的代码,同时又要求动态刷新,无非就是使用一下js的节点。一般获取json数据之后进行拆分,然后用节点动态插入网页之中,虽然有点繁琐,但是这样就可以完全使用html文件来写代码,倘若想用electron将其打包成exe也是可以的。

JSSDK

微信网页开发,不得不提的就是JSSDK,它的作用就是直接通过微信能够调用手机的硬件,并且已经完成了许多功能,比如扫一扫、处理声音等。这里也仅仅是讲一下我用到的地方与坑

  1. 使用权限
    JSSDK的使用在测试号上很简单,配个域名就行了,根本不用检测。
    但是服务号有限制,一个月只能修改三次配置,而且需要将一个文件放到根目录下。根目录这个坑了我很久,使用的tomcat作为容器,一开始直接将文件放于webapps中,不行!因为根目录其实是webapps中的ROOT文件夹,放进去就可以通过验证了。
  2. 扫一扫
    其实也是微信帮你都做好了,调用一个接口而已,但是处理扫描出来的字符就是自己的工作了,二维码生成的话可以使用上面说的weui+ ,处理就用这个处理好了。
  3. 声音处理
    说过微信可以调用硬件,录音机就是其中之一,最最方便的一点就是他有直接的智能接口,可以直接进行语音转文字

后台

微信支持的后台太多了,这也是它生生不息的原因之一,基本主流的语言都支持。官方给的样例基本都是PHP,所以PHP确实是开发微信最方便的语言,不过我们使用的是Java,因为本身对Java比较熟悉,而且Java在微信开发的资源也不算少。

框架

当时采用的是struts2框架,框架简单的使用来说并不复杂,其实也就是加了个过滤器,高级的功能也没有加多少。个人对框架了解也不算很多,老牌的也好,流行的也好,用得顺手就行。反正说实话,这么小的项目,框架的优势也体现不出来,不过要找工作还是得多练练。

具体功能

赛题的具体要求就看cnsoft官网第六届赛题好了,这里也不加以赘述了,反正赛题是所有题目中最简单的(手动滑稽)。也就是一个要求做在线图书馆,然后加管理后台,我这里主要讲一下微信端,也就是在线图书馆。

1.图书数据

要有一个图书馆,首先你要有数据吧。不过数据着实是不好找,最后找了一个聚合数据的免费接口。毕竟免费的,图书数目少,数据不全,ISBN作者什么的都缺,最后花了几个小时手动补了几百条,序和简介什么的,反正也不会具体看,大概有个内容就行了,代码直接操作数据库加满。

2.智能推荐

智能推荐用的东西挺高级的,叫Mahout,中文翻译过来就是协同过滤喽。也是Java的开源库,用着应该是挺高深的,可以和spark什么的一起处理数据。我们的项目就一点点数据,当然没用什么大数据啦,也就是网上找了一些教程,自己设计了一套规则而已。

简单思路就是,每个用户对每本书都有评分,评分是根据用户的行为进行动态变化的,比如喜欢就加个五分、浏览一次就加个一分之类的,最后直接引用Mahout的jar提供的接口,就把几个推荐结果给算出来了。算出来之后就是处理了,把图书序号抽出,再写一个定时器微信客服消息接口发送生成的图文消息。

3.图书搜索

这里我是真的不大好意思写了,根本不算什么索引,搜索方式也是low到爆炸,最简单的数据库select。写这个的原因主要还是因为对拼音搜索稍微研究了那么一下。

说是研究了一下,其实也就是用了一个 pinyin4j 的库。它对中文的拼音解析来说还是比较精确的,也可以自定义解析格式,我定义的方式是加”’“号,比如“你好”的转化:你好->ni’hao,然后就看自己解析了。对于中文和拼音的输入,后台是先对其进行判断,然后全部将其转化成拼音搜索然后进入我自己书名的拼音集合中进行搜索,拼音集合当然也是用这个库提前处理好的啦。

当然对于混合输入来说还有局限性,这点还是可以提升一下的。

4.语音识别

当时是想用讯飞的,结果发现我做的时候讯飞的H5接口已经不做了。绝望之下,发现微信自己就有。语音消息XML中的Recongnition字段就是解析,当然目前只能处理中文。

5.微信支付

微信支付真的是头疼了很久,也研究了很久,这里有篇不错的博文 ,也是靠了这位大佬才把这微信支付给搞出来的。


总结

毕竟过了很久了,很多细节的东西也都不知道,也只是大概总结了那么一下啊。

评价cnsoft,我觉得算是二流吧,毕竟C9来的很少,大多数都是211和普通高校,但是作为学生时代积累项目经验的比赛确实是不错的,也以此来警告自己其实还是很菜的。

猜你喜欢

转载自blog.csdn.net/blueblueskyz/article/details/78161186