国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端使用JSON編輯器、java編輯器、瀏覽器中使用eslint

這篇具有很好參考價值的文章主要介紹了前端使用JSON編輯器、java編輯器、瀏覽器中使用eslint。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、vue3中使用Json 編輯器

// 安裝
npm install vue3-json-editor --save        npm install vue3-json-editor@latest --save 
// 項目中使用(兩種導入方式本質(zhì)上一致,區(qū)別在于模塊的默認導出方式不同)
import { Vue3JsonEditor } from 'vue3-json-editor/dist/vue3-json-editor.cjs.js' // 使用了ES6的解構賦值語法,從CommonJS規(guī)范導出的模塊中,顯式地導入了名稱為Vue3JsonEditor的變量。這樣的話,您需要在代碼中顯式地使用該變量來創(chuàng)建組件
import Vue3JsonEditor from 'vue3-json-editor' // 直接導入了默認導出的組件,可以直接使用Vue3JsonEditor變量來創(chuàng)建組件(已經(jīng)配置了Webpack或Vite等構建工具使其能夠識別.vue文件,并通過單文件組件的方式進行開發(fā))
import { Vue3JsonEditor } from 'vue3-json-editor/dist/vue3-json-editor.cjs.js';
<Vue3JsonEditor 
	v-model="debugInput"  // 雙向綁定數(shù)據(jù)
	@json-change="jsonChange"   // 改變調(diào)用事件
	@json-save="onJsonSave"  // 保存調(diào)用事件
	@has-error="onError" 
	key="1" 
	:mode="'text'"   // 默認模式tree(tree,code,form,text,view)  text文本結構,比較好添加和編輯內(nèi)容.樹結構看數(shù)據(jù)比較直觀,還可以添加你想要的類型的數(shù)據(jù)
	ref="editor" 
	:showBtns="false"  // 是否展示保存按鈕
	:expandedOnStart="true"  // 是否展開JSON編輯器模式
	v-if="form.method==2" c
	lass="command-issuing-script-json" 
	@@blur="validate" 如果需要校驗json是否正確,可以監(jiān)測@blur事件,使用editor.validate()來校驗json數(shù)據(jù)
/>

 const jsonChange = (val) => {
      state.debugInput = val
      state.hasJsonFlag = true
 }
  const onError = (err) => {
      state.hasJsonFlag = false
  }
	// 在組件中增加 exportJson 方法
    const exportJson = () => {
      const data = editor.value.getJSON()  // 在組件實例上獲取
      const jsonDataStr = JSON.stringify(data, null, 2) // 拿到json字符串
      // 注意也可以直接拿動態(tài)綁定的字段
      const blob = new Blob([jsonDataStr], { type: 'application/json' })
      const url = URL.createObjectURL(blob)
      const link = document.createElement('a')
      link.href = url
      link.download = 'data.json'
      link.click()
      URL.revokeObjectURL(url)
    }

// 主要功能點1)支持雙向綁定:您可以使用 v-model 指令將 Vue3JsonEditor 組件與父組件中的數(shù)據(jù)進行雙向綁定。并自動格式化

二、react中使用(也可用在vue項目中)可用于java、js、json等
Monaco Editor 是一個瀏覽器端的代碼編輯器,它是 VS Code 編輯器的核心部分,可以提供強大的代碼編輯能力,它是 VSCode 的瀏覽器版本Monaco Editor 的特點包括:
(1)支持多種編程語言
(2)支持語法高亮、智能提示、自動補全等編輯器功能
(3)可以集成到 Web 應用程序中,支持在線代碼編輯
https://zhuanlan.zhihu.com/p/88828576

// 安裝
npm install monaco-editor --save 
// 使用
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
// 創(chuàng)建一個編輯器容器 div,并設置其大小和位置
const editorContainer = document.createElement('div');
editorContainer.style.width = '800px';
editorContainer.style.height = '600px';
document.body.appendChild(editorContainer);
// 初始化編輯器
const editor = monaco.editor.create(editorContainer, {
  value: 'console.log("Hello, world")',
  language: 'javascript'  // 是什么語言 'json'
  readOnly: readOnly || false, // 只讀
});

