<template> <ace ref="editor" v-model="value" :lang="lang" :width="width === 0 ? '100%' : width" :height="height === 0 ? '100%' : height" :theme="theme" :options="options" @init="initEditor" v-bind="config" > </ace> </template> <script> import ace from "vue2-ace-editor"; export default { name: "Editor", components: { ace, }, props: { width: { type: Number, default: 0, }, height: { type: Number, default: 500, }, readOnly: { type: Boolean, default: false, }, theme: { type: String, default: "dracula", }, lang: { type: String, default: "json", }, config: { type: Object, default: () => { return { enableLiveAutocompletion: true, fontSize: 20, }; }, }, }, data() { return { value: "", }; }, computed: { options() { return { enableBasicAutocompletion: true, enableSnippets: true, showPrintMargin: false, //去除编辑器里的竖线 fontSize: this.config.fontSize, enableLiveAutocompletion: this.config.enableLiveAutocompletion, readOnly: this.readOnly, }; }, }, methods: { initEditor(editor) { require("brace/ext/language_tools"); // 设置语言 require("brace/mode/sh"); require("brace/mode/json"); require("brace/mode/xml"); require("brace/mode/yaml"); require("brace/mode/properties"); require("brace/snippets/sh"); require("brace/snippets/json"); require("brace/snippets/xml"); require("brace/snippets/yaml"); require("brace/snippets/properties"); // 设置主题 // 浅色 iplastic sqlserver tomorrow xcode // 深色 dracula gruvbox idle_fingers merbivore terminal tomorrow_night_bright require("brace/theme/dracula"); // 监听值的变化 editor.getSession().on("change", () => { this.$emit("change", this.value); }); }, }, }; </script> <style scoped></style>
标签:default,type,require,编辑器,mode,brace,代码,snippets From: https://www.cnblogs.com/hwy6/p/17477581.html