codemirror6 展示vue代码

本文介绍了如何在Vue3应用中使用vue-codemirror6组件,包括安装依赖、配置代码提示、行高、JSON字符串支持以及自定义主题。开发者展示了如何在模板中嵌入Codemirror并处理ready事件和表单提交。
摘要由CSDN通过智能技术生成

参考:

vue-codemirror | Homepage

vue3中使用codemirror6增加代码提示功能_vue 编辑器提示-CSDN博客

vue-codemirror6+vue3的基础使用(行高、json字符串、黑暗主题、自定义主题)-CSDN博客

一:安装依赖 

npm i codemirror
npm i vue-codemirror
npm i @codemirror/theme-one-dark
npm i @codemirror/lang-vue

二:代码使用

<template>
  <win ref="winRef" title="代码" noBtns width="90%" top="0">
    <Codemirror
      v-model="code"
      placeholder="Code goes here..."
      :style="{ height: '80vh' }"
      :autofocus="true"
      :indent-with-tab="true"
      :tab-size="2"
      :extensions="extensions"
      @ready="handleReady"
    />
  </win>
</template>

<script lang="ts" setup>
import { Codemirror } from "vue-codemirror";
import { vue } from "@codemirror/lang-vue";
import { oneDark } from "@codemirror/theme-one-dark";
import { tpl } from "./tpls/grid";

import {
  ref,
  reactive,
  withDefaults,
  defineProps,
  defineEmits,
  defineExpose,
  toRefs,
  computed,
  watch,
  nextTick,
  toRaw,
} from "vue";
const code = ref(tpl.trim());
const extensions = [vue(), oneDark];

const winRef = ref();

function templateReplace(
  template: string,
  values: { [key: string]: string }
): string {
  return template.replace(/#(\w+)#/g, (match, key) => {
    return values[key];
  });
}
const onSubmit = async () => {
  props.afterSubmit(cloneDeep(toRaw(columns.value)));
};
function handleReady() {
  console.log("ready");
}

defineExpose({
  show: async (data?: any) => {
    let str = tpl.trim();
    const v = {
      api: data.gridApi,
      defaultFilter: data.defaultFilter || undefined,
      defaultSort: data.defaultSort || undefined,
      columns: JSON.stringify(toRaw(data.gridColumns), null, 2),
      searchFields: JSON.stringify(toRaw(data.searchColumns), null, 2),
      tbarBtns: JSON.stringify(toRaw(data.btnsColumns), null, 2),
    };
    code.value = templateReplace(str, v);
    winRef.value.show();
  },
});
</script>
<style lang="scss" scoped>
.tb {
  height: 300px;
}
</style>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值