vuejs项目中怎样引入codemirror

1.问题

用了vuejs的项目中,使用codemirror做实时代码高亮。

对于codemirror相关的css和js文件,如果手动引入外部的,则能正确显示行号、实时高亮(本地编辑器如sublime的高亮体验)

clipboard.png

如果引入通过npm下载到node_modules目录下的,那么就不能正常使用:语法不能高亮。

clipboard.png

2.代码

用vue-cli的webpack模版建的项目。

index.html

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8"/>
  
  <script src="static/lib/codemirror.js"></script>
  <link rel="stylesheet" href="static/lib/codemirror.css">
  <script src="static/mode/javascript/javascript.js"></script>
  
  
</head>

<body>
  <h1>代码编辑区域</h1>
  <div v-banzi="neirong"></div>
</html>

入口js文件main.js

import Vue from 'vue'
// import CodeMirror from 'codemirror'

Vue.directive('banzi', {
  twoWay: true,
  bind: function () {
    this.codemirror = CodeMirror(this.el, {
      mode: 'javascript',
      lineNumbers: true
    })
    this.codemirror.on('change', function () {
      this.set(this.codemirror.getValue())
    }.bind(this))
  },
  update: function (value, oldValue) {
    this.codemirror.setValue(value || '')
  }
})


/* eslint-disable no-new */
new Vue({
  el: 'body',
  data: {
    'neirong': ''
  }
})

====== update ======

用npm装的codemirror,里面没有index.js,有bower.json:

{
  "name": "codemirror",
  "main": ["lib/codemirror.js", "lib/codemirror.css"],
  "ignore": [
    "**/.*",
    "node_modules",
    "components",
    "bin",
    "demo",
    "doc",
    "test",
    "index.html",
    "package.json",
    "mode/*/*test.js",
    "mode/*/*.html"
  ]
}

参照bower.json,我尝试这样引入codemirror:

import CodeMirror from 'codemirror/lib/codemirror.js'

但是不起作用

===== 再次update ======

在根组件App.vue中这样引入codemirror:

import CodeMirror from 'codemirror/lib/codemirror'   // CodeMirror,必要
import 'codemirror/lib/codemirror.css'    // css,必要
import 'codemirror/mode/javascript/javascript'  // js的语法高亮,自行替换为你需要的语言
阅读 16.7k
3 个回答

结贴了。

import CodeMirror from 'codemirror/lib/codemirror'   // CodeMirror,必要
import 'codemirror/lib/codemirror.css'    // css,必要
import 'codemirror/mode/javascript/javascript'  // js的语法高亮,自行替换为你需要的语言

效果

clipboard.png

参考

如果引入通过npm下载到node_modules目录下的,那么就不能正常使用:语法不能高亮。


这里应该是 import Codemirror from 'codemirror/css/codemirror' 或 import Codemirror from 'codemirror/js/codemirror'  可能路径没写对。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题