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>
### 如何在 UniApp 中渲染 Emoji 表情 在 UniApp 开发环境中,可以通过引入外部表情库来实现对 Emoji 的支持。具体方法可以参考以下几种方式: #### 方法一:通过 `emoji.js` 库加载并渲染 Emoji 一种常见的方式是从第三方资源获取 Emoji 数据,并将其集成到项目中。例如,可以从指定网站下载所需的表情包文件[^1],并将这些文件导入至项目的静态资源目录中。 接着按照引用描述中的操作指南[^2],将下载好的 `emoji.js` 文件拖入项目根目录下的 `static/js` 路径下。随后创建一个新的 Vue 组件(如命名为 `emoji.vue`),用于封装和管理表情逻辑。以下是该组件的一个基本代码框架: ```javascript <template> <view class="emoji-container"> <!-- 动态展示表情 --> <text v-html="renderedEmoji"></text> </view> </template> <script> import emoji from '@/static/js/emoji.js'; // 导入表情库 export default { data() { return { rawText: 'Hello, 😊!', // 原始字符串可能包含未转义的 Unicode 字符 renderedEmoji: '' // 处理后的 HTML 内容 }; }, mounted() { this.renderEmojis(); }, methods: { renderEmojis() { const processedContent = emoji.convert(this.rawText); // 使用表情库转换文本 this.renderedEmoji = processedContent; } } }; </script> ``` 上述代码片段展示了如何利用 JavaScript 插件动态处理含有 Unicode 编码的字符串,并将其转化为可视化的图形化表达形式。 --- #### 方法二:借助 GitHub 提供的标准表情映射表 如果希望更简便地完成这一目标,则可以直接采用已有的开源工具——比如 gh-emoji 这样的轻量化插件[^3]。此类方案的优势在于其完全基于官方标准定义了一套完整的映射关系,从而减少了开发者手动维护配置的工作负担。 安装命令如下所示: ```bash npm install gh-emoji --save ``` 之后可以在任意页面或者全局初始化脚本里调用此模块的功能来进行相应的解析工作。下面给出一段简单的实例演示: ```javascript const GhEmojiParser = require('gh-emoji').default; let parserInstance = new GhEmojiParser(); // 测试输入样例 console.log(parserInstance.replace(':smile:')); // 输出:<img alt="😄" src="https://github.githubassets.com/images/icons/emoji/smiley.png?v8"/> ``` 这里需要注意的是,实际部署过程中还需要考虑跨域请求等问题以及性能上的优化措施。 --- #### 方法三:使用 Towxml 解析器增强 Markdown 和 Emoji 支持能力 对于那些不仅限于单纯显示单个图标而是想要全面覆盖富媒体内容需求的应用场景来说,可以选择更为强大的解决方案之一就是 **Towxml**[^4] 。作为一个专注于移动端适配的强大引擎,它可以轻松应对包括但不限于 ECharts 图形绘制、LaTeX 数学公式排版在内的多种复杂任务的同时也提供了良好的 Emoji 展现效果。 要启用这个特性只需要确保版本不低于 3.0 即可自动获得相应的能力支持。同时由于它是以 Web Components 形式存在的独立单元因此非常容易嵌入现有的 uni-app 工程体系当中去。 --- ### 总结 综上所述,在 UniApp 平台上实现 Emoji 渲染主要有三种途径可供选择:一是依靠自定义开发结合特定格式的数据源;二是采纳成熟的社区贡献成果简化流程;三是运用综合性更强的内容管理系统一站式解决问题。每种策略都有各自适用范围及优缺点,请依据实际情况灵活选用最为合适的那一条路线前进吧!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

花贝是只猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值