zoukankan      html  css  js  c++  java
  • vue2-ace-editor的使用

    最近开发中使用到了脚本编辑器vue2-ace-editor,这里介绍一下其简单的用法

    一、安装

        npm install vue2-ace-editor --save
    

    二、简单组件封装

    <div class="editor-box">
      <ace
          ref="editor"
          :value="content"
          @init="initEditor"
          :lang="lang"
          :height="height === 0 ? '100%' : height"
          :theme="theme"
          :options="options"
          width="100%"
          v-bind="config">
      </ace>
    </div>
    
    <script>
        import ace from 'vue2-ace-editor'
        export default {
            name: 'SqlEditor',
            components: {
                ace
            },
            props: {
                content: {
                    type: String,
                    default: ''
                },
                height: {
                    type: Number,
                    default: 0
                },
                readOnly: {
                    type: Boolean,
                    default: false
                },
                theme: {
                    type: String,
                    default: 'monokai'
                },
                lang: {
                    type: String,
                    default: 'sql'
                },
                config: {
                    type: Object,
                    default: () => {
                        return {
                            font_size: 16,
                            sql_atom: true
                        }
                    }
                }
            },
            computed: {
                options () {
                    if (this.readOnly) {
                        return {
                            enableBasicAutocompletion: true,
                            enableSnippets: true,
                            enableLiveAutocompletion: this.config.sql_atom,
                            showPrintMargin: false,
                            fontSize: this.config.font_size,
                            readOnly: true
                        }
                    }
                    return {
                        enableBasicAutocompletion: true,
                        enableSnippets: true,
                        enableLiveAutocompletion: this.config.sql_atom,
                        showPrintMargin: false,
                        fontSize: this.config.font_size
                    }
                }
            },
            created () {
            },
            methods: {
                initEditor (editor) {
                    require('brace/ext/language_tools')
                    // 设置语言
                    require('brace/mode/sql')
                    require('brace/snippets/sql')
                    // 设置主题 按需加载
                    require('brace/theme/monokai')
                    require('brace/theme/chrome')
                    require('brace/theme/crimson_editor')
                    // 监听值的变化
                    editor.getSession().on('change', val => {
                        this.$emit('change', editor.getValue())
                    })
                }
            }
        }
    </script>
    

    三、组件使用

    import Editor from '@/components/common/Editor.vue'
    
    <editor
          ref="editors"
          :content="value"
          :theme="'crimson_editor'"
          :config="config"
          @change="editorChange"></editor>
    

    四、sql语言格式化sql-formatter

    • 安装
    npm install sql-formatter --save
    
    • 使用
    import { format } from 'sql-formatter'
    
    // 方法
    formatter () {
        const editor = this.$refs.editor.editor
        const content = editor.getValue()
        const formatContent = format(content)
        editor.setValue(formatContent)
    }
    

    扩展,ace的基础用法和属性

  • 相关阅读:
    vue动态组件
    服务端渲染和nuxt简单介绍
    nuxt Window 或 Document未定义解决方案
    知乎专栏开放性api
    小程序的一些坑
    搭建微服务器(续)
    调研pwa和sw
    mysql索引原理以及优化
    装饰器
    斐波那契数列和小青蛙跳跳跳问题
  • 原文地址:https://www.cnblogs.com/wangyingblock/p/15062284.html
Copyright © 2011-2022 走看看