【发布时间】:2021-04-30 12:32:37
【问题描述】:
我想区分两个大文本,所以我决定使用 diffjs (https://www.npmjs.com/package/diff)。不幸的是,它对于 javascript 进程来说太重了,导致页面无用超过 15 秒。
我有一个 Angular 应用程序,所以我决定尝试 ngx-web-worker (https://www.npmjs.com/package/ngx-web-worker) 可能会有所帮助。最后可能我不理解网络工作者的这种实现,因为它没有运行。 :(
小例子:
import * as diff from 'diff';
import { WebWorkerService } from 'ngx-web-worker';
@Component({...}) ... {
constructor(
private _webWorker: WebWorkerService
){}
...
ngOnInit() {
this._webWorker.run(diff.diffTrimmedLines, this.texts).then((result) => {
let changes:number = 0;
result.forEach((part) => {
if(part.added || part.removed){ changes++; }
});
console.log(changes);
});
}
}
提前感谢您的帮助和时间。 :)
【问题讨论】:
-
是 diff.diffTrimmedLines 纯函数;没有任何依赖。您的方法中不应有任何实例或插件依赖项。 _.find() 或角度功能之类的东西
-
我在github.com/kpdecker/jsdiff/blob/master/src/diff/line.js 和github.com/kpdecker/jsdiff/blob/master/src/diff/base.js 找到了代码,但我看到它没有使用任何依赖项,所以它应该可以工作。
-
好的。似乎有什么东西,因为我收到了这个错误:“未捕获的 ReferenceError:diff__WEBPACK_IMPORTED_MODULE_16__ 未定义”
-
你可以使用@angular/service-worker (angular.io/guide/service-worker-intro)。
标签: angular diff web-worker