最近在进行博客的小程序开发,需要用到Html转Wxml的组件,我们采用的是https://github.com/csonchen/wxParse开发的组件,原作者已经集成了代码高亮解析组件,作者定义的数据格式如下:
<pre> <code lang="javascript"> const name = 'csonchen' </code> </pre>
而在layui中关于代码修饰是这么定义的(文档):
<pre class="layui-code" lay-title="" lay-height="" lay-skin="" lay-encode=""> 这样有木有觉得更方便些 </pre>
如何来统一这两种数据定义呢?
答案肯定是修改部分内容。
我们先统一数据格式,我们以layui的数据为准,在此基础是我们再添加一个layui-lang属性,来定义当前插入代码所对应的开发语言。
1、修改components/wxParse/utils/htmparse.js文件
在第13行插入
var codeTag2= /^([\s\S]*?)<\/pre>/
然后在第80行插入如下代码
if(tagName==='pre'){ var codeTagMatch = html.match(codeTag2) codeContent = codeTagMatch[1] || '' }
2、修改components/wxParse/wxs/wxParse.wxml
在第21行添加如下代码
<block wx:elif="{{item && item.tag == 'pre' && item.classStr == ('layui-code')}}"> <view class="{{item.classStr}}" style="{{item.styleStr}}"> <highLight codeText="{{item.content}}" language="{{item.attr && item.attr['lay-lang']}}" /> </view> </block>
好了,大功造成。