uni-app项目,我现在需要使用 markdown 渲染,渲染包括文字和代码块结合渲染,细节功能需要代码块有背景,代码有高亮,代码块还有复制功能,还要兼容 APP端,微信小程序端和H5端的完整引入以及示例
时间: 2024-04-22 21:25:14 浏览: 319
uni-app的markdown富文本编辑器插件uniapp-markdown-master.zip
5星 · 资源好评率100%
在 UniApp 项目中使用 markdown 渲染并实现代码块背景、代码高亮和复制功能,需要使用以下步骤:
1. 在你的 UniApp 项目根目录下,通过命令行安装 markdown-it、highlight.js 和 clipboard.js:
```shell
npm install markdown-it highlight.js clipboard --save
```
2. 在你需要使用 markdown 的页面或组件中,引入 markdown-it、highlight.js 和 clipboard.js:
```javascript
import MarkdownIt from 'markdown-it'
import hljs from 'highlight.js'
import ClipboardJS from 'clipboard'
```
3. 创建一个 markdown-it 实例,并进行相应的配置:
```javascript
const md = new MarkdownIt({
highlight: function (str, lang) {
if (lang && hljs.getLanguage(lang)) {
try {
return '<pre class="hljs"><code>' +
hljs.highlight(lang, str, true).value +
'</code></pre>';
} catch (__) {}
}
return '<pre class="hljs"><code>' + md.utils.escapeHtml(str) + '</code></pre>';
}
})
```
4. 在页面中定义一个方法,用于初始化复制功能:
```javascript
methods: {
initClipboard() {
const codeBlocks = document.querySelectorAll('pre code')
for (let i = 0; i < codeBlocks.length; i++) {
const codeBlock = codeBlocks[i]
const btn = document.createElement('button')
btn.className = 'copy-btn'
btn.textContent = 'Copy'
codeBlock.parentNode.insertBefore(btn, codeBlock)
}
const clipboard = new ClipboardJS('.copy-btn', {
target: function (trigger) {
return trigger.nextElementSibling;
}
})
clipboard.on('success', function (e) {
e.clearSelection()
uni.showToast({
title: 'Copied',
icon: 'none'
})
})
clipboard.on('error', function (e) {
uni.showToast({
title: 'Copy Failed',
icon: 'none'
})
})
}
}
```
5. 在页面中使用 markdown-it 解析 markdown 文本,并将结果渲染到页面中:
```javascript
mounted() {
const result = md.render('# Hello, Markdown!')
this.result = result
this.$nextTick(() => {
this.initClipboard()
})
}
```
6. 在页面中使用渲染结果,并添加相应的样式:
```html
<template>
<view class="container">
<rich-text :nodes="result"></rich-text>
</view>
</template>
<style>
pre.hljs {
background-color: #333;
color: #fff;
padding: 10px;
}
.copy-btn {
position: absolute;
top: 8px;
right: 8px;
border: none;
background-color: transparent;
font-size: 14px;
color: #999;
cursor: pointer;
}
</style>
```
这样,你就可以在 UniApp 项目中使用 markdown-it、highlight.js 和 clipboard.js 来渲染 Markdown 文本,并实现代码块背景、代码高亮和复制功能了。在页面中,使用 `<rich-text>` 组件来展示渲染结果,并通过添加相应的样式来实现代码块背景和复制按钮。记得根据你的实际需求进行配置和使用,以适配 APP 端、微信小程序端和 H5 端的展示效果。
阅读全文