首页 > 热点 > 微信 > 正文

详解nodejs微信公众号开发——3.封装消息响应模块

2024-07-22 01:17:11
字体:
来源:转载
供稿:网友

上一篇文章:nodejs微信公众号开发(2)自动回复,实现了简单的关注回复。采用拼接字符串的形式,并不是很方便,这里我们将其封装承接口。

1. ejs模板引擎

不使用拼接字符串的方式,那么模板引擎就是较好的选择。Nodejs开源模板的选择很多,程序中使用 EJS,有Classic ASP/PHP/JSP的经验用起EJS来的确可以很自然,也就是说,你能够在 <%...%> 块中安排 JavaScript 代码,利用最传统的方式 <%=输出变量%>(另外 <%-输出变量是不会对 & 等符号进行转义的).

2. heredoc

在php、python中都有heredoc方式的字符串定义方法,JavaScript也实现了heredoc模块,主要解决大量字符串拼接问题。
新建模板文件tpl.js:

'use strict'var ejs = require('ejs');var heredoc = require('heredoc');var tpl = heredoc(function(content){/*  <xml>    <ToUserName><![CDATA[<%= toUserName %>]]></ToUserName>    <FromUserName><![CDATA[<%= fromUserName %>]]></FromUserName>    <CreateTime><%= createTime%></CreateTime>    <MsgType><![CDATA[<%= msgType %>]]></MsgType>    <% if(msgType ==='text') { %>      <Content><![CDATA[<%= content %>]]></Content>    <% }else if(msgType ==='image'){ %>      <Image>        <MediaId><![CDATA[<%= content.mediaId %>]]></MediaId>      </Image>    <% }else if(msgType ==='voice'){ %>      <Voice>        <MediaId><![CDATA[<%= content.mediaId %>]]></MediaId>      </Voice>    <% } %>else if(msgType ==='video'){ %>      <Video>        <MediaId><![CDATA[<%= content.mediaId %>]]></MediaId>        <Title><![CDATA[<%= content.title %>]]></Title>        <Description><![CDATA[<%= content.description %>]]></Description>      </Video>       <% } %>else if(msgType ==='music'){ %>      <Music>        <Title><![CDATA[<%= content.title %>]]></Title>        <Description><![CDATA[<%= content.description %>]]></Description>        <MusicUrl><![CDATA[<%= content.musicUrl %>]]></MusicUrl>        <HQMusicUrl><![CDATA[<%= content.hqMusicUrl %>]]></HQMusicUrl>        <ThumbMediaId><![CDATA[<%= content.thumbMediaId %>]]></ThumbMediaId>        </Music>    <% } %>else if(msgType ==='news'){ %>      <ArticleCount><%= content.length %></ArticleCount>      <Articles>        <% content.forEach(function(item){ %>        <item>          <Title><![CDATA[<%= item.title %>]]></Title>           <Description><![CDATA[<%= item.description %>]]></Description>          <PicUrl><![CDATA[<%= item.picUrl %>]]></PicUrl>          <Url><![CDATA[<%= item.url %>]]></Url>        </item>        <% }) %>      </Articles>    <% } %>    </xml>*/});var compiled = ejs.compiled(tpl);exports = module.exports = {  compiled:compiled};            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表