前端使用 vue-codemirror 显示代码高亮

前端使用 vue-codemirror 显示代码高亮

最近有一个这样的需求,我们需要在面板上显示需要设置的代码, 要求代码高亮。

这里我用到了vue-codemirror 这个插件

首先安装它

npm install vue-codemirror --save

然后在main.js中使用

import { codemirror } from 'vue-codemirror'
import 'codemirror/lib/codemirror.css'
Vue.use(codemirror)

在自己需要使用到的页面引入

import { codemirror } from 'vue-codemirror'
import 'codemirror/theme/material.css'  // 引入控制主题,没有的话主题不起效果
require("codemirror/mode/python/python.js")
require('codemirror/addon/fold/foldcode.js')
require('codemirror/addon/fold/foldgutter.js')
require('codemirror/addon/fold/brace-fold.js')
require('codemirror/addon/fold/xml-fold.js')
require('codemirror/addon/fold/indent-fold.js')
require('codemirror/addon/fold/markdown-fold.js')
require('codemirror/addon/fold/comment-fold.js')

声明一下组件

components: { codemirror },

templete中使用组件

<codemirror
    v-model="content"  
    :options="cmOptions"   
    @changes="changes"  
>
</codemirror>

data里面使用

data() {
	return {
		content: '',
		cmOptions: { // 配置项
			tabSize: 4, // 制表符的宽度
            mode: 'python', // 使用的模式
            theme: 'material', // 主题黑色
            // theme: 'darcula', // 主题白色
            lineNumbers: true, // 是否显示行号
            lineWrapping: true, // 是否应滚动或换行以显示长行
            extraKeys: { 'Ctrl': 'autocomplete' },
            lineWiseCopyCut: true, // 在没有选择的情况下进行复制或剪切将复制或剪切有光标的整行。
            showCursorWhenSelecting: true, // 选择处于活动状态时是否应绘制光标
            maxHighlightLength: Infinity, // 显示长行的时候 这个值是不限制,如果要做限制的话,值是number类型
            matchBrackets: true, // 光标匹配括号
            line: true,
            readOnly: true, // 只读
		}
	}
}

最终效果
在这里插入图片描述
这个效果最终还是不怎么满意,这里的高度限制,字体不够好看,这些我都没有找到修改的地方,如果你们找到有的,可以在评论留言告诉我,不胜感激。

查看配置地址

更新 控制行间距和自动符合代码高度

<div id="discode">
   <codemirror  
        v-model="firstform.script_content"  
        :options="cmOptions"   
        @changes="changes" 
    >
    </codemirror>
</div>
<style lang="scss"> // 这里不能加 scoped 不然就没有效果了
#discode {
    overflow-y: scroll !important;
    font-size : 13px; // 下面两行是控制行间距的
    line-height : 150%;
    .CodeMirror {
        overflow-y: scroll !important; // 这里控制高度自适应
        height: auto !important;
        .CodeMirror-scroll {
            min-height: 300px;  // 设置最小高度
        }
    }
}
</style>
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
插件实现Java代码高亮显示,可以按照以下步骤进行操作: 以下是一个Vue组件的示例,其中包含一个1. 安装vue-codemirror插件和codemirror插件: ```shell npm install vue-codemirror --save npm install codCodemirror编辑器和一个按钮,点击按钮将编辑器中的内容emirror --save ```发送到后端进行处理: ```html <template> <div> <codemirror ref="codeMirrorEditor" :value="code 2. 在main.js中引入vue-codemirror插件和codemirror插件: ```javascript import" : Vue fromoptions="{ theme: 'vue' import VueCodeMirror from ' 'base16vue-codem-dark' }irror' import" @changes 'codem="onChange"></irror/lib/ccodemirrorodemirror.css> <' import 'button @clickcodemirror="sendData/mode/cl">发送数据ike/clike</button> .js' Vue </div.use(Vue> </templateCodeMirror) ```> <script> import axios from 'axios' import 'codemirror/lib/codemirror.css' import 'codem 3. 在需要使用vue-codemirror的组件中,使用vue-codemirror标签,并设置mode属性为clirror/theme/base16-dark.css' import VueCodemirrorike,即可实现Java代码高亮显示: ```html from< 'vuetemplate> -codemirror' export default <div> { components <vue: { -codemirror codemirror v-model=": VueCodcode" :emirror.codoptions="cmemirror Options" mode }, ="clike data() { "></vue-codemirror> return { </div code:> </template '' } > <script> }, export default { methods: { data() { return onChange() { code { this: '', .code = this cmOptions:.$refs.code { tabMirrorEditor.getCodeSize: 4, () }, styleActiveLine sendData() { axios: true, .post('/api lineNumbers/data', {: true, line: data: this true, .code }) theme: ' .then(responseidea' => { } } console.log(response.data) }) .catch(error => { } } </script>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值