// 導出(借助ioJSON包,IOJSON是一種擴展了JSON格式的數(shù)據(jù)交換協(xié)議,支持更多的數(shù)據(jù)類型并且允許通過URL引用數(shù)據(jù)以方便傳輸大量數(shù)據(jù)。iojson庫提供了一系列API來解析和序列化IOJSON格式的數(shù)據(jù),使得Javascript開發(fā)者可以方便地使用這種數(shù)據(jù)交換格式)
npm install iojson
import iojson from 'iojson';
const ioJsonData = '{"name": "Alice", "age": 25}';
const jsObject = iojson.parse(ioJsonData);
console.log(jsObject);
// Output: { name: 'Alice', age: 25 }
iojson.exportJSON(physicModel, `${physicModel.name}`)  // 導出.json文件

三、瀏覽器中使用eslint: vue3+codemirror6實現(xiàn)簡易在線代碼編輯器
前端json編輯器,前端
https://www.jb51.net/article/272037.htm

// 項目中使用
npm install eslint-linter-browserify --save-dev(會在packagepackage-lock引入)
npm i vue-codemirror
npm i codemirror   // 在線編輯器
npm i @codemirror/lang-javascript
npm i @codemirror/lint
npm i @codemirror/autocomplete // 自動補全功能
npm i @codemirror/theme-one-dark  // 主題
// 實現(xiàn)彈框中js腳本
import { javascript, esLint } from '@codemirror/lang-javascript'
import { linter, lintGutter } from '@codemirror/lint';
import * as eslint from 'eslint-linter-browserify'
import { basicSetup, EditorView } from 'codemirror'
import { EditorState } from "@codemirror/state";

 <div class="codemirror-script" ref="scriptRef"></div>
 const state = reactive({
            code:
                `function filter(inputData) {
  					var outputData=inputData
 				 	return outputData
				  }`,
            config: {
                parserOptions: {
                    ecmaVersion: 6,
                    sourceType: "module",
                },
                env: {
                    browser: true,
                    node: true,
                },
                rules: ESLINT_RULES,  // 校驗規(guī)則
            },
            editView: {}
	});
const scriptRef = ref(null)
const openDialog = (row: any) => {
                state.code = `function filter(inputData) {
  					var outputData=inputData
  					return outputData
				}`;
            setTimeout(() => {
                state.editView = new EditorView({
                    state: EditorState.create({
                        doc: state.code,
                        extensions: [
                            basicSetup,
                            javascript(),
                            lintGutter(),
                            linter(esLint(new eslint.Linter(), state.config))
                        ],
                    }),
                    parent: scriptRef.value as any,
                })
            }, 0)
        }

        const onConfirm = () => {
            refForm.value.validate(async (valid: boolean) => {
                if (valid) {
                    let param = { ...form.value }
                    param.script = state.editView.state.doc.text.join("\n") || ''   // 獲取當前編輯器的內(nèi)容字符串
                    // 驗證js腳本  是否包含function filter
                    if (!param.script.includes('function filter')) {
                        ElMessage.warning('js腳本必須包含filter過濾函數(shù)')
                        return
                    }
                }
            })
        }

三、websocket連接
1、配url連接路徑:前端json編輯器,前端
2、代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-804491.html

		state.ws = new ReconnectingWebSocket({ url: state.row.sourceUrl }, (type: string, message: any) => {
						let newMessage = message;
						try {
							newMessage = JSON.parse(message);
						} catch (error) {
							console.log(error);
						}
						state.responseJSON = newMessage;
					});

// 以下是websocket類封裝
interface Props {
	url: string;
	reconnectInterval: number; // 重連間隔時間
	heartBeatInterval: number; // 心跳間隔時間
	isOpenHeartbeatMonitore: boolean; // 是否開啟心跳監(jiān)測
	heartMeesage: string; // 心跳發(fā)送信息
	maxReconnectAttempts: number; // 最大重連次數(shù)
}

