欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 使用 CodeMirror 打造屬于自己的帶高亮顯示的在線代碼編輯器

使用 CodeMirror 打造屬于自己的帶高亮顯示的在線代碼編輯器

熱門標簽:智能電銷機器人真的好嗎 四平電話機器人哪家好 株洲外呼營銷系統有哪些 靈聲智能電話機器人招聘 長春銷售外呼系統業務 企業電話機器人辦理 長春防封卡電銷卡套餐 興化400電話辦理多少錢 天津電銷卡外呼系統線路

前提

寫這個的目的是因為之前項目里用到過 CodeMirror,覺得作為一款在線代碼編輯器還是不錯,也看到過有些網站用到過在線代碼編輯,當然我不知道他們是用什么做的,這里我把公司項目里用到的那部分抽出來,單獨寫篇博客,并把抽出來的那部分代碼提交到 GitHub 去(地址),以防日后可能會再次用到(沒準畢業設計里可能用的到)。

簡單介紹

CodeMirror 是一款在線的支持語法高亮的代碼編輯器。官網: http://codemirror.net/

可能光看官網,第一眼覺得那些在線編輯器有點丑,反正第一眼給我的感覺就是這樣子,但是經過自己的細調,也能打造出一款精美的在線代碼編輯器。

官網可以把它下載下來。

下載后,解壓開得到的文件夾中,lib 下是放的是核心庫和核心 css,mode 下放的是各種支持語言的語法定義,theme 目錄下是支持的主題樣式。一般在開發中,添加 lib 下的引用和 mode 下的引用就夠了。

如何使用

下面兩個是使用 Code Mirror 必須引入的:

link rel="stylesheet" href="codemirror-5.31.0/lib/codemirror.css" rel="external nofollow" />
script src="codemirror-5.31.0/lib/codemirror.js">/script>

接下來要引用的就是在 mode 目錄下編輯器中要編輯的語言對應的 js 文件,這里以 Groovy 為例:

!--groovy代碼高亮-->
script src="codemirror-5.31.0/mode/groovy/groovy.js">/script>

如果你想讓 Java 代碼也支持代碼高亮,則需要引入我從網上下載下來的 clike.js(我已經放到我的 GitHub 去了)

!--Java代碼高亮必須引入-->
script src="codemirror-5.31.0/clike.js">/script>

引用的文件用于支持對應語言的語法高亮。

然后前面說了第一次進入 Code Mirror 官網,覺得那些編輯器比較丑,那可能是主題比較丑,我這里推薦一款還不錯的主題,只需按照如下引入即可:

!--引入css文件,用以支持主題-->
link rel="stylesheet" href="codemirror-5.31.0/theme/dracula.css" rel="external nofollow" />

如果你還想讓你的編輯器支持代碼行折疊,請按照如下進行操作:

!--支持代碼折疊-->
link rel="stylesheet" href="codemirror-5.31.0/addon/fold/foldgutter.css" rel="external nofollow" />
script src="codemirror-5.31.0/addon/fold/foldcode.js">/script>
script src="codemirror-5.31.0/addon/fold/foldgutter.js">/script>
script src="codemirror-5.31.0/addon/fold/brace-fold.js">/script>
script src="codemirror-5.31.0/addon/fold/comment-fold.js">/script>

是不是這樣引入就好了呢,當然不是啦

創建編輯器

在實際項目中,一般都不會直接把 body 整個內容作為編輯器的容器。而最常用的,是使用 textarea。這里我在 里使用個 textarea,

!-- begin code -->
textarea class="form-control" id="code" name="code">/textarea>
!-- end code-->

接下來就是創建編輯器了。

//根據DOM元素的id構造出一個編輯器
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
});

是不是有點單調?

沒錯,我還可以在里面給他設置些屬性:(充分利用我一開始引入的那些文件)

mode: "text/groovy",  //實現groovy代碼高亮
mode: "text/x-java", //實現Java代碼高亮
lineNumbers: true,	//顯示行號
theme: "dracula",	//設置主題
lineWrapping: true,	//代碼折疊
foldGutter: true,
gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"],
matchBrackets: true,	//括號匹配
//readOnly: true,    //只讀

如果需要查看更多屬性,可以去官網查找,目前我只用到這些屬性!

下面也列舉些吧:

indentUnit: integer
縮進單位,值為空格數,默認為2 。

smartIndent: boolean
自動縮進,設置是否根據上下文自動縮進(和上一行相同的縮進量)。默認為true。

tabSize: integer
tab字符的寬度,默認為4 。

