uni-app中使用towxml

uni-app是一个使用 Vue.js 开发所有前端应用的框架
towxml是一个在小程序中解析markdown或html的工具

我给博客用uni-app写了一个微信小程序版,要展示文档详情,总所周知小程序本身的rich-text很难用,所以经过一番调研,就选择了towxml。
但是uni-app本身并没有集成towxml,使用的过程中也是遇到了一点麻烦,分享给大家

第一步 以自定义组件的方式引入towxml包

根据官网指引,如果要使用towxml3.0需要构建一下,把构建好的文件夹改名为towxml放在uni-app项目中新建的wxcomponents目录中。
这个目录的名字是固定的具体可以到官网文档查看

修改 towxml/decode.json 里所有/towxml开头的绝对路径为相对路径
例如 "decode": "/towxml/decode", 改成 "decode": "./decode"

在pages.json中添加配置

{
    "pages": [{
        "path" : "pages/index/index",
        "style" : {
            "usingComponents":{
                "towxml": "/wxcomponents/Towxml/towxml"
             }
         }
    }]
}
第二步 在全局挂载towxml解析方法

towxml本是提供给小程序使用的,所以用了很多commonjs 语法,导出方式都是module.exports,然而vue3已经不再支持这种语法了,直接引入会报错
而且vue3也不推荐Vue. prototype的方式挂在原型上,所以我选择了下面的方式

main.js

const towxml = require('./wxcomponents/Towxml/index');
export function createApp() {
  const app = createSSRApp(App)
  app.config.globalProperties.$towxml = towxml
  return {
    app
  }
}
第三步 在页面中展示
<template>
  <view>
    <towxml :nodes="data"/>
  </view>
</template>

<script setup>
	import {ref,onMount} from 'vue'
	let {appContext} = getCurrentInstance();
	const data = ref('')
	onMount(()=>{
      data.value = appContext.config.globalProperties.$towxml('markdown文本,'markdown')
    })
</script>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
插件地址:https://github.com/kevenfeng/html-to-wxml如果前端技术比较牛,可以直接看github上面的demo。可以更好的理解用法。使用方法:1.引用插件var R_htmlToWxml = require(‘../../util/htmlToWxml.js’);//引入公共方法2.将html内容转成json数据R_htmlToWxml.html2json(“html内容”);转换后的json格式类型大概如下:3.吐到页面显示<block wx:for="{{content}}"  wx:for-index="idy"  wx:for-item="cellData">         <block  wx:if="{{cellData.type == 'view'}}">             <view class="p">                 <block  wx:for="{{cellData.child}}" wx:key="text">                     <block  wx:if="{{item.type == 'a'}}">                         <text class="a" data-seccode="{{item.attr['data-seccode']}}" data-secname="{{item.attr['data-secname']}}" bindtap="stockClick">{{item.text}}</text>                     </block>                     <block  wx:else>                         <text>{{item.text}}</text>                     </block>                 </block>             </view>         </block>         <block wx:if="{{cellData.type == 'img'}}">             <image class="img" data-index="{{idy}}" style="height: {{cellData.attr.height?cellData.attr.height:0}}px"  mode="aspectFit" src="{{cellData.attr.src}}" bindload="imageLoad"></image>         </block>     </block>demo效果:由于小程序图片的高度没法自适应,需要给图片设置高度,所以需要在图片加载完以后,获取图片高度,等比算出显示图片高度,赋值给对应图片通常我们抓取的内容是html页面,特别是像资讯这一类的,如果在小程序里面显示文章内容,此插件提供了一种解决方案,希望对大家有用。在客户端用native显示html页面体验上面没有native的好,htmlToWxml插件给客户端用native的方式显示html内容提供了一种解决方案
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

花贝是只猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值