微信公众号nodejs版

微信公众号nodejs版


前言

学习nodejs是从搭建hexo开始的,那时候每天还能写一篇日志,结果中间出差了一周,回来后状态全无,就变懒了……
好在我并没有彻底放弃学习node,有关于nodejs的学习一直没有停下来,最终算是完成了这个练手版的代码。
之所以用nodejs做微信,一是我的工作就是微信公众平台的开发,对这方面比较了解,还有就是nodejs本身非常适合做微信,于是就边学习node边把代码写出来了,所有代码基于测试号进行开发和调试。
(PS:本来是想申请一个订阅号的,结果坑爹的腾讯最近没办法申请注册个人的订阅号,总是卡在二维码认证那步,如果有哪位有办法解决感谢分享一下)

学习感想

参考代码及使用第三方组件

虽然对整个微信开发流程还算熟悉,但是在没人教的情况下还是很痛苦,很多小问题就要很久才能解决,所以很多地方都是参考了别人写的代码才完成的。

webot

首先强烈推荐这个托管在github上的代码,https://github.com/node-webot。由一群大牛开发,覆盖了几乎现在微信的全部功能,而且还有针对分布式部署的优化,如果有人也要为公司开发微信公众号,强烈推荐这里面的代码。

bluebird

首先作为一个java程序猿,对js这种异步回调的机制还真是不太适应,所有的操作流都只能使用回调函数进行操作,看起来好像没什么,但是真正操作起来就会发现恶心到不行啊。

doAsync1(function () {
doAsync2(function () {
doAsync3(function () {
doAsync4(function () {})
})
})
})

这就是所谓的 “回调黑洞” 了。
无论是开发调试,还是要进行修改,都会出现各种让人心烦的感觉。具体的问题在这就不阐述了。
那么如何解决问题呢?
使用promise,具体请参考 深入理解 Promise 五部曲:1. 异步问题
而我最后选择的bluebird进行解决,地址为:https://www.npmjs.com/package/bluebird
至于为什么我选用它,并不是我认为它有多好,而是我使用的另一个组件urllib 里使用到了,所以我就顺便用了……

其中promise.map真是神器啊,谁用谁知道。

cheerio

说实话我之前从来没写过爬虫的代码,但是自从我用了cheerio之后,爬个每日新闻什么的真是太容易啦

socket.io

我不知道别的代码里socket通信有多麻烦,反正java里是很恶心就对了,不过socket.io真是做的太舒服了,其中我的代码里写了个简单的聊天室(为了学socket.io而写),让我对socket的操作有了更深的理解,但是我做的只是简单的广播通信,如果要做的复杂一些,比如指定两个人之间进行通信,创建自己的聊天室等复杂一些的功能,暂时我还真不知道怎么弄。
在此顺便感谢一下一个叫”千寻聊天室qx-chat-master”的作者(不好意思,,链接地址找不到了,package.json里也没留下什么),因为我的css基本就是小白,所以我直接使用了它的样式进行了一下删减。

formstream

地址:https://github.com/node-modules/formstream
nodejs里面如何模拟表单的提交?(微信的素材上传接口涉及到了这点)
网上查基本都是怎么处理接受来的请求,很少有怎么发送。

later

定时器这种东西,现在真是做的越来越简单了,java里面spring有整合,nodejs里面做的也是非常简单,这个later就是个强大的第三方组件,具体的操作规则可以参考:http://blog.fens.me/nodejs-cron-later/
这里面写的很详细了。

其他

剩下的就是express,path等这些基本的了,整个学习过来真心觉得nodejs是不错的选择,不过我暂时只是学到了皮毛而已。我的代码里目前还没有数据库连接,没有日志,没有错误的处理等,可以优化的地方还很多,如果有时间我应该会进一步优化出一个版本,毕竟实践是检验学习的最好方法,只是看看书什么的(尤其是Node更新极快,市面上的书基本都是老版本的),根本没什么效果。

代码结构

如果真的有人愿意看看我写的代码,我多少还是标注一下我写的东西吧。

  • index.js
    启动项,配置具体启用什么功能
  • chatRoom.js
    聊天室的socket端代码
  • wechatAPI.js
    用于主动请求微信公众平台,但是后来越做越乱,最后只是用来在链接后面添加个token,以后准备重新写。
  • wechatCheerio.js
    爬虫代码,爬去的网页是it之家的页面,同时里面使用到了later,目前只是把内容存取到文件里
    PS:里面已经完成了自动爬取内容,上传素材,群发的功能,但是最后一步因为是测试号而没法实现……
  • wechatConfig.js
    公众号的相关配置都在这里面,比如appid等
    (当时还没有学会promise,所以用的还是回调)
  • wechatProcess.js
    与用户交互的报文的处理,目前将全部的文本消息都转向了图灵机器人处理

代码地址

github:https://github.com/bambooleaf/wechat_node
代码有些乱,大牛轻喷
还有我的个人博客 http:blog.bambooleaf.wang,欢迎学习交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值