1. 程式人生 > >CodeMirror---實現關鍵詞高亮

CodeMirror---實現關鍵詞高亮

提示 scrip 預覽 enum 指定 編輯器 語法 temp let

這周前端vue項目有一小需求,需要實現在文本框中輸入不同編程語言代碼塊並且讓關鍵詞高亮顯示。

經過調研決定使用vue-codemirror和codemirror;

原因如下:

  • vue-codemirror是基於codemirror,適用於 Vue 的 Web 代碼編輯器;
  • 但是導入vue-codemirror後並沒有發現codemirror的核心css以及使用的語言語法定義文件,如下圖;

技術分享圖片

實現過程如下:

1.導入插件

//導入codemirror 插件
npm install codemirror --save

//導入vue-codemirror 插件
npm install vue-codemirror --save  

2.全局掛載

技術分享圖片

3.在需要使用該插件的組件中掛載

技術分享圖片
 1 <template>
 2     <codemirror v-model="code" :options="cmOptions" class="code"></codemirror>
 3 </template>
 4 <script>
 5 //導入組件
 6 import { codemirror } from "vue-codemirror";
 7 //導入使用的語言語法定義文件
 8 require("codemirror/mode/python/python.js");
 9
require("codemirror/mode/javascript/javascript.js"); 10 require("codemirror/mode/clike/clike.js"); 11 require("codemirror/mode/shell/shell.js"); 12 //導入選中的theme文件 13 require("codemirror/theme/blackboard.css"); 14 //導入自動提示核心文件及樣式 15 require("codemirror/addon/hint/show-hint.css"); 16 require("codemirror/addon/hint/show-hint.js
"); 17 //導入指定語言的提示文件 18 require("codemirror/addon/hint/javascript-hint.js"); 19 export default { 20 //註冊組件 21 components: { 22 codemirror 23 }, 24 data() { 25 return { 26 //編輯器的默認輸入值 27 code: "var a=1\nlet b=2", 28 cmOptions: { 29 tabSize: 4, 30 mode: "text/javascript", //識別的語言javascript 31 // mode:"text/x-java", //識別的語言java 32 // mode:"text/x-sh", //識別的語言shell腳本 33 theme: "blackboard", //編輯器的主題 34 lineNumbers: true, //顯示行號 35 line: true 36 } 37 }; 38 } 39 </script>
View Code

4.實現的效果

技術分享圖片

附:主題預覽

CodeMirror---實現關鍵詞高亮