vue3中使用ace-builds,并设置自定义代码提示(Echarts 配置项),添加代码格式化功能

首先安装 ace-builds

“ace-builds”: “^1.24.0”

代码中
import { keywords } from '@/editor/data/option-keywords'自定义的代码提示配置文件

自定义代码提示文件内容如下图:
在这里插入图片描述
其实还可以添加一个代码格式化插件。
import beautify from 'js-beautify';

“js-beautify”: “^1.14.9”,

完整代码如下:

<template>
    <div ref="ace_dom"></div>
</template>
<script setup lang="ts">
import ace from 'ace-builds'
import 'ace-builds/src-noconflict/mode-javascript'
import 'ace-builds/src-noconflict/snippets/javascript'
import 'ace-builds/src-noconflict/ext-language_tools'
import { onMounted, ref } from 'vue';
import { keywords } from '@/editor/data/option-keywords'
import beautify from 'js-beautify';

const props = defineProps({
    modelValue: String
})

const emit = defineEmits(['update:modelValue'])

const ace_dom = ref(null)
onMounted(() => {
    const editor = ace.edit(ace_dom.value, {
        enableSnippets: true,
        enableBasicAutocompletion: true,
        enableLiveAutocompletion: true,
        maxLines: 50, // 最大行数,超过会自动出现滚动条
        minLines: 30, // 最小行数,还未到最大行数时,编辑器会自动伸缩大小
        fontSize: 14, // 编辑器内字体大小
        mode: 'ace/mode/javascript', // 默认设置的语言模式
        tabSize: 4, // 制表符设置为 4 个空格大小
        useWorker: false,
        value: props.modelValue || '', // 格式化代码的话这行代码就没必要存在了。
    })
// 如果需要格式化代码, 添加下面这代码
editor.setValue(beautify(props.modelValue || "", {/* 格式化代码配置项 */}), 1);

    const completions = keywords.map(keyword => ({
        caption: keyword.name,
        value: keyword.name,
        score: keyword.count,
        meta: 'local'
    }))

    ace.config.loadModule('ace/ext/language_tools', langTools => {
        langTools.addCompleter({
            getCompletions: function (editor, session, pos, prefix, callback) {
                callback(null, completions)
            }
        })
    })

    editor.getSession().on('change', () => emit('update:modelValue', editor.getValue().trim()))
})
</script>
  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要封装并添加自定义语言,需要遵循以下步骤: 1. 安装 vue3-ace-editor ``` npm install vue3-ace-editor ``` 2. 创建一个 Vue 组件,引入 vue3-ace-editor ``` <template> <div> <vue3-ace-editor v-model="code" :options="aceOptions" /> </div> </template> <script> import { defineComponent } from 'vue'; import VueAceEditor from 'vue3-ace-editor'; export default defineComponent({ name: 'Editor', components: { VueAceEditor }, data() { return { code: '', aceOptions: { // 配置 }, }; }, }); </script> ``` 3. 在 aceOptions 添加自定义语言 ``` aceOptions: { mode: 'ace/mode/custom', // 自定义语言的 mode 名称 customMode: { // 自定义语言的配置 }, }, ``` 4. 创建自定义语言的 mode 文件 在创建一个新的 js 文件,例如 `my-language-mode.js`,并添加以下代码: ``` ace.define('ace/mode/custom', ['require', 'exports', 'module', 'ace/lib/oop', 'ace/mode/text', 'ace/mode/custom_highlight_rules'], function ( require, exports, module ) { 'use strict'; var oop = require('../lib/oop'); var TextMode = require('./text').Mode; var CustomHighlightRules = require('./custom_highlight_rules').CustomHighlightRules; var Mode = function () { this.HighlightRules = CustomHighlightRules; }; oop.inherits(Mode, TextMode); (function () { this.$id = 'ace/mode/custom'; }.call(Mode.prototype)); exports.Mode = Mode; }); ``` 5. 创建自定义语言的 highlight rules 文件 在创建一个新的 js 文件,例如 `my-language-highlight-rules.js`,并添加以下代码: ``` ace.define('ace/mode/custom_highlight_rules', ['require', 'exports', 'module', 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function ( require, exports, module ) { 'use strict'; var oop = require('../lib/oop'); var TextHighlightRules = require('./text_highlight_rules').TextHighlightRules; var CustomHighlightRules = function () { this.$rules = { // 高亮规则 }; }; oop.inherits(CustomHighlightRules, TextHighlightRules); exports.CustomHighlightRules = CustomHighlightRules; }); ``` 6. 在 Vue 组件引入自定义语言的 mode 和 highlight rules 文件 ``` <script> import { defineComponent } from 'vue'; import VueAceEditor from 'vue3-ace-editor'; import 'path/to/my-language-mode'; import 'path/to/my-language-highlight-rules'; export default defineComponent({ name: 'Editor', components: { VueAceEditor }, data() { return { code: '', aceOptions: { mode: 'ace/mode/custom', customMode: { // 配置 }, }, }; }, }); </script> ``` 7. 配置自定义语言的高亮规则 在 `my-language-highlight-rules.js` 文件配置自定义语言的高亮规则。具体的规则可以参考 Ace Editor 的官方文档。 8. 配置自定义语言的模式 在 `my-language-mode.js` 文件配置自定义语言的模式。具体的模式可以参考 Ace Editor 的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值