日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

Vue + monaco-editor

發布時間:2024/3/24 vue 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vue + monaco-editor 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔

文章目錄

    • 前言
      • 一、monaco-editor是什么?
      • 二、使用步驟
        • 1.安裝依賴
        • 2.編寫組件
        • 3.自定義提示
  • 總結


前言

最近接手了一個新項目,這個項目中有一個需求點就是需要展示json,并且可能還要編輯展示代碼,然后我就去調研了關于代碼編輯器的有關技術,經過對比決定使用monaco-editor。


提示:以下是本篇文章正文內容,下面案例可供參考

一、monaco-editor是什么?

monaco-editor一款代碼編輯器,是微軟開源的一個web編輯器,vscode中也是集成它來實現的,所以我們可以通過monaco-editor在我們的網頁中集成一個vscode出來,好的廢話不多說,直接開干。

二、使用步驟

1.安裝依賴

yarn add monaco-editor 或 npm i monaco-editor

2.編寫組件

我的代碼如下:

<div ref="json-editor-code" class="json-editor"></div> @Component export default class JsonCodeEditor extends Vue {@Prop({ default: () => {} }) private data!: any@Prop({ default: () => {} }) private opt?: anyprivate editor: any;private monaco: any= monaco;private options: any = {language: 'json', // 這里你可以自己寫語言。我是寫死了。automaticLayout: true,tabSize: 2,overviewRulerBorder: false,scrollBeyondLastLine: false,minimap: {enabled: false // 不要小地圖},theme: 'vs',fontSize: "14px",autoIndent:true,//自動布局}@Watch('data', { deep: true })private activeChange(val: any) {let current: any = this.jsonValidator(this.editor.getValue())if (current && !isEqual(val, current)) {this.editor.setValue(JSON.stringify(val))this.format()}}// json格式檢查private jsonValidator(val: string) {let parsedValuetry {parsedValue = JSON.parse(val)return parsedValue} catch (e) {return false}}private mounted() {this.initEditor()setTimeout(()=>{this.format()},100)}private initEditor() {let container = (this.$refs['json-editor-code'] as HTMLElement);this.editor = this.monaco.editor.create(container, {value: JSON.stringify(this.data),//編輯器初始顯示文字...Object.assign(this.options, this.opt),scrollbar: {horizontal: 'hidden',}})this.editor.onDidChangeModelContent(() => {this.$emit('code-change', this.jsonValidator(this.editor.getValue()), this.editor, this.monaco)})}private destroyed() {this.editor?.dispose()}private format() {this.editor.getAction('editor.action.formatDocument').run()} }

自此我們就完成一個編輯器組件的一次簡單封裝。

3.自定義提示

如果我們想要自定義代碼提示,并且還能自定義提示警告那該怎么辦呢?
其實官方給我們提供了一個演示的demo,但是我沒有直接跑出來,經過我的摸索也算是實現了,附上schema規則書寫文檔和一個能在線生成規則的網站。接下來請看,假設規則如下:

const domain = '127.0.0.1' const validators = [{ name: 'button',uri: domain + 'schemas/base/button.json#',schema: {type: 'object',//...}},{ name: 'input',uri: domain + 'schemas/base/input.json#',schema: {type: 'object',//...}} ]

那么我們封裝一個函數用于獲取規則

private getRule(type) {return validators.find((vd: any) => vd.name === type);}private switchRules(val: any) {let ruleArray = getRule(val.type)ruleArray = Object.assign(cloneDeep(ruleArray), { fileMatch: ['*'] }) // 這里不可少 this.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({validate: true,schemas: cloneDeep(ruleArray)})}

獲取規則的函數我們有了以后,只需要在數據改變的時候調用這個方法即可更新成匹配當前數據的規則了。

@Watch('data', { deep: true })private activeChange(val: any) {let current: any = this.jsonValidator(this.editor.getValue())if (current && !isEqual(val, current)) {this.switchRules(val) // 這樣就更新了規則this.editor.setValue(JSON.stringify(val))this.format()}}

總結

monaco還是有缺陷的,比如你的規則會被多個monaco-editor實例共享,不過只要你手動去除就好了,這點也還是能接收。希望這篇文章能夠幫助到你。喜歡的話記得一鍵三連。

總結

以上是生活随笔為你收集整理的Vue + monaco-editor的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩一级淫片 | 亚洲男人在线天堂 | 污污的视频在线免费观看 | 免费成年人视频 | wwwxxx黄色片 | 最新中文字幕一区 | 国产区91 | 开元在线观看视频国语 | 国产古装艳史毛片hd | 制服丝袜国产精品 | 欧美一区二区三区四区五区 | 欧美激情视频网 | 干美女少妇 | 视频在线亚洲 | 日本香蕉网| 91亚洲精品久久久蜜桃借种 | 四虎av影视 | 国产成人综合欧美精品久久 | 成人精品视频一区二区三区尤物 | 欧美香蕉网 | 手机在线看片你懂的 | 久草毛片 | 日本h漫在线观看 | 欧美另类z0zx974 | 天堂网资源 | 日本免费一区二区三区 | 狠狠人妻久久久久久综合麻豆 | 国产精品搬运 | 婷婷精品一区二区三区 | 91国内精品久久久久 | 伊人久久久久久久久久久久久 | 色婷婷av一区二区三区大白胸 | 免费啊v在线观看 | 久久久精品毛片 | 国产区在线观看视频 | 国产a√精品区二区三区四区 | 国产真实生活伦对白 | 国产在线精品观看 | 日韩午夜精品视频 | 久久精品国产露脸对白 | 久久金品| 超碰碰碰 | 国产又大又粗又硬 | 男女野外做受全过程 | 999国产精品视频 | 国产欧美在线看 | 中文字幕1区2区3区 www.com黄色片 | 精品国产乱码久久久久久鸭王1 | 亚洲综合久久av一区二区三区 | 人妻激情偷乱视频一区二区三区 | 国产精品久久婷婷六月丁香 | 日韩av在线高清 | 欧美狠狠 | 国产美女av在线 | av影视在线观看 | 欧美日韩1区 | 香蕉视频在线观看网站 | 亚洲.www| 一级片在线观看视频 | 性久久久 | 国产在线观看免费视频今夜 | 最新高清无码专区 | 韩国一区二区在线播放 | 欧美在线性 | 国产一区二区三区在线 | 欧美黄色激情视频 | 欧美日本一道 | 爆操白虎逼| 办公室大战高跟丝袜秘书经理ol | 午夜国产一区二区三区 | 欧美一区二区视频免费观看 | 成人黄色一区二区 | 亚洲国产精品人人爽夜夜爽 | 亚洲欧美一二三区 | 色乱码一区二区三区在线男奴 | 天天色综网 | 天堂在线免费视频 | 亚洲女人毛茸茸 | 中文第一页 | 少妇人禽zoz0伦视频 | 国模无码视频一区 | 男人天堂avav | 日韩少妇高潮抽搐 | 日韩精品中文字幕一区二区 | japan粗暴video蹂躏 | 欧美日本在线视频 | 亚洲av无码精品色午夜果冻不卡 | 亚洲精品成人片在线观看精品字幕 | 嫩草视频免费观看 | 亚洲激情视频网 | 黄色小网站入口 | 欧美 丝袜 自拍 制服 另类 | 男人天堂99 | 怡红院毛片 | 黄色网在线免费观看 | av影院在线 | 欧美日韩一区二区在线观看 | 亚洲综合在线一区二区 | 九色网站在线观看 |