cml小程序富文本解析

描述下小程序富文本解决方案

使用插件 Parser富文本插件

点git: https://github.com/jin-yufeng/Parser

最近公司在开发微信小程序,一些资讯的详情内容是HTML富文本格式的的,但是微信小程序不能直接解析HTML,需要将内容中的HTML标签转换成微信小程序所支持的标签。

因为cml 官网的rich-text : 组件并不支持 HTML 标签格式,

cml rich-text: https://cmljs.org/components/richtext.html

为了弥补这一不足, 寻找网络

后来找到了一个很好用的插件:Parser

今天分享给大家,插件Github地址:https://github.com/jin-yufeng/Parser

demo地址: https://github.com/dL-hx/cml-wx-richtext-demo

使用Parser解析富文本数据

1.将下载下来的插件文件夹复制到我们的项目根目录下(其中emojis文件可根据自己所需决定要或者不要,其他的文件必须要)

复制下方的文件

m-rich-text.interface

<script cml-type="interface">
/*
.interface 描述 组件的输入和输出。
定义一个inteface用于描述组件的属性和事件
1、 如何区分组件属性和事件?
通过类型来区分,事件为函数类型,属性为非函数类型
2、 如何定义组件属性
给interface添加同名的属性即可,指定类型
3、 如何定义组件事件
以事件名称为key值给interface定义属性,该属性是一个函数类型,返回值为void,
定义函数的第一个参数为自定义事件传递的detail对象类型
*/

interface MRichTextInterface {
  nodes: String,
}
</script>

m-rich-text.wx.cml

<template>
    <view class="contain">
        <!--
        在需要使用页面的 wxml 文件中添加
        -->
        <parser html="{{nodes}}" tag-style="{{tagStyle}}"></parser>
    </view>
</template>

<script>

  class MRichText implements MRichTextInterface {
    props = {
      nodes: {
        type: String,
        default: ''
      }
    }

    data = {
      tagStyle:{
        img:"width:100%!important;"
      }
    }

    computed = {
    }

    watch = {
    }

    methods = {
    }

    beforeCreate() {
    }

    created() {
    }

    beforeMount() {
    }

    mounted() {

    }

    beforeDestroy() {
    }

    destroyed() {
    }
  }

  export default new MRichText();
</script>

<style scoped>
    .contain{
        padding: 30cpx;
        font-size: 28cpx;
    }

</style>

<script cml-type="json">
  {
    "base": {
    "component": true,
      "usingComponents": {
      "parser":"./parser/parser"
    }
    }
  }
</script>

2.在需要使用该插件的(.json文件)中引入Parse模块

  {
    "base": {
    "component": true,
      "usingComponents": {
      "parser":"./parser/parser"
    }
    }
  }

3.在需要是用的m-rich-text中引入m-rich-text.cml(注意文件路径)

  "base": {
    "usingComponents": {
      "m-rich-text": "../../components/m-rich-text/m-rich-text"
     }
  },

4.进行数据绑定

页面层 Detail.cml

src\pages\detail\detail.cml

<template>
  <view class="article">
    <text class="article-title">{{ title }}</text>
    <view class="article-content">
      <m-rich-text nodes="{{ content }}"> </m-rich-text>
    </view>
  </view>
</template>

<script>
  import cml from 'chameleon-api'
  import newsData from '../../assets/json/news.json'
  class Detail   {

    data = {
      // title:'资讯标题',
      title:newsData.data.title,
      // content:'<div>我是HTML代码</div>',
      content:newsData.data.content,
    }

    computed = {
    }

    watch  = {
    }

    methods = {

    }

    beforeCreate(query) {
    }

    created(query) {
    }

    beforeMount(query) {

    }

    onShow() {
    }

    mounted() {
    }

    onHide() {
    }

    beforeDestroy() {
    }

    destroyed() {
    }
  }

  export default new Detail();
</script>

<style>
  .article-title{
    padding: 20cpx 30cpx;
    font-size: 36cpx;
    font-weight: bold;
    line-height: 1.5;
    text-align: center;
  }


</style>

<script cml-type="json">
  {
    "base": {
    "usingComponents": {
      "m-rich-text": "../../components/m-rich-text/m-rich-text"
    }
  },
    "wx": {
    "navigationBarTitleText": "资讯详情",
            "backgroundTextStyle": "dark",
            "backgroundColor": "#E2E2E2"
  }
  }
</script>

完成后页面就能够正常渲染HTML富文本数据了

资讯展示

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小李科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值