Skip to content
官方QQ交流群
pc端ui:468705115   点此加入
移动端ui:468217742   点此加入
技术交流1:87208295   点此加入
技术交流2:787747122   点此加入
官网
云控制台
开放平台
关注微信公众号
代码仓库: 码云

cv-editor-code 代码编辑器

简要

  • 代码编辑器,自动补齐

示例

::: demo

vue
<template>
  <div>
    <h1>cv-editor-code 演示</h1>
    <div style="max-width: 1250px; margin: 20px auto">
      <cv-form-base ref="refFormBase" :rules="formRules" :model="formData">
        <el-tabs>
          <el-tab-pane label="js编辑器">
            <h3>语法:js、主题:default</h3>
            <cv-form-item label="内容1">
              <cvEditorCode v-model="code_content1" language="js" theme="default" height="500" style="height: 500px" />
            </cv-form-item>
          </el-tab-pane>
          <el-tab-pane label="java编辑器">
            <h3>语法:java、主题:oneDark</h3>
            <cv-form-item label="内容2">
              <cvEditorCode v-model="code_content2" language="java" theme="oneDark" readOnly />
            </cv-form-item>
          </el-tab-pane>
          <el-tab-pane label="sql编辑器()">
            <h3>语法:sql、主题:githubLight</h3>
            <cv-form-item label="内容3">
              <cvEditorCode v-model="code_content3" language="sql" theme="oneDark" />
            </cv-form-item>
          </el-tab-pane>
          <el-tab-pane label="编辑器4">
            <h3>语法:无、主题:无</h3>
            <cv-form-item label="内容4">
              <cvEditorCode v-model="code_content4" language="Handlebars" />
            </cv-form-item>
          </el-tab-pane>
        </el-tabs>
      </cv-form-base>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      formRules: {},
      formData: {},
      code_content1: `import someResource from '@10yun/cv-pc-ui'
export default {
  data () {
    // 这是一个注释代码
    return {
      aaaa: 'const a = 10',
      bbbb: {
        bbb1: 4,
        bbb2: true,
      }
    }
  },
  components: examples
}`,
      code_content2: '',
      code_content22: `
import com.demo.util.MyType;
import com.demo.util.MyInterface;

public enum Enum {
  VAL1, VAL2, VAL3
}

public class Class<T, V> implements MyInterface {
  public static final MyType<T, V> member;
  
  private class InnerClass {
    public int zero() {
      return 0;
    }
  }

  @Override
  public MyType method() {
    return member;
  }

  public void method2(MyType<T, V> value) {
    method();
    value.method3();
    member = value;
  }
}

`,
      code_content3: `
SELECT 
FROM  
`,
      code_content4: `
{{#each table_list}}
package {{@root.config.package_parent}}.{{@root.config.package_module}}.{{@root.config.package_bo}};

import com.ctocode.common.mybatis.base.pojo.bo.BaseBO;
import {{@root.config.package_parent}}.{{@root.config.package_module}}.{{@root.config.package_po}}.{{class_name}}PO;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;

/**
 * Description: {{function_name}} 实体类
 *
 * @author {{@root.config.author}}
 * @date {{@root.comment_date}}
 */
@AutoMapper(target = {{class_name}}PO.class)
@Data
@EqualsAndHashCode(callSuper = true)
public class {{class_name}}BO extends BaseBO<{{class_name}}PO> {

    @Serial
    private static final long serialVersionUID = {{@root.serial_version_UID}}L;
 {{#each column_list}}
    
    /**
     * {{column_comment}}
     */
    @JsonProperty("{{column_name}}")
    private {{java_type}} {{java_field}};
    {{^}}
    {{/each}}
}
{{~/each}}
`
    };
  },
  watch: {
    code_content1(newVal) {
      // console.log(newVal);
    }
  },
  created() {
    setTimeout(() => {
      this.code_content2 = this.code_content22;
    }, 2000);
  },
  mounted() {},
  methods: {}
};
</script>

:::

全局配置(一般情况下不需要)

如果需要全局配置,请修改 src/plugins/cv-pc-ui.js 扩展

js
import cvPcUI from '@10yun/cv-pc-ui'
// 注册 全局设置
Vue.use(cvPcUI, {
  // 可以为编辑器配置全局属性, 每个实例都共享这个属性
  // 属性请参考下面
  "cvEditorCode": {
    options: {
      // ...详见[属性options参数]
    },
    toolbars:{

    }
  }
});

属性

属性名说明类型默认
v-model / modelValue组件接受的输入值也支持双向绑定。String/Number-
options参数,详见 属性 optionsObject
toolbars工具,详见 属性 toolbarsObject{copy:true}
language语言,详见 属性 languageStringPlain Text
theme主题,详见 属性 themeStringoneDark
readOnly是否只读Booleanfalse
autoSave自动保存,通过绑定@on-act-save事件Booleanfalse
interval自动保存间隔,单位:mm,需autoSave=true时才有效Number10000
width初始宽度String/Number'auto'
height初始高度,支持%String/Number600
bordered是否边框Booleantrue
exportFileName导出文件名称,默认YYYY-MM-DD_HH:mmStringYYYY-MM-DD_HH:mm
isFullscreen是否全局Booleanfalse

属性options

参数名说明类型默认
language语言类型String''
tabSize制表符,按Tab键时指定缩进Number2
lineNumbers显示行数Booleantrue
indentUnit缩进位数Number2
line是否显示行数Booleantrue

属性toolbars

工具名说明类型默认
copy复制Booleantrue

属性language

支持的语法

语言
javascript
html
json
markdown
vue
php
java
sql
python
xml
go
css

详见:https://codemirror.net/

属性theme

支持的主题

主题
default /light
oneDark
materialLight
materialDark
solarizedLight
solarizedDark
dracula
githubLight
githubDark
aura
tokyoNight
tokyoNightStorm
tokyoNightDay

详见:https://codemirror.net/

Slots插槽

插槽名说明
title在toolbars 增加标题名称

emits事件

事件名说明参数
update:modelValue仅当内容发生更改时(value: string, viewUpdate: ViewUpdate)
on-ready加载成功时(payload: { view: EditorView; state: EditorState; container:HTMLDivElement })
on-action执行任意toolbars返回action(action, state)
on-act-copy复制成功后
on-act-save自动保存后
on-act-theme主题选择后
on-act-custom自定义事件
on-act-choose-image选择图片后

相关链接

UI库

编辑器

Copyright © 2017 10yun.com | 十云提供计算服务-IPV6 | ctocode组开发