export default class ReconnectingWebSocket {
	url: string;
	reconnectInterval: number;
	heartBeatInterval: number;
	ws: any;
	heartMeesage: string;
	isOpenHeartbeatMonitore: boolean;
	data: any;
	maxReconnectAttempts: number;
	private reconnectAttempts: number;
	private isClosed: boolean;
	private heartBeatTimer: any;
	callback: Function;
	constructor(
		{ url, reconnectInterval, heartBeatInterval, heartMeesage, isOpenHeartbeatMonitore = true, maxReconnectAttempts = 3 }: Props,
		callback: Function
	) {
		this.url = url;
		this.reconnectInterval = reconnectInterval || 1000; // 重連間隔時間
		this.heartBeatInterval = heartBeatInterval || 30000; // 心跳間隔時間
		this.ws = null;
		this.isClosed = false;
		this.heartBeatTimer = null;
		this.heartMeesage = heartMeesage;
		this.isOpenHeartbeatMonitore = isOpenHeartbeatMonitore;
		this.maxReconnectAttempts = maxReconnectAttempts;
		this.reconnectAttempts = 0;
		this.connect();
		this.callback = callback;
	}

	connect() {
		if (this.ws) {
			this.ws.close();
			this.ws = null;
		}
		this.ws = new WebSocket(this.url);
		this.ws.onopen = () => {
			this.isOpenHeartbeatMonitore && this.startHeartBeat();
			this.callback('open', 'WebSocket連接成功');
		};
		this.ws.onmessage = (event: { data: string }) => {
			this.callback('message', event.data);
			this.data = event.data;
		};
		this.ws.onclose = () => {
			// 正常和異常關閉
			this.data = null;
			this.stopHeartBeat();
			if (!this.isClosed) {
				// 異常關閉 重連
				if (this.reconnectAttempts < this.maxReconnectAttempts) {
					setTimeout(() => {
						this.reconnectAttempts++;
						this.callback('close', `WebSocket第${this.reconnectAttempts}次重連`);
						this.connect();
					}, this.reconnectInterval);
				} else {
					this.callback('close', `已達到最大重連次數(shù),停止重連`);
				}
			} else {
				this.callback('close', 'WebSocket連接關閉');
			}
		};
	}

	send(data: string) {
		if (this.ws.readyState === WebSocket.OPEN) {
			this.ws.send(data);
		}
	}

	startHeartBeat() {
		this.heartBeatTimer = setInterval(() => {
			this.send(this.heartMeesage); // 發(fā)送心跳消息
		}, this.heartBeatInterval);
	}

	stopHeartBeat() {
		this.isOpenHeartbeatMonitore && clearInterval(this.heartBeatTimer);
	}

	close() {
		this.isClosed = true;
		this.ws.close();
	}
}




