1.介绍

本文中只使用ace-builds中src下的个别文件完成功能

githab官网:https://github.com/ajaxorg/ace-builds/tree/master
在线demo:https://ace.c9.io/build/kitchen-sink.html

2.需求描述

运维人员可以在前台中查看后台接口、实例等的运行日志,希望可以在左侧显示日志的条数。

3. 使用ace-builds

1.通过npm

通过使用npm安装ace-builds发现包过于庞大(打完包后发现ace-builds中占了2mb),很多不需要的主题和代码结构会占包中的很大一部分,但是ace-builds对于包没有提供拆分功能。
需求中很明白只需要很小一部分功能,所以可以下载到本地按需引入。

2.通过静态资源引入

通过下载github上的ace.js,完成编辑器的初始化等(注意:需要下载的是打包后版本的ace.js)

该目录下的ace.js

在需要初始化编辑器的地方引入import "@/assets/js/ace/ace"不需要使用任何表达式接收。
由于ace.js中使用的是UMD通用模块定义,会将实例自动挂接到当前上下文环境。

对于主题和代码匹配模式来说也是一样

在需要初始化编辑器的地方引入import "import "@/assets/js/ace/theme-dracula""不需要使用任何表达式接收。

3.实现效果


实现需求的代码

<template><div class="app-container"><!--   日志内容   --><div id="log-content"></div></div>
</template>
<script setup>
import "@/assets/js/ace/ace"
import "@/assets/js/ace/theme-dracula"let editor = null // ace加载实例onActivated(() => {editor = ace.edit("log-content");// 使用dracula主题editor.setTheme("ace/theme/dracula");editor.setOptions({// 只读readOnly: true,// 启用滚动autoScrollEditorIntoView: true,// 启用换行wrap: true,fontSize: '15px',// 启用自动滚动到底部  0, 0.5, and 1scrollPastEnd: 0,// 显示参考线displayIndentGuides: false})getList();if (document.querySelector('.ace_scrollbar-v')) {// 隐藏滚动条document.querySelector('.ace_scrollbar-v').className = document.querySelector('.ace_scrollbar-v').className + 'display-scrollbar'}
})// 查询日志列表
function getList() {editor.setValue(`htto no TOOs2021-08-0611:23:35 INFO platform undefined http-nio-7702-exec-8] ComoositeCantroller java.updateComposite:37)- 开始更新服务组合2021-08-0611:23:352021-08-06 11:23:35 WAR WARN[platform platform undetine undefined undefine nitp-nio-7702-exec-8 http-nio-7702-exec-8 CompositeNodejeva.init:94)(CompositeNodejava.init:94)-服务书点flow-ele-end中服务列表为空服务书点flow-ele-start中服务列表为空4 2021-08-0611:23:35 WARN oiatfor htto-n0-7702-ex6c-8 (CompositeManager.javn deleteComoosite:102)-环境中没有服务组合名Add sub 01,不需要进行删的2021-08-0611:23:35 INFO platform undefined http-nio-7702-exec-8) (CompositeManeger.java.addCompoaite.87)-新增服务组合Add_sub 01完成2021-08-06 11:23:35 DNFO piatforrm undefined http-nio-7702-ex0c-81 CompositeManager.jave.addComposite:87)-新增服务相合Add_sub 01完成7 2021-08-0611:24:10 INFO pintfom undefinee htto-nio-7702-exac-10 ComoositeControllerjevs.odateComoosite:37)开始面新 组台8 2021-08-0611:24:10 INFO platform undefined http-ni0-7702-ecec-10 CompositeCantroller.isva.uodstec Composite:37)-开始更新服务组台2021-08htto no TOOs2021-08-0611:23:35 INFO platform undefined http-nio-7702-exec-8] ComoositeCantroller java.updateComposite:37)- 开始更新服务组合2021-08-0611:23:352021-08-06 11:23:35 WAR WARN[platform platform undetine undefined undefine nitp-nio-7702-exec-8 http-nio-7702-exec-8 CompositeNodejeva.init:94)(CompositeNodejava.init:94)-服务书点flow-ele-end中服务列表为空服务书点flow-ele-start中服务列表为空4 2021-08-0611:23:35 WARN oiatfor htto-n0-7702-ex6c-8 (CompositeManager.javn deleteComoosite:102)-环境中没有服务组合名Add sub 01,不需要进行删的2021-08-0611:23:35 INFO platform undefined http-nio-7702-exec-8) (CompositeManeger.java.addCompoaite.87)-新增服务组合Add_sub 01完成2021-08-06 11:23:35 DNFO piatforrm undefined http-nio-7702-ex0c-81 CompositeManager.jave.addComposite:87)-新增服务相合Add_sub 01完成7 2021-08-0611:24:10 INFO pintfom undefinee htto-nio-7702-exac-10 ComoositeControllerjevs.odateComoosite:37)开始面新 组台8 2021-08-0611:24:10 INFO platform undefined http-ni0-7702-ecec-10 CompositeCantroller.isva.uodstec Composite:37)-开始更新服务组台2021-08htto no TOOs2021-08-0611:23:35 INFO platform undefined http-nio-7702-exec-8] ComoositeCantroller java.updateComposite:37)- 开始更新服务组合2021-08-0611:23:352021-08-06 11:23:35 WAR WARN[platform platform undetine undefined undefine nitp-nio-7702-exec-8 http-nio-7702-exec-8 CompositeNodejeva.init:94)(CompositeNodejava.init:94)-服务书点flow-ele-end中服务列表为空服务书点flow-ele-start中服务列表为空4 2021-08-0611:23:35 WARN oiatfor htto-n0-7702-ex6c-8 (CompositeManager.javn deleteComoosite:102)-环境中没有服务组合名Add sub 01,不需要进行删的2021-08-0611:23:35 INFO platform undefined http-nio-7702-exec-8) (CompositeManeger.java.addCompoaite.87)-新增服务组合Add_sub 01完成2021-08-06 11:23:35 DNFO piatforrm undefined http-nio-7702-ex0c-81 CompositeManager.jave.addComposite:87)-新增服务相合Add_sub 01完成7 2021-08-0611:24:10 INFO pintfom undefinee htto-nio-7702-exac-10 ComoositeControllerjevs.odateComoosite:37)开始面新 组台8 2021-08-0611:24:10 INFO platform undefined http-ni0-7702-ecec-10 CompositeCantroller.isva.uodstec Composite:37)-开始更新服务组台2021-08htto no TOOs2021-08-0611:23:35 INFO platform undefined http-nio-7702-exec-8] ComoositeCantroller java.updateComposite:37)- 开始更新服务组合2021-08-0611:23:352021-08-06 11:23:35 WAR WARN[platform platform undetine undefined undefine nitp-nio-7702-exec-8 http-nio-7702-exec-8 CompositeNodejeva.init:94)(CompositeNodejava.init:94)-服务书点flow-ele-end中服务列表为空服务书点flow-ele-start中服务列表为空4 2021-08-0611:23:35 WARN oiatfor htto-n0-7702-ex6c-8 (CompositeManager.javn deleteComoosite:102)-环境中没有服务组合名Add sub 01,不需要进行删的2021-08-0611:23:35 INFO platform undefined http-nio-7702-exec-8) (CompositeManeger.java.addCompoaite.87)-新增服务组合Add_sub 01完成2021-08-06 11:23:35 DNFO piatforrm undefined http-nio-7702-ex0c-81 CompositeManager.jave.addComposite:87)-新增服务相合Add_sub 01完成7 2021-08-0611:24:10 INFO pintfom undefinee htto-nio-7702-exac-10 ComoositeControllerjevs.odateComoosite:37)开始面新 组台8 2021-08-0611:24:10 INFO platform undefined http-ni0-7702-ecec-10 CompositeCantroller.isva.uodstec Composite:37)-开始更新服务组台2021-08htto no TOOs2021-08-0611:23:35 INFO platform undefined http-nio-7702-exec-8] ComoositeCantroller java.updateComposite:37)- 开始更新服务组合2021-08-0611:23:352021-08-06 11:23:35 WAR WARN[platform platform undetine undefined undefine nitp-nio-7702-exec-8 http-nio-7702-exec-8 CompositeNodejeva.init:94)(CompositeNodejava.init:94)-服务书点flow-ele-end中服务列表为空服务书点flow-ele-start中服务列表为空4 2021-08-0611:23:35 WARN oiatfor htto-n0-7702-ex6c-8 (CompositeManager.javn deleteComoosite:102)-环境中没有服务组合名Add sub 01,不需要进行删的2021-08-0611:23:35 INFO platform undefined http-nio-7702-exec-8) (CompositeManeger.java.addCompoaite.87)-新增服务组合Add_sub 01完成2021-08-06 11:23:35 DNFO piatforrm undefined http-nio-7702-ex0c-81 CompositeManager.jave.addComposite:87)-新增服务相合Add_sub 01完成7 2021-08-0611:24:10 INFO pintfom undefinee htto-nio-7702-exac-10 ComoositeControllerjevs.odateComoosite:37)开始面新 组台8 2021-08-0611:24:10 INFO platform undefined http-ni0-7702-ecec-10 CompositeCantroller.isva.uodstec Composite:37)-开始更新服务组台2021-08htto no TOOs2021-08-0611:23:35 INFO platform undefined http-nio-7702-exec-8] ComoositeCantroller java.updateComposite:37)- 开始更新服务组合2021-08-0611:23:352021-08-06 11:23:35 WAR WARN[platform platform undetine undefined undefine nitp-nio-7702-exec-8 http-nio-7702-exec-8 CompositeNodejeva.init:94)(CompositeNodejava.init:94)-服务书点flow-ele-end中服务列表为空服务书点flow-ele-start中服务列表为空4 2021-08-0611:23:35 WARN oiatfor htto-n0-7702-ex6c-8 (CompositeManager.javn deleteComoosite:102)-环境中没有服务组合名Add sub 01,不需要进行删的2021-08-0611:23:35 INFO platform undefined http-nio-7702-exec-8) (CompositeManeger.java.addCompoaite.87)-新增服务组合Add_sub 01完成2021-08-06 11:23:35 DNFO piatforrm undefined http-nio-7702-ex0c-81 CompositeManager.jave.addComposite:87)-新增服务相合Add_sub 01完成7 2021-08-0611:24:10 INFO pintfom undefinee htto-nio-7702-exac-10 ComoositeControllerjevs.odateComoosite:37)开始面新 组台8 2021-08-0611:24:10 INFO platform undefined http-ni0-7702-ecec-10 CompositeCantroller.isva.uodstec Composite:37)-开始更新服务组台2021-08`);nextTick(() => {// 光标跳转到几行几列  清楚设置内容后自动选中的效果editor.gotoLine(editor.session.getLength());})
}</script>
<style lang="scss" scoped>
.app-container {#log-content {width: 100%;height: 70vh;.display-scrollbar {display: none;}}
}
</style>

关于ace的setOptions配置https://github.com/ajaxorg/ace/wiki/Configuring-Ace

中文对照

选项名 值类型 默认 可选值 功能
selectionStyle String text line|text 选中样式
highlightActiveLine Boolean true - 高亮当前行
highlightSelectedWord Boolean true - 高亮选中文本
readOnly Boolean false - 是否只读
cursorStyle String ace ace|slim|smooth|wide 光标样式
mergeUndoDeltas String|Boolean false always 合并撤销
behavioursEnabled Boolean true - 启用行为
wrapBehavioursEnabled Boolean true - 启用换行
autoScrollEditorIntoView Boolean false - 启用滚动
copyWithEmptySelection Boolean true - 复制空格
useSoftTabs Boolean false - 使用软标签
navigateWithinSoftTabs Boolean false - 软标签跳转
enableMultiselect Boolean false - 选中多处
hScrollBarAlwaysVisible Boolean false - 纵向滚动条始终可见
vScrollBarAlwaysVisible Boolean false - 横向滚动条始终可见
highlightGutterLine Boolean true - 高亮边线
animatedScroll Boolean false - 滚动动画
showInvisibles Boolean false - 显示不可见字符
showPrintMargin Boolean false - 显示打印边距
printMarginColumn Number 80 - 设置页边距
printMargin Boolean|Number false - 显示并设置页边距
fadeFoldWidgets Boolean false - 淡入折叠部件
showFoldWidgets Boolean true - 显示折叠部件
showLineNumbers Boolean true - 显示行号
showGutter Boolean true - 显示行号区域
displayIndentGuides Boolean true - 显示参考线
fontSize Number|String inherit - 设置字号
fontFamily String inherit 设置字体
maxLines Number - - 至多行数
minLines Number - - 至少行数
scrollPastEnd Boolean|Number 0 - 滚动位置
fixedWidthGutter Boolean false - 固定行号区域宽度
theme String - - 主题引用路径,例如"ace/theme/textmate"
scrollSpeed Number - - 滚动速度
dragDelay Number - - 拖拽延时
dragEnabled Boolean true - 是否启用拖动
focusTimout Number - - 聚焦超时
tooltipFollowsMouse Boolean false - 鼠标提示
firstLineNumber Number 1 - 起始行号
overwrite Boolean - - 重做
newLineMode String auto auto|unix|windows 新开行模式
useWorker Boolean - - 使用辅助对象
useSoftTabs Boolean - - 使用软标签
tabSize Number - - 标签大小
wrap Boolean - - 换行
foldStyle String - markbegin|markbeginend|manual 折叠样式
mode String - - 代码匹配模式,例如“ace/mode/text"
enableBasicAutocompletion Boolean - - 启用基本自动完成
enableLiveAutocompletion Boolean - - 启用实时自动完成
enableSnippets Boolean - - 启用代码段
enableEmmet Boolean - - 启用Emmet
useElasticTabstops Boolean - - 使用弹性制表位

4.ace-editor修改滚动条样式

直接设置编辑器容器无法改动滚动条样式,深度监听ace生成的ace_scrollbar类名

// 设置编辑器的滚动条样式
:deep(.ace_scrollbar)::-webkit-scrollbar {height: 7px;width: 7px;
}
:deep(.ace_scrollbar)::-webkit-scrollbar-track {box-shadow: inset 0 0 6px rgba(0,0,0,0.3);background-color: #272822; /* Matches ace monokai */border-radius: 10px;
}
:deep(.ace_scrollbar)::-webkit-scrollbar-thumb {background-color: darkgrey;outline: 1px solid slategrey;border-radius: 10px;
}

监听编辑器的任何更改可查看https://ajaxorg.github.io/ace-api-docs/classes/Ace.EditSession.html#on

还有什么疑问请查看aceAPi文档https://ace.c9.io/

vue3 + vite中按需使用ace-builds实现编辑器相关推荐

  1. 在vue3+vite中引入高德开放平台API实现边界范围多边形的绘制

    在vue3+vite中引入高德开放平台API实现边界范围多边形的绘制 1,先去高德地图开放平台申请账号注册流程不再赘述; 2,在我的应用中创建key,选择web端Js点击提交生成; 3,生成后可以看到 ...

  2. vue3+vite中使用环境变量 .env 的一些配置情况说明

    在项目文件中新建文件.env .env.pro 两个文件其中.env 是默认设置 .env.pro 为正式环境设置 1.设置.env中的内容信息 注意vue3+vite 必须使用VITE开头的配置信息 ...

  3. vue3+vite中显示img图片,显示不出来问题。

    方法一: 添加链接描述 方法二:(return new URL(../assets/img/${image}, import.meta.url).href) 添加链接描述 方法三: 添加链接描述 方法 ...

  4. webRtc播放rtsp视频流(vue2、vue3+vite+ts)

    一.下载webRtc 开发环境用的win10版本的. github上直接下载,速度感人. Releases · mpromonet/webrtc-streamer · GitHub 提供资源下载,0积 ...

  5. 【jsx开发Vue】在Vite+Vue3.0中使用jsx语法开发。

    所有内容首发微信公众号[WEB前端李志杰],未经允许禁止转载! 可能大家要问我为什么要使用jsx语法开发Vue? 首先要说明的是:个人认为jsx语法和模板语法并不存在优劣之分,在实际项目中应该优先选择 ...

  6. 如何在vue3+vite+ts中使用require

    vue3+vite+ts中不能使用require 之前使用vue2,去动态设置图片src属性时,采用require,但是vue3+vite+ts中使用require,项目能够运行,但浏览器中报错req ...

  7. Vite + Vue3 项目中,使用 vw/vh 适配移动端,并通过 Android Studio 打包

    目录 1. 使用 vw/vh 适配移动端 1.1 使用 vite 初始化项目 1.2 安装插件,将 px 转化成 vw 1.2.1 在 vite.config.ts 中,声明插件 1.2.2 手写 p ...

  8. vue3 + vite + ts + setup , 第十二练 Vue3 css style 新特性,样式穿透,插槽选择器,全局选择器,在vue3中使用tailwindcss

    一.vue3.x 样式新特性 样式穿透  深度选择器 <style scoped> .a :deep(.b) {/* ... */ } </style> 插槽选择器 <s ...

  9. vue3项目中如何使用iconfont图标?体积太大?看这篇文章就够了!

    正文 工具链接: iconfont图标一键下载浏览器插件(2000+图标一秒下载打包) 示例链接: iconfont在vue3中按需使用和编译打包示例 说明 在vue3项目中使用iconfont图标是 ...

  10. SSM 尚筹网 Vue3 + Vite + Java

    SSM 尚筹网 2022年3月27日15:07:51 文章目录 SSM 尚筹网 1.Maven结构: 1.基于Maven的MyBatis逆向工程 2.资源归为 3. 父工程管理 4.SSM整合步骤 4 ...

最新文章

  1. JVM---垃圾回收算法详解
  2. js事件(Event)知识整理
  3. 自律到极致-人生才精致:第9期
  4. Java Jtree渲染叶子实现可以添加swing组件
  5. Linux 下zip包的压缩与解压
  6. 后台开发必读书籍--Linux 高性能服务器编程
  7. JSON.stringify()方法
  8. 数字语音信号处理学习笔记——语音信号的短时时域分析(2)
  9. 如何使用 API 的方式给 SAP service cloud Registered product 上传图片
  10. php全局变量的关键字,php的static关键字和全局变量
  11. 【clickhouse】clickhouse INSERT INTO 语句
  12. python称号_C 语言荣获 2019 年度最佳编程语言称号
  13. 一个线性四叉树编码的试题
  14. 空天地一体化无线光通信网络关键技术及其发展趋势
  15. http://atom8023.blog.51cto.com/2651558/1333582
  16. 5G,仅仅是更快的网速吗?
  17. histogram函数 python_Python numpy.histogram函数方法的使用
  18. 不良资产证券化信披 担任怎样的角色
  19. Python Numpy的数组array和矩阵matrix
  20. 高科技恢复展示模式-VR安全教育|广州华锐互动

热门文章

  1. zigbee协议栈初使用(四)无线串口透传
  2. 个人微信支付宝接入GOGO支付免签系统详细教程(图文)
  3. 第三方支付4(前端实现支付)
  4. 玩转华为ENSP模拟器系列 | 通过STelnet登录其他设备举例(DSA)
  5. 2-PHP代码审计——PHPCMSV9.6.0 sql注入漏洞
  6. 【Java】Response约定
  7. 基于GAN的动漫头像生成
  8. 全新型App开放框架—Clouda
  9. Cocos Creator三消小游戏(TS 02版)
  10. IT转型之路(一) 迷茫、困惑