Koa2微信公众号开发之消息管理(4)
3.2 使用ejs模板引擎处理回复内容
从这一小段代码中可以看出,被动回复消息就是把你想要回复的内容按照约定的XML格式返回即可。但是一段一段的拼XML那多麻烦。我们来加个模板引擎方便我们处理XML。模板引擎有很多,ejs 是其中一种,它使用起来十分简单
首先下载并引入ejs
$ npm install ejs --save
如果你之前没用过现在只需要记住下面这几个语法,以及ejs.compile()方法
- <% code %>:运行 JavaScript 代码,不输出
- <%= code %>:显示转义后的 HTML内容
- <%- code %>:显示原始 HTML 内容
可以先看看这个ejs的小demo:
const ejs = require('ejs') let tpl = ` <xml> <ToUserName><![CDATA[<%-toUsername%>]]></ToUserName> <FromUserName><![CDATA[<%-fromUsername%>]]></FromUserName> <CreateTime><%=createTime%></CreateTime> <MsgType><![CDATA[<%=msgType%>]]></MsgType> <Content><![CDATA[<%-content%>]]></Content> </xml> ` const compiled = ejs.compile(tpl) let mess = compiled({ toUsername: '1234', fromUsername: '12345', createTime: new Date().getTime(), msgType: 'text', content: 'JavaScript之禅', }) console.log(mess) /* 将打印出如下信息 *================ <xml> <ToUserName><![CDATA[1234]]></ToUserName> <FromUserName><![CDATA[12345]]></FromUserName> <CreateTime>1517037564494</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[JavaScript之禅]]></Content> </xml> */
现在来编写被动回复消息的模板,各种if else,这儿就直接贴代码了
<xml> <ToUserName><![CDATA[<%-toUsername%>]]></ToUserName> <FromUserName><![CDATA[<%-fromUsername%>]]></FromUserName> <CreateTime><%=createTime%></CreateTime> <MsgType><![CDATA[<%=msgType%>]]></MsgType> <% 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 || item.picurl || item.pic || item.thumb_url %>]]></PicUrl> <Url><![CDATA[<%-item.url%>]]></Url> </item> <% }); %> </Articles> <% } else if (msgType === 'music') { %> <Music> <Title><![CDATA[<%-content.title%>]]></Title> <Description><![CDATA[<%-content.description%>]]></Description> <MusicUrl><![CDATA[<%-content.musicUrl || content.url %>]]></MusicUrl> <HQMusicUrl><![CDATA[<%-content.hqMusicUrl || content.hqUrl %>]]></HQMusicUrl> </Music> <% } else if (msgType === 'voice') { %> <Voice> <MediaId><![CDATA[<%-content.mediaId%>]]></MediaId> </Voice> <% } else if (msgType === 'image') { %> <Image> <MediaId><![CDATA[<%-content.mediaId%>]]></MediaId> </Image> <% } else if (msgType === 'video') { %> <Video> <MediaId><![CDATA[<%-content.mediaId%>]]></MediaId> <Title><![CDATA[<%-content.title%>]]></Title> <Description><![CDATA[<%-content.description%>]]></Description> </Video> <% } else { %> <Content><![CDATA[<%-content%>]]></Content> <% } %> </xml>
内容版权声明:除非注明,否则皆为本站原创文章。