node 微信开发插件--webot源码阅读

资源

webot项目地址

导语

接触node已经有一段时间了,通过这一次使用node进行微信开发,学习了挺多新的知识:

1、使用node + express 搭建服务器
2、node进行https请求,数据交互方式接触了xml,知道了需要声明header的Content-Type为application/xml
3、将代码进行模块化,抽离出配置、函数,实践了下回调机制
4、编码问题,如动态创建的url请求需要使用encodeURI进行编码处理

由于微信的其他接口基本类似,因此就不再逐一做笔记浪费时间,接下来的计划是看能否申请到一个服务号或者企业号,以实现一些比较复杂的功能,与此同时拜读下webot团队大牛们写的微信开发模块,相信可以学到很多新的知识。

笔记

wechat-api

这是一个微信公众平台功能API模块,它将多个功能集合在了一起供开发者直接调用

index.js 入口

代码中可以看到首先引用了一个api_common模块,并声明为变量API,然后通过这个模块的mixin函数,将其他模块的功能拓展到变量API上,最后再exports = API,使得变量只有一个

index_common.js 基础模块

模块的代码定义了一个API对象和AccessToken对象,其中API对象对外公开,而accessToken对象则供API调用

  • 在创建AccessToken的对象的时候用到了 安全模式的工厂方法 设计模式
    <pre><code>
    var AccessToken = function (accessToken, expireTime) {

    if (!(this instanceof AccessToken)) {

    return new AccessToken(accessToken, expireTime);

    }

    this.accessToken = accessToken;

    this.expireTime = expireTime;
    };
    </code></pre>
    防止了使用者在不知情或忘记的情况下直接使用var tmp = AccessToken(a,b)去创建对象导致了错误。

  • 在判断accessToken是否过期的时候使用了双感叹号,一个感叹号是取非,双感叹号则是非非得正,意义其实在于它隐式地将值转化为bool类型
    <pre><code>
    AccessToken.prototype.isValid = function () {

    return !!this.accessToken && (new Date().getTime()) < this.expireTime;
    };
    </code></pre>

  • API对象定义了基础函数,如保存token和appsecret并获取token的方法,它还定义了一个mixin函数,以拓展其他功能
    <pre><code>
    API.mixin = function (obj) {
    for (var key in obj) {
    if (API.prototype.hasOwnProperty(key)) {
    throw new Error('Don't allow override existed prototype method. method: '+ key);
    }
    API.prototype[key] = obj[key];
    }
    };
    </code></pre>
    通过遍历传进来的对象属性,如果不发生覆盖就赋值给API,从而实现对象的合并

api_template.js 客服消息

剩下的模块都是基于api_common.js对象的功能拓展
<pre><code>
exports.sendText = function (openid, text, callback) {

  this.preRequest(this._sendText, arguments);

};
</code></pre>
这个模块只是webot其中一个板块,还有微信公共平台消息接口服务中间件、微信企业版第三方应用接口、微信公共帐号自动回复机器人等,使用这些板块进行开发基本5分钟可以搞定,源码待研究~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容