当前位置: 首页 > news >正文

【前端Vue】如何优雅地展示带行号的日志文件或文本内容(log-viewer组件的使用)

        由于需要在前端使用浏览器展示大量数据的文件,展示方式的优化非常重要,自己手敲实现的话太耗时间并且容易出现bug,经过多轮查找调研,排除了ace-editor,选用了log-viewer,ace-editor的组件UI设计比较现代化,较log-viewer更美观,并且支持多种配置项,官方宣称能够处理代码多达400万行的大型文档。但我使用在自身项目中非常容易出现卡顿,正常内容要限制1000行才会比较流畅,这并不符合我的需求。

        于是我们发现了log-viewer,这个组件的UI非常普通,就像终端命令行一样,但他的性能优化非常漂亮,并且使用也很方便,能够自动将内容定位到最后一行,不需要自己写定位代码,省去了很多麻烦,就是如果对界面UI要求比较高的话,需要推敲修改其布局设计,当然,这比适配优化浏览性能简单得多。实际测试下来可以较丝滑地展示80万行的内容,但是最大显示限度被设置在了838860行,往后的将无法显示。

接下来将展示log-viewer的应用方式,首先需要在methods中将需要显示的内容处理好存放到一个绑定值中,以便于在渲染标签处绑定log-viewer的log属性,不论是从本地获取还是从后端接口获取。

fetchRemoteFile() {const filePath = this.currentFilePath;if (!filePath) {this.error = '未选择文件';this.loading = false;return;}getFileContent(filePath).then(response => {this.fileContent = response.data;this.loading = false;}).catch(error => {console.error('获取文件内容失败:', error);this.error = '获取文件内容失败: ' + (error.message || '未知错误');this.loading = false;});},

我当前通过传递一个文件路径filePath给后端,通过getFileContent接口获取到文件内容response.data存在fileContent当中,在标签中就需要使用到fileContent

<log-viewer:log="fileContent"style="height: 100%;"
/>

:log就是绑定的属性,用于显示fileContent的内容,如果需要加载动画的话可以加上:loading="isLoading",需要自行编写触发和关闭加载的时机;如果不需要显示行号的话就加上:hasNumber="false"

使用该组件前需要先引入组件,使用vue开发的话先用npm进行安装

npm install @femessage/log-viewer

然后在页面中引入

import LogViewer from '@femessage/log-viewer';
export default {name: 'LogPage',components: {LogViewer},
}
data() {return {loading: false,fileContent: '',currentFilePath: ''}
}

最后再根据你的需求调整完成后就能正常显示了。

附上组件的项目地址:

GitHub - FEMessage/log-viewer:💻在浏览器中查看终端日志

http://www.dtcms.com/a/327498.html

相关文章:

  • Java数据结构之ArrayList
  • 《算法导论》第 20 章 - van Emde Boas 树
  • 《前端性能监控深解:从指标捕获到数据洞察的完整脉络》
  • Windows已经安装了一个MySQL8,通过修改配置文件的端口号跑2个或多个Mysql服务方法,并注册为系统服务
  • linux远程部署dify和mac本地部署dify
  • 【3】Transformers快速入门:大语言模型LLM是啥?
  • 电商双 11 美妆数据分析总结
  • 自然语言处理( NLP)基础
  • Elasticsearch Node.js 客户端连接指南(Connecting)
  • 2025年最新原创多目标算法:多目标酶作用优化算法(MOEAO)求解MaF1-MaF15及工程应用---盘式制动器设计,提供完整MATLAB代码
  • 机器学习算法篇(十):TF-IDF算法详解与应用实战
  • 成都影像产业园实训考察:重庆五一职院关注技能就业
  • 人大BABEC地平线高效率具身导航!Aux-Think:探索视觉语言导航中数据高效的推理策略
  • PaddlePaddle 模型训练技巧
  • 深入C#异步编程基石:BeginInvoke与EndInvoke全解析
  • 代码随想录算法训练营四十二天|单调栈part02
  • 【Activiti】要点初探
  • 迈向具身智体人工智能:LLM 和 VLM 驱动的机器人自主性和交互性
  • 11-docker单机版的容器编排工具docker-compose基本使用
  • Qt中定时器介绍和使用
  • 文字转语音 edge_tts
  • Spring IoC实现原理详解
  • [激光原理与应用-251]:理论 - 几何光学 - 长焦与短焦的比较
  • 晶片与电路板的桥梁-封装
  • 回归预测 | Matlab实现CNN-BiLSTM-self-Attention多变量回归预测
  • 外卖投诉:差评转复购的3步攻略
  • DOM2 Style的隐藏武器:getComputedStyle()的使用指南
  • idea git commit特别慢,cpu100%
  • dag实现案例 02、实现简易版dag调度系统(基于01之上升级)
  • GeoScene 空间大数据产品使用入门(6)进阶模型