最近开发中的一个需要如下:
- 相似代码题库,代码展现的区域刚开始用模板字符串和v-html,能够失常显示,然而不能够按代码格局展现,所以去gitHub上找到了vue-codemirror,顺便记录下在vue我的项目中应用vue-codemirror应用过程
第一步:装置vue-codemirror
- 应用npm:
npm install vue-codemirror --save
- 应用yarn:
yarn add vue-codemirror
应用cdn:
<link rel="stylesheet" href="path/to/codemirror/lib/codemirror.css"><script type="text/javascript" src="path/to/codemirror.js"></script><script type="text/javascript" src="path/to/vue.min.js"></script><script type="text/javascript" src="path/to/dist/vue-codemirror.js"></script><script type="text/javascript" src="path/to/codemirror/{some-resources}"></script><script type="text/javascript"> Vue.use(window.VueCodemirror)</script>
第二步:全局配置
我的项目全局main.js文件内引入:
import VueCodemirror from 'vue-codemirror'// import base styleimport 'codemirror/lib/codemirror.css'// import more codemirror resource...Vue.use(VueCodemirror, /* { options: { theme: 'base16-dark', ... }, events: ['scroll', ...]} */)
第三步:组件文件内应用
test.vue文件内应用:
<template> <div class="exercise"> <codemirror v-model="codeSnippets" :options="cmOptions" /> </div></template><script>import { codemirror } from 'vue-codemirror'import 'codemirror/lib/codemirror.css'export default { data() { return { cmOptions: { tabSize: 4, mode: 'text/javascript', // 模式 theme: 'base16-dark', // 主题 lineNumbers: true, // 是否显示行数 line: true, viewportMargin: Infinity, // 解决高度自适应时搭配应用 highlightDifferences: true, autofocus: false, indentUnit: 2, smartIndent: true, readOnly: true, // 只读 showCursorWhenSelecting: true, firstLineNumber: 1, // 更多配置查问 https://codemirror.net/doc/manual.html#config }, codeSnippets: `for (var i = 0; i < 3; i++) { setTimeout(() => console.log(i), 1) } for (let i = 0; i < 3; i++) { setTimeout(() => console.log(i), 1) }`, } }, components: { codemirror },}</script><style> /* 留神:这里的款式须要全局,如果写了scoped会导致款式不失效 */.CodeMirror { border: 1px solid #eee; height: auto; /* 编辑器盒子高度自适应 */ width: 30%;}</style>