vue3 + codemirror

1. 镜像

npm install codemirror --save
npm install vue-codemirror --save
npm install @codemirror/lang-css --save
npm install @codemirror/lang-html --save
npm install @codemirror/lang-javascript --save
npm install @codemirror/lang-python --save
npm install @codemirror/lang-java --save
npm install @codemirror/lang-php --save
npm install @codemirror/theme-one-dark --save

2. 编写组件

<script setup lang="ts">
import { Codemirror } from 'vue-codemirror';
import { javascript } from '@codemirror/lang-javascript';
import { css } from '@codemirror/lang-css';
import { html } from '@codemirror/lang-html';
import { java } from '@codemirror/lang-java';
import { python } from '@codemirror/lang-python';
import { php } from '@codemirror/lang-php';
import { oneDark } from '@codemirror/theme-one-dark';
import { ref, onMounted } from 'vue';

// 编辑器内容
let content = ref('');

// 扩展
let extensions = [css(), html(), javascript(), java(), python(), php(), oneDark];

onMounted(() => {
    // 赋值,初始化
    content.value = props.code;
});

// 属性
const props = defineProps(['code']);

// 获取值
const getValue = () => {
  return content.value
}

// 暴露方法,外部引用
defineExpose({
  getValue
})
</script>
<template>
    <Codemirror id="codemirror" v-model="content" :spellcheck="true" :autofocus="true" :indent-with-tab="true" :tabSize="4"
        :extensions="extensions" />
</template>
<style lang="less" scoped>
#codemirror {
    width: 100%;
    height: 300px;

    :deep(.cm-editor) {
        width: 100%;
    }
}
</style>

3. 引用

<script setup lang='ts'>
import CodeEditor from '@/components/CodeEditor.vue';
import { ref } from 'vue';

// codemirror 的 ref
const codemirrorRef = ref<any>()

// 编码
const code = ref<string>('')

// 打印
const print = () => {
    console.log(tinymceRef.value.getValue())
}
</script>
<template>
     <CodeEditor ref="codemirrorRef" :code="code" />
    <button @click="print">打印</button>
</template>

4. 效果

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Vue 3 项目中使用 CodeMirror,可以使用 Vite 作为构建工具,并按照以下步骤安装: 1. 安装 CodeMirror 和 @codemirror/vue3 包: ``` npm install codemirror @codemirror/vue3 ``` 2. 在 Vue 3 项目的 `main.js` 文件中引入 CodeMirror 样式和 `@codemirror/vue3`: ```js import 'codemirror/lib/codemirror.css' import '@codemirror/theme-seti/theme-seti.css' import { createApp } from 'vue' import App from './App.vue' import { codemirror } from '@codemirror/vue3' import { defaultTabBinding } from '@codemirror/commands' import { keymap } from '@codemirror/view' import { javascript } from '@codemirror/lang-javascript' const app = createApp(App) app.use(codemirror({ theme: 'seti', lineNumbers: true, tabSize: 2, extensions: [keymap.of([defaultTabBinding]), javascript()] })) app.mount('#app') ``` 在这里,我们选择了 Seti 主题,并启用了行号和 2 个空格的缩进。我们还添加了 `@codemirror/commands` 和 `@codemirror/view` 包中的默认 Tab 绑定,以及 `@codemirror/lang-javascript` 包中的 JavaScript 语言扩展。 3. 在 Vue 3 项目中使用 `<codemirror>` 组件: ```vue <template> <div> <codemirror v-model="code" :options="{ mode: 'javascript', theme: 'seti', lineNumbers: true, tabSize: 2 }" /> </div> </template> <script> export default { data() { return { code: 'const message = "Hello, world!";\nconsole.log(message);' } } } </script> ``` 在这里,我们将 CodeMirror 组件的值绑定到 `code` 数据属性,并设置了选项,包括 JavaScript 模式、Seti 主题、行号和 2 个空格的缩进。 这样就可以在 Vue 3 项目中使用 CodeMirror 了!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值