indentWithTabs: boolean
在縮進時,是否需要把 n*tab寬度個空格替換成n個tab字符,默認為false 。

electricChars: boolean
在輸入可能改變當前的縮進時,是否重新縮進,默認為true (僅在mode支持縮進時有效)。

specialChars: RegExp
需要被占位符(placeholder)替換的特殊字符的正則表達式。最常用的是非打印字符。默認為:/[\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/。

specialCharPlaceholder: function(char) → Element
這是一個接收由specialChars選項指定的字符作為參數的函數,此函數會產生一個用來顯示指定字符的DOM節點。默認情況下,顯示一個紅點(•),這個紅點有一個帶有前面特殊字符編碼的提示框。

rtlMoveVisually: boolean
Determines whether horizontal cursor movement through right-to-left (Arabic, Hebrew) text is visual (pressing the left arrow moves the cursor left) or logical (pressing the left arrow moves to the next lower index in the string, which is visually right in right-to-left text). The default is false on Windows, and true on other platforms.(這段完全不曉得搞啥子鬼)

keyMap: string
配置快捷鍵。默認值為default,即 codemorrir.js 內部定義。其它在key map目錄下。

extraKeys: object
給編輯器綁定與前面keyMap配置不同的快捷鍵。

lineWrapping: boolean
在長行時文字是換行(wrap)還是滾動(scroll),默認為滾動(scroll)。

lineNumbers: boolean
是否在編輯器左側顯示行號。

firstLineNumber: integer
行號從哪個數開始計數,默認為1 。

lineNumberFormatter: function(line: integer) → string
使用一個函數設置行號。

gutters: array
用來添加額外的gutter(在行號gutter前或代替行號gutter)。值應該是CSS名稱數組,每一項定義了用于繪制gutter背景的寬度(還有可選的背景)。為了能明確設置行號gutter的位置(默認在所有其它gutter的右邊),也可以包含CodeMirror-linenumbers類。類名是用于傳給setGutterMarker的鍵名(keys)。

fixedGutter: boolean
設置gutter跟隨編輯器內容水平滾動(false)還是固定在左側(true或默認)。

scrollbarStyle: string
設置滾動條。默認為”native”,顯示原生的滾動條。核心庫還提供了”null”樣式,此樣式會完全隱藏滾動條。Addons可以設置更多的滾動條模式。

coverGutterNextToScrollbar: boolean
當fixedGutter啟用,并且存在水平滾動條時,在滾動條最左側默認會顯示gutter,當此項設置為true時,gutter會被帶有CodeMirror-gutter-filler類的元素遮擋。
inputStyle: string
選擇CodeMirror處理輸入和焦點的方式。核心庫定義了textarea和contenteditable輸入模式。在移動瀏覽器上,默認是contenteditable,在桌面瀏覽器上,默認是textarea。在contenteditable模式下對IME和屏幕閱讀器支持更好。

readOnly: boolean|string
編輯器是否只讀。如果設置為預設的值 “nocursor”,那么除了設置只讀外,編輯區域還不能獲得焦點。

showCursorWhenSelecting: boolean
在選擇時是否顯示光標,默認為false。

lineWiseCopyCut: boolean
啟用時,如果在復制或剪切時沒有選擇文本,那么就會自動操作光標所在的整行。

undoDepth: integer
最大撤消次數,默認為200(包括選中內容改變事件) 。

historyEventDelay: integer
在輸入或刪除時引發歷史事件前的毫秒數。

tabindex: integer
編輯器的tabindex。

autofocus: boolean
是否在初始化時自動獲取焦點。默認情況是關閉的。但是,在使用textarea并且沒有明確指定值的時候會被自動設置為true。

dragDrop: boolean
是否允許拖放,默認為true。

allowDropFileTypes: array
默認為null。當設置此項時,只接收包含在此數組內的文件類型拖入編輯器。文件類型為MIME名稱。

cursorBlinkRate: number
光標閃動的間隔,單位為毫秒。默認為530。當設置為0時,會禁用光標閃動。負數會隱藏光標。

cursorScrollMargin: number
當光標靠近可視區域邊界時,光標距離上方和下方的距離。默認為0 。

cursorHeight: number
光標高度。默認為1,也就是撐滿行高。對一些字體,設置0.85看起來會更好。

resetSelectionOnContextMenu: boolean
設置在選擇文本外點擊打開上下文菜單時,是否將光標移動到點擊處。默認為true。

workTime, workDelay: number
通過一個假的后臺線程高亮 workTime 時長,然后使用 timeout 休息 workDelay 時長。默認為200和300 。(完全不懂這個功能是在說啥)

pollInterval: number
指明CodeMirror向對應的textarea滾動(寫數據)的速度(獲得焦點時)。大多數的輸入都是通過事件捕獲,但是有的輸入法(如IME)在某些瀏覽器上并不會生成事件,所以使用數據滾動。默認為100毫秒。

flattenSpans: boolean
默認情況下,CodeMirror會將使用相同class的兩個span合并成一個。通過設置此項為false禁用此功能。

addModeClass: boolean
當啟用時(默認禁用),會給每個標記添加額外的表示生成標記的mode的以cm-m開頭的CSS樣式類。例如,XML mode產生的標記,會添加cm-m-xml類。

maxHighlightLength: number
當需要高亮很長的行時,為了保持響應性能,當到達某些位置時,編輯器會直接將其他行設置為純文本(plain text)。默認為10000,可以設置為Infinity來關閉此功能。

viewportMargin: integer
指定當前滾動到視圖中內容上方和下方要渲染的行數。這會影響到滾動時要更新的行數。通常情況下應該使用默認值10。可以設置值為Infinity始終渲染整個文檔。注意:這樣設置在處理大文檔時會影響性能。

如果你要設置代碼框的大小該怎么做呢?

editor.setSize('800px', '950px'); //設置代碼框的長寬

另外,如果你想給代碼框賦值,該怎么辦呢?

editor.setValue(""); //給代碼框賦值

editor.getValue(); //獲取代碼框的值

如果你再想在其他地方設置新的屬性,可以像下面這樣寫:

editor.setOption("readOnly", true); //類似這種

總結

上面就大概講了下 Code Mirror 怎么使用,那么我們來看看效果吧

我自我感覺還是可以的哈!

里面所有涉及的代碼在 GitHub 里可以下載:https://github.com/zhisheng17/CoderBlog/tree/master/CodeMirror

文章原創,轉載務必請注明原創地址

標簽:青海 巴彥淖爾 漯河 石嘴山 新疆 貴港 黑龍江 運城

巨人網絡通訊聲明:本文標題《使用 CodeMirror 打造屬于自己的帶高亮顯示的在線代碼編輯器》,本文關鍵詞  使用,CodeMirror,打造,屬于,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用 CodeMirror 打造屬于自己的帶高亮顯示的在線代碼編輯器》相關的同類信息!
  • 本頁收集關于使用 CodeMirror 打造屬于自己的帶高亮顯示的在線代碼編輯器的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    亚洲精品成人精品456| 99久久精品情趣| 国产精品无码专区| 欧美欧美欧美欧美首页| 亚洲图片欧美综合| 国产综合内射日韩久| 欧美日韩精品一区二区三区 | 午夜av免费看| 欧美日韩一区二区在线视频| 亚洲日本电影在线| av毛片久久久久**hd| 色综合天天性综合| **欧美大码日韩| av毛片久久久久**hd| 91激情五月电影| 亚洲精品视频在线观看免费| 欧美体内she精高潮| 欧美性生活一区| 亚洲va韩国va欧美va| 成人性生活免费看| 欧美成人高清电影在线| 激情五月激情综合网| www成人啪啪18软件| 国产精品久线在线观看| fc2成人免费人成在线观看播放 | 欧美风情第一页| 中文字幕在线不卡一区| 91视频你懂的| 制服丝袜亚洲播放| 美腿丝袜亚洲三区| 午夜成人亚洲理伦片在线观看| 欧美久久久一区| 日韩国产一二三区| 亚洲区自拍偷拍| 国产欧美日韩另类视频免费观看| 日韩国产成人精品| 69xxx免费| 国产精品美女久久久久久久| 91免费在线播放| 4438成人网| 精品无码三级在线观看视频| 97成人资源站| 亚洲小说春色综合另类电影| 亚洲熟妇一区二区三区| 国产精品国产三级国产aⅴ原创| 另类欧美日韩国产在线| 日本污视频网站| 亚洲天堂久久久久久久| 成年人小视频在线观看| 久久只精品国产| 91在线云播放| 精品乱人伦小说| 成人av电影在线| 欧美一区二区三区播放老司机| 亚洲一二三区在线观看| 中文字幕一区二区三区人妻| 国产精品天干天干在观线| 91色综合久久久久婷婷| 欧美一级精品在线| 成人免费看黄yyy456| 在线不卡欧美精品一区二区三区| 亚洲电影在线播放| 91精品国自产在线| 亚洲美女在线国产| 国产美女免费网站| 依依成人综合视频| 蜜桃无码一区二区三区| 一区二区三区在线视频免费| 欧美图片一区二区| 一区二区三区av电影| 欧美丰满美乳xxⅹ高潮www| 一区二区三区欧美日韩| 亚洲色图日韩精品| 亚洲成人av中文| 国产性xxxx| 九九精品一区二区| 欧美日韩一区二区在线视频| 国产精品综合在线视频| 欧美精品久久天天躁| 成人午夜视频在线| 精品国产乱码久久久久久蜜臀 | 宅男噜噜噜66一区二区66| 国内精品自线一区二区三区视频| 精品视频第一页| 亚洲成av人片在线观看无码| 黄色一级大片在线免费观看| 日本亚洲电影天堂| 欧美午夜一区二区| 成人精品高清在线| 久久精品亚洲乱码伦伦中文 | 一区视频免费观看| 蜜桃传媒麻豆第一区在线观看| jizz18女人高潮| 午夜伦欧美伦电影理论片| 极品颜值美女露脸啪啪| 国产一区二区三区四区五区美女 | 亚洲欧美另类图片小说| 女人黄色一级片| 日本欧美久久久久免费播放网| 欧美另类z0zx974| 亚洲第一在线综合网站| 一本久久精品一区二区| 国产精品亚洲а∨天堂免在线| 国产十六处破外女视频| 国产麻豆精品theporn| 日韩精品一区二区在线| 污污内射在线观看一区二区少妇 | bl动漫在线观看| 亚洲综合色自拍一区| 色综合咪咪久久| 丁香另类激情小说| 国产丝袜美腿一区二区三区| 亚洲av无码一区二区三区人| 蜜臀av性久久久久蜜臀aⅴ流畅| 少妇高潮惨叫久久久久| 韩国在线一区二区| 欧美一级理论性理论a| 久久久久久久无码| 亚洲大片在线观看| 欧美理论在线播放| 亚洲美女精品视频| 亚洲综合免费观看高清完整版| 九一在线免费观看| 久久丁香综合五月国产三级网站| 91久久精品一区二区| kk眼镜猥琐国模调教系列一区二区| 777午夜精品免费视频| 蜜桃视频无码区在线观看| 一区二区三区在线视频免费| 久久久久亚洲av无码专区体验| 奇米亚洲午夜久久精品| 日韩一区二区三区电影在线观看| www.在线欧美| 亚洲卡通欧美制服中文| 欧美在线|欧美| www.四虎精品| 亚洲成人av在线电影| 欧美一级二级三级乱码| 亚洲av综合一区二区| 美日韩黄色大片| 久久精品夜色噜噜亚洲aⅴ| 亚洲波多野结衣| 99国产精品视频免费观看| 一区二区三区在线视频观看58| 国产视频精品免费| www.久久久久久久久| 亚洲精品国产成人久久av盗摄 | 成人午夜短视频| 日韩美女久久久| 欧美日韩国产综合一区二区| 国产精品一级黄片| 久久成人免费网站| 中文字幕乱码亚洲精品一区| 国产成人无码aa精品一区| 亚洲欧美激情一区二区三区| 日韩黄色免费电影| 久久精品夜色噜噜亚洲a∨| www.超碰在线观看| 国产精品熟妇一区二区三区四区| 亚洲欧美乱综合| 91精品国产91久久久久久最新毛片| 99re6这里只有精品视频在线观看| 久久久久久99久久久精品网站| 91丝袜在线观看| 国内精品免费在线观看| 18欧美乱大交hd1984| 91麻豆精品国产91久久久| 免费看裸体网站| 97成人超碰视| 日本欧美久久久久免费播放网| 欧美日韩日日骚| 怡红院一区二区三区| 北条麻妃一区二区三区| 日韩高清一区在线| 久久久精品黄色| 欧美一a一片一级一片| 色哟哟精品观看| eeuss鲁一区二区三区| 日本不卡一区二区三区高清视频| 91精品在线免费观看| 亚洲天堂av中文字幕| 91亚洲精品乱码久久久久久蜜桃| 中文字幕在线一区免费| 91精品欧美综合在线观看最新| 中文字幕99页| 国产精品一区二区视频| 亚洲一区在线视频观看| 国产日韩综合av| 欧美精品在线观看播放| 一本一本久久a久久| 国产免费一区二区三区最新6| 五月天一区二区三区| 中文字幕av免费专区久久| 制服丝袜国产精品| 精品国产乱码久久久久久鸭王1| www.亚洲人| 久久国产免费看| 一区二区欧美视频| 国产欧美日韩视频在线观看| 精品视频1区2区3区|