到了這里,關于前端使用JSON編輯器、java編輯器、瀏覽器中使用eslint的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Unity編輯擴展:功能篇之Json數(shù)據(jù)編輯器

    Unity編輯擴展:功能篇之Json數(shù)據(jù)編輯器

    前言 編輯器擴展算是比較純粹的功能開發(fā),基本沒有什么理論知識,都是一些 Unity 相關接口的使用與數(shù)據(jù)類型的設計操作等。在本篇文章主要的文字描述基本都是在做代碼解釋,為了使內(nèi)容接受度更高,我會盡量描述到代碼結構中的每個細節(jié)。如果有對此不太了解又很感興

    2024年02月06日
    瀏覽(25)
  • 在線json格式化編輯器--在線查看json解析視圖并按節(jié)點排序,查看,編輯,并可導入導出json

    在線json格式化編輯器--在線查看json解析視圖并按節(jié)點排序,查看,編輯,并可導入導出json

    在線JSON編輯器--視圖查看器節(jié)點篩選節(jié)點編輯插入json導入導出

    2024年04月22日
    瀏覽(46)
  • UE編輯器格式化xml或json

    UE編輯器格式化xml或json

    UE編輯器格式化XML數(shù)據(jù),首先菜單【視圖】=》【查看方式】=》【XML】,然后選中需要進行格式化的內(nèi)容,點擊菜單【格式】=》【重新縮進選擇】 ?UE編輯器格式化JSON數(shù)據(jù),首先菜單【視圖】=》【查看方式】=》【JSON】,然后選中需要進行格式化的內(nèi)容,點擊菜單【格式】=》

    2024年02月11日
    瀏覽(24)
  • vue-codemirror實現(xiàn)sql和json線上編輯器

    vue-codemirror實現(xiàn)sql和json線上編輯器

    實習小計01 今天老大讓寫一個線上編輯器,寫的是sql和json兩個編譯器,sql的編譯器要有提示, 老大扔過來兩個選擇,1:vue-codemirror;2:monaco-editor,一個前端小白,只會vue,所以果斷選那個我有點沾邊的(也就是vue-codemirror),到網(wǎng)上查了一下文檔,照著文檔大致做出來的,

    2023年04月08日
    瀏覽(32)
  • java電子病歷源碼 電子病歷編輯器源碼 病歷在線制作、管理和使用

    java電子病歷源碼 電子病歷編輯器源碼 病歷在線制作、管理和使用

    電子病歷在線制作、管理和使用的一體化電子病歷解決方案,通過一體化的設計,提供對住院病人的電子病歷書寫、保存、修改、打印等功能。電子病歷系統(tǒng)將臨床醫(yī)護需要的診療資料以符合臨床思維的方法展示。建立以病人為中心,以臨床診療信息為主線,集成門急診、住

    2024年02月11日
    瀏覽(18)
  • 如何利用純前端技術,實現(xiàn)一個網(wǎng)頁版視頻編輯器?

    如何利用純前端技術,實現(xiàn)一個網(wǎng)頁版視頻編輯器?

    介紹:本篇文章打算利用純前端的技術,來實現(xiàn)一個網(wǎng)頁版的視頻編輯器。為什么突然想做一個這么項目來呢,主要是最近一直在利用手機剪映來剪輯一些照片或者視頻之類的,在剪輯的過程中,突然想到,有沒有一種純網(wǎng)頁版的視頻剪輯網(wǎng)站呢?于是搜了下,大多為 sass 成

    2024年04月27日
    瀏覽(27)
  • 前端必備的開發(fā)工具推薦——VScode代碼編輯器

    前端必備的開發(fā)工具推薦——VScode代碼編輯器

    ????????VSCode(全稱:Visual Studio Code)是一款由微軟開發(fā)且跨平臺的免費源代碼編輯器。該軟件支持語法高亮、代碼自動補全(又稱 IntelliSense)、代碼重構、查看定義功能,并且內(nèi)置了命令行工具和 Git 版本控制系統(tǒng)。用戶可以更改主題和鍵盤快捷方式實現(xiàn)個性化設置,也

    2024年02月02日
    瀏覽(34)
  • 前端必備14款業(yè)界受歡迎的富文本編輯器

    前端必備14款業(yè)界受歡迎的富文本編輯器

    基于JavaScript和css開發(fā)的 Web富文本編輯器, 輕量、簡潔、開源免費。 一個輕量級的基于瀏覽器的所見即所得編輯器,由JavaScript寫成。 由百度web前端研發(fā)部開發(fā)所見即所得富文本web編輯器,可定制,注重用戶體驗等特點,開源基于MIT協(xié)議,允許自由使用和修改代碼。 一套開源

    2024年02月15日
    瀏覽(35)
  • springboot集成Camunda,加前端bpmn頁面流程編輯器

    springboot集成Camunda,加前端bpmn頁面流程編輯器

    搭建流程引擎后端的時候,主要注意springboot版本和Camunda版本之間的兼容性。此次springboot版本2.6.4,Camunda版本7.18.0。pom文件內(nèi)容如下: pom文件配置好后,通過一般的注解入口@SpringBootApplication,即可啟動Camunda流程引擎。 Camunda默認使用的數(shù)據(jù)庫為自帶的h2內(nèi)存數(shù)據(jù)庫,此時一般

    2023年04月18日
    瀏覽(18)
  • 【vscode編輯器插件】前端 php unity自用插件分享

    【vscode編輯器插件】前端 php unity自用插件分享

    “思考是最困難的工作,這也許是為什么很少有人這樣做?!?- 亨利·福特(Henry Ford) 無論是什么語言,我都會選擇使用vscode進行開發(fā),我愿稱vscode為萬能編輯器,他之所以這么強大,得益于豐富的免費插件市場 vscode插件五花八門,但也不是裝越多越好,不必要和垃圾插件

    2024年02月07日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包