diff.js使用指南

前言

最近在开发过程中遇到了需要diff文件内容或者大json的业务场景,发现了一个比较好用且经典的js库diff。这个库功能十分强大,不仅能够简洁地输出字符串结果,也能够输出规范化的数据结构方便二次开发。这里笔者针对这个库的文档进行翻译和简单的讲解,同时也会展示自己的测试demo。

库简介

diff是一个基于javascript实现的文本内容diff的库。它基于已发表论文中的算法An O(ND) Difference Algorithm and its Variations" (Myers, 1986).

安装

npm install diff --save

引用

//  不支持import 语法,也就是module引入
const jsDiff = require('diff');

API

  • JsDiff.diffChars(oldStr, newStr[, options]) 这个方法将比较两段文字,比较的维度是基于单个字符
    返回一个由描述改变的对象组成的列表。大致如下:

    added表示是否是添加内容,removed表示是否为删除内容。共有的内容这两个属性都没有,value表示内容,count表示字符的个数(在某些用法中表示内容的行数)
    可选的配置属性ignoreCase: 标记为true时忽略字符的大小写,默认为false,这里给出一个测试例子:

    文中例子的线上演示地址演示地址

  • JsDiff.diffWords(oldStr, newStr[, options]) 该方法比较两段文字,比较的维度是单词,忽略空格,返回一个由描述改变对象组成的列表,可选的配置属性ignoreCase: 同diffChars中一样,这里给出一个使用例子:

  • JsDiff.diffWordsWithSpace(oldStr, newStr[, options]) 该方法比较两段文字,比较的维度是单词,同上一个方法不同的是,它将比较空格的差异,返回一个由描述改变的对象组成的列表。这里给出一个例子:

  • JsDiff.diffLines(oldStr, newStr[, options]) 比较两段文字,比较的维度是行。可选的配置项:
    ignoreWhitespace:设置为true时,将忽略开头和结尾处的空格,在diffTrimmedLines中也有这个配置。
    newlineIsToken: 设置为true时,将换行符看作是分隔符。这样就可以独立于行内容对换行结构进行更改,并将其视为独立的(原文:This allows for changes to the newline

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值