1、如上文所述???Node.js是一个开源的、跨平台的JavaScript语言运行环境,由谷歌开发的V8运行代码,使用事件驱动、非阻塞和异步输入输出模型等技术来提高性能,可以优化应用程序的传输量和规模。这些技术通常用于数据密集型事实应用程序。——摘自维基百科最近学习Node.js花了将近一个月的时间。由于它的代码语言是Javascript,所以对语法的研究不多。毕竟做过web开发的程序员很少有人不会Javascript的。如果我错了,写这篇文章只是为了纠正我。2.准备工作在正式开始编码之前,我们需要准备以下东西:搭建Node环境。Node的安装过程太简单了,网上的教程太多了,可以自行百度;申请微信公众号,这里就不介绍了,大家自行百度。服务器和域名。打开Node.js中文网文档,打开微信开发者文档三、访问微信公众平台1、创建一个Node.js项目??首先我们在电脑任意一个磁盘上创建一个文件夹,命名为wechat;然后在文件文件夹下创建两个文件,一个是config.json,一个是app.js。如下图所示:PS:我这里的IDE是VSCode,大家可以随意使用自己喜欢的IDE。为了扩展后续的功能,我加入了Express框架。具体操作如下:电脑打开运行界面,快捷键为:win+R,输入cmd回车,进入dos界面,输入命令npminstall-gexpress进行全局安装;由于Express已经从4.x版本中分离出命令工具,所以需要输入下一个命令npminstall-gexpress-generator@4安装成功后,在DOS界面输入如下命令express-h结果如下图所示:什么?您的运行结果表明:express不是内部或外部命令。然后你要检查你在安装node.js的时候有没有添加环境变量。点击解决express不是内部命令也不是外部命令的问题2.微信文档步骤如果想不通就开始编码,这样做是很危险的。我们先打开微信文档,点击开发下的接入指南,如图:跳过第一步,直接进入第二步,如图:帮助文档说的,我们总结在四步:获取微信服务器请求的参数signature、timestamp、nonce、echostr获取token、timestamp、nonce,按字典顺序排序,将三个参数字符串拼接成一个字符串进行SHA1加密。开发者得到的加密字符串可以与签名进行比对。对比一下,标记请求来自微信3.接入功能的实现理清了思路,我们就按照上一节的步骤来实现。首先,我们打开config.json文件,输入如下内容:{"token":"wechat"}config.json文件就是我们程序的配置文件。在后面的文章中,我们会把微信定义的程序名、参数名、请求地址等配置内容保存在这个文件中。打开app.js文件,属于我们程序的入口。文件启动后再次实现路由配置。首先我们导入重要的模块:constexpress=require('express'),//expressframeworkcrypto=require('crypto'),//引入加密模块config=require('./config');//引入配置文件上面的代码不难理解,require就是引入模块的方式。这里主要说明一下我们自定义的config.json文件:"./"表示和app.js在同一个目录下。我们为什么要这样写呢?原因很简单。我们在通过npm命令安装模块时,如果指定全局安装,即-g,安装的文件会保存在我们node.js安装路径下的node_modules文件夹下;同样,我们如果不指定全局安装,安装的文件会保存在我们输入安装命令的文件夹根目录下的node_modules文件夹中。如果没有该文件,系统会自动创建。这里我们都是使用require来导入模块。node.js如何区分系统模块和我们的自定义模块?如果你聪明,你一定已经想到了。没错,就是“./”。如果你不想使用它,你也可以将自定义模块文件移动到node_modules文件夹中。require通过模块名导入模块文件,所以导入的时候不需要写文件的后缀。如果两个文件同名后缀不同,require会按照Node.js的加载优先顺序导入,即js文件>json文件>node文件。其实就这么简单,所以我们不再纠结这个问题,继续下面的工作。Instanceexpress并创建server//Instanceexpressvarapp=express();//用于处理所有进入3000端口的连接请求getapp.get('/',function(req,res){//返回请求连接内容res.send("HelloNode.js");});//监听3000端口app.listen(3000);上面的代码可以通过注释理解它的意思,这里就不详细解释了。再次进入dos界面,通过命令进入我们项目文件的根目录,如图:输入命令启动我们的Node.js项目。nodeapp.js启动成功后,我们打开浏览器,输入地址:http://localhost:3000访问我们的node.js项目,如图提示:每次更改node.js项目后,我们需要要先停止node.js(快捷键:Ctrl+C),然后再通过命令运行,特别麻烦。这里我推荐使用supervisor工具。npm安装命令为:npminstall-gsupervisor。这样,我们将启动node.js项目的命令改为supervisorapp.js。更改项目后,我们只需要保存,刷新浏览器页面即可得到更改后的结果。完成以上工作后,我们就可以正式开始编写接入微信公众平台的主要代码了,废话少说,直接贴代码constexpress=require('express'),//expressframeworkcrypto=require('crypto'),//引入加密模块config=require('./config');//引入配置文件varapp=express();//实例express框架//用于处理所有进入3000端口的连接请求getapp.get('/',function(req,res){//1.获取参数signature,timestamp,nonce,echostrvarsignature=req.query.signature,//微信加密签名timestamp=req.query.timestamp,//timestampnonce=req.query.nonce,//随机数echostr=req.query.echostr;//随机字符串//2.按照字典序对token、timestamp、nonce进行排序vararray=[config.token,timestamp,nonce];array.sort();//3.将三个参数字符串拼接成一个字符串进行sha1加密vartempStr=array.join('');consthashCode=crypto.createHash('sha1');//创建加密类型varresultCode=hashCode.update(tempStr,'utf8').digest('hex');//加密传入的字符串//4。开发者将得到的加密字符串与签名进行比对,判断请求来自微信if(resultCode===signature){res.send(echostr);}else{res.send('不匹配');}});//监听3000端口app.listen(3000);4.部署项目完成代码后,我们就可以将项目发布到外网了。这里我使用的是花生壳内网映射外网软件。其他工具随意使用1、打开花生壳软件,点击内网穿透:2、点击添加映射3、配置映射由于微信只接受80端口,所以映射类型我们选择80端口;内网主机是我们电脑的IP地址;内网端口号为node.js的监听端口;点击确定后,就成功映射到外网了,可以通过花生壳提供的域名访问了。5、接入验证??再次进入微信公众平台,点击左侧菜单中的基本配置,如图:点击修改配置。其中,服务器地址是我们外网映射的地址;令牌(Token)是我们在config.json文件中定义的令牌值;消息加密可以点击随机生成按钮,当然你也可以随便定义;消息加解密方式如下:Blocks可以随意选择,这里我使用默认的,如图:点击提交按钮,会提示提交成功,那么恭喜你??你已经成功踏入了Node.js开发微信开发的第一步。文章源码:https://github.com/SilenceHVK...。文中如有不准确之处,敬请指正。请给github源码一个Star,最后感谢阅读。
