vue文本比较插件

本文介绍了如何在前端使用CodeMirror库配合diff-match-patch模块创建可实时比较和合并的代码编辑视图,适合开发者进行版本控制和协同编辑。通过实例展示了如何初始化UI并设置代码模式、行号和差异高亮。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 安装
npm install codemirror
diff-match-patch diff-match-patch
  1. 使用

    

<div id="view"></div>
<script>
    import CodeMirror from 'codemirror'
    import 'codemirror/lib/codemirror.css'
    import 'codemirror/addon/merge/merge.js'
    import 'codemirror/addon/merge/merge.css'
    import DiffMatchPatch from 'diff-match-patch'
    window.diff_match_patch = DiffMatchPatch
    window.DIFF_DELETE = -1
    window.DIFF_INSERT = 1
    window.DIFF_EQUAL = 0

    export default{
        
    }
</script>
methods: {
       initUI() {
            let value = this.old.content, orig2 = this.newData.content

            if (value == null) return;
            let target = document.getElementById("view");
            target.innerHTML = "";
            CodeMirror.MergeView(target, {
                value: value,//上次内容
                origLeft: null,
                orig: orig2,//本次内容
                lineNumbers: true,//显示行号
                mode: "text/html",
                highlightDifferences: true,
                connect: 'align',
                readOnly: true,//只读 不可修改
            });
        },
}

效果图如下:

### 解决 Vue-PDF 组件第二次加载显示空白的问题 在 Vue 项目中使用 `vue-pdf` 插件时遇到的一个常见问题是,首次加载 PDF 文件能够正常显示,但在关闭并再次尝试打开同一文件时页面会呈现空白状态。此问题通常由缓存机制或资源加载失败引起。 #### 缓存清理与重置 一种有效的解决方法是在每次切换文档前清除相关缓存数据。具体来说,可以在销毁当前实例之前调用特定函数来释放内存中的资源: ```javascript beforeDestroy() { this.$refs.pdfViewer.clearCache(); // 清除内部缓存 } ``` 此外,还可以考虑手动管理依赖项如 CMap 和字体映射表的加载过程[^1]。 #### 修改 CMapReaderFactory.js 文件 另一个潜在的原因在于 `CMapReaderFactory.js` 中处理中文字符的方式不当所引起的异常情况。对于这个问题,可以通过修改该文件内的逻辑以确保即使是从缓存读取也能获得正确的字节流。以下是经过调整后的代码片段示例[^3]: ```diff // node_modules/vue-pdf-signature/src/CMapReaderFactory.js async function fetchCMaps(url) { try { const response = await axios.get(url); if (!response.data || !ArrayBuffer.isView(response.data)) throw new Error('Invalid data'); return new Uint8Array(response.data.buffer); // 确保总是返回有效数组 } catch (error) { console.error(`Failed to load ${url}`, error.message); return null; } } ``` #### 设置固定的高度样式 有时布局上的问题也会造成视觉上的“空白”。因此建议给 `<vue-pdf>` 或其父容器设定一个固定的高宽比例,防止因尺寸计算失误而导致的内容不可见[^2]。 ```html <div style="height: 100vh;"> <vue-pdf :src="pdfUrl"></vue-pdf> </div> ``` 通过上述措施应该能有效地缓解乃至彻底解决问题。如果仍然存在困难,则可能需要进一步检查网络请求日志或其他方面的影响因素。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值