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

react-app框架——使用monaco editor實(shí)現(xiàn)online編輯html代碼編輯器

這篇具有很好參考價(jià)值的文章主要介紹了react-app框架——使用monaco editor實(shí)現(xiàn)online編輯html代碼編輯器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


react-app框架——使用monaco editor實(shí)現(xiàn)online編輯html代碼編輯器,web站點(diǎn),react.js,microsoft,javascript,html,vscode,可視化

?前言

大家好,我是yma16,本文分享關(guān)于 react-app框架——使用monaco editor實(shí)現(xiàn)online編輯html代碼編輯器。
monaco editor 編輯器
Monaco Editor是一款功能強(qiáng)大的Web編輯器,由微軟開發(fā)并使用在多個(gè)項(xiàng)目中。它是基于VS Code編輯器的核心組件,具有類似的功能和用戶體驗(yàn)。

Monaco Editor具有以下特點(diǎn):

  1. 輕量級(jí):Monaco Editor具有出色的性能,可以快速加載和渲染大型文件。
  2. 可定制性:用戶可以通過(guò)添加自定義插件和主題來(lái)擴(kuò)展和個(gè)性化編輯器。
  3. 強(qiáng)大的語(yǔ)法高亮:Monaco Editor支持多種編程語(yǔ)言,并提供了高亮顯示和代碼片段等功能。
  4. 智能代碼補(bǔ)全:Monaco Editor具有智能的代碼補(bǔ)全功能,可以根據(jù)上下文和類型推斷提供準(zhǔn)確的建議。
  5. 快速導(dǎo)航:用戶可以使用快速導(dǎo)航功能跳轉(zhuǎn)到特定的函數(shù)、變量或文件。
  6. 代碼調(diào)試:Monaco Editor內(nèi)置了代碼調(diào)試功能,可以在編輯器中進(jìn)行斷點(diǎn)設(shè)置和調(diào)試代碼。
  7. 多語(yǔ)言支持:Monaco Editor支持多種語(yǔ)言和框架,包括JavaScript、TypeScript、HTML、CSS等。

總的來(lái)說(shuō),Monaco Editor是一款功能豐富、高性能的Web編輯器,適用于開發(fā)人員、寫作人員和其他需要進(jìn)行文本編輯的用戶。

??react系列文章

next.js博客搭建_初始化next項(xiàng)目(第一步)
next.js博客搭建_登錄注冊(cè)(第二步)
next.js博客搭建_react-markdown渲染內(nèi)容(第三步)

react-grapesjs——開源代碼學(xué)習(xí)與修改(初出茅廬)
react搭建在線編輯html的站點(diǎn)——引入grapes實(shí)現(xiàn)在線拖拉拽編輯html
前端react 18.2整合ckeditor富文本編輯器——配置插件、自定義toolbar工具欄

?配置monaco-editor

??引入react-monaco-editor

安裝依賴

yarn add react-monaco-editor

??引入react-app-rewired

安裝依賴

yarn add react-app-rewired

替換package.json的script運(yùn)行命令

Replace react-scripts by react-app-rewired

替換script的運(yùn)行命令
react-app框架——使用monaco editor實(shí)現(xiàn)online編輯html代碼編輯器,web站點(diǎn),react.js,microsoft,javascript,html,vscode,可視化

??通過(guò)config-overrides.js添加monaco插件配置

在前端根目錄中新建config-overrides.js添加插件的語(yǔ)言配置
config-overrides.js

//@ts-ignore
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');

//@ts-ignore
module.exports = function override(config, env) {
    config.plugins.push(new MonacoWebpackPlugin({
        languages: ['html']
    }));
    return config;
}

?編輯代碼的react頁(yè)面配置

html代碼編輯配置頁(yè)面


// @ts-ignore
import { useEffect,useState, forwardRef, useImperativeHandle,useRef} from "react";
import {htmlLangConfig} from './const'
import {htmlString} from './html'

import MonacoEditor,{ monaco }  from 'react-monaco-editor';


function MonacoHtmlEditor(props:any,ref:any){
    const [content,setContent]=useState(htmlString)

    const iframeRef=useRef<HTMLElement|any>(null)
    const options={
        disableLayerHinting: true
    }

    const renderIframe=(htmlContent:string)=>{
        if(iframeRef?.current?.contentDocument?.body){
            //@ts-ignore
            iframeRef.current.contentDocument.body.innerHTML=htmlContent
        }

    }

    const onChange=(value:string)=>{
        setContent(value)
        renderIframe(value)
    }

    const onEditorDidMount=(editor: any, monaco: any) => {
        // 格式化
        editor.getAction('editor.action.formatDocument').run()
        console.log('format')
    }

    useEffect(()=>{
        if(iframeRef&&iframeRef.current){
            console.log('iframeRef.current',iframeRef.current)
            console.log('iframeRef.current.contentWindow',iframeRef.current.contentWindow)
            renderIframe(htmlString)
        }

    },[])


    useImperativeHandle(ref, () => ({
        getHtml:()=>content
    }))

    // @ts-ignore
    return <>
        <div style={{display:'flex'}} id='monaco_html_id'>
            <div style={{flex:1,textAlign:"left"}}>
                <MonacoEditor
                    width="100%"
                    height="600"
                    language="html"
                    value={content}
                    onChange={onChange}
                    options={options}
                    editorDidMount={onEditorDidMount}
                />
            </div>
            <div style={{flex:1}}>
                <iframe ref={iframeRef} style={{
                    width:'100%',
                    height:'600px'
                }}/>
            </div>
        </div>
        </>
}

export default forwardRef(MonacoHtmlEditor)

??擴(kuò)展 可自定義配置語(yǔ)言

可以通過(guò)monaco配置語(yǔ)言

import { monaco }  from 'react-monaco-editor';
monaco.languages.register({id:'語(yǔ)言'})
// @ts-ignore
monaco.languages.setMonarchTokensProvider('語(yǔ)言',配置項(xiàng));

語(yǔ)言的配置項(xiàng)可以參考官方文檔
https://microsoft.github.io/monaco-editor/monarch.html
react-app框架——使用monaco editor實(shí)現(xiàn)online編輯html代碼編輯器,web站點(diǎn),react.js,microsoft,javascript,html,vscode,可視化

?效果

預(yù)覽地址:https://yongma16.xyz/react-mjml/
編輯器的效果如下
包括三個(gè)基礎(chǔ)功能

  1. 代碼高亮
  2. 代碼內(nèi)容格式化
  3. 內(nèi)容預(yù)覽
    react-app框架——使用monaco editor實(shí)現(xiàn)online編輯html代碼編輯器,web站點(diǎn),react.js,microsoft,javascript,html,vscode,可視化
    動(dòng)態(tài)圖
    react-app框架——使用monaco editor實(shí)現(xiàn)online編輯html代碼編輯器,web站點(diǎn),react.js,microsoft,javascript,html,vscode,可視化

?總結(jié)

monaco-editor
monaco-editor使用簡(jiǎn)單,拿來(lái)就能用,對(duì)于新手十分友好。

config-overrides
config-overrides文件是用于定制create-react-app腳手架配置的JavaScript模塊。通過(guò)這個(gè)文件,可以對(duì)Webpack配置進(jìn)行修改和擴(kuò)展,實(shí)現(xiàn)自定義的配置。
在config-overrides.js文件中,你可以使用react-app-rewired庫(kù)提供的API對(duì)create-react-app的原始配置進(jìn)行修改。例如,你可以通過(guò)修改webpack配置,添加自定義的loader、plugin、alias等。

?結(jié)束

本文分享到這結(jié)束,如有錯(cuò)誤或者不足之處歡迎指出!

react-app框架——使用monaco editor實(shí)現(xiàn)online編輯html代碼編輯器,web站點(diǎn),react.js,microsoft,javascript,html,vscode,可視化

?? 點(diǎn)贊,是我創(chuàng)作的動(dòng)力!
?? 收藏,是我努力的方向!
?? 評(píng)論,是我進(jìn)步的財(cái)富!
?? 最后,感謝你的閱讀!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-808926.html

到了這里,關(guān)于react-app框架——使用monaco editor實(shí)現(xiàn)online編輯html代碼編輯器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue3 使用 monaco-editor 自定義代碼補(bǔ)全。

    vue3 使用 monaco-editor 自定義代碼補(bǔ)全。

    使用場(chǎng)景: ? ? ? ? 數(shù)據(jù)編輯時(shí)需要支持sql語(yǔ)法高亮, 并且支持自定義代碼提示補(bǔ)全。 monaco詳細(xì)說(shuō)明和使用可參考另一篇發(fā)文Monaco Editor (vite/webpack + ts + vue項(xiàng)目使用) 步驟一:安裝依賴? 步驟二:組件功能封裝 OPTIONS_BASE :? 為基礎(chǔ)配置,具體參數(shù)可參考官網(wǎng) worker: 解決vite引

    2024年02月06日
    瀏覽(27)
  • 使用 monaco-editor-nls 漢化 右鍵菜單漢化部分失敗原因

    使用 monaco-editor-nls 漢化 右鍵菜單漢化部分失敗原因

    首先使用npm或者其他包管理工具安裝依賴插件: 如果右鍵菜單漢化一部分失敗,首先去項(xiàng)目下看node_modules/monaco-editor-nls/locale/zh-hans中搜vs/editor/contrib/format/看一下是否有路徑有brower字段,再去對(duì)應(yīng)的node_modules/monaco-editor/esm/vs/editor/contrib/format/formatActions看是否有brower文件夾 如果

    2024年02月15日
    瀏覽(21)
  • monaco,monaco-editor,monaco-editor-webpack-plugin,

    \\\"Monaco\\\"是包含了Monaco Editor和Monaco Language Server兩個(gè)項(xiàng)目的總稱,而\\\"Monaco Editor\\\"是Monaco項(xiàng)目中的一個(gè)部分,它是一款基于Web技術(shù)的高性能代碼編輯器。 Monaco Language Server是一個(gè)支持多種語(yǔ)言的語(yǔ)言服務(wù)器,可以提供語(yǔ)法分析、代碼補(bǔ)全、錯(cuò)誤檢查、重構(gòu)等功能。Monaco Editor可以與

    2024年02月14日
    瀏覽(44)
  • Monaco Editor安裝,vue3中使用,自定義高亮,自定義提示,附完整代碼

    Monaco Editor安裝,vue3中使用,自定義高亮,自定義提示,附完整代碼

    root中為高亮規(guī)則。[/curl/, {token: “string.escape”}]:表示 ‘curl’ 的高亮顏色為粉色 高亮顏色參考:https://microsoft.github.io/monaco-editor/monarch.html 效果: 效果: 1、父組件:HomeView.vue 父組件中傳給子組件所需的組件高度、初始內(nèi)容、高亮類型、是否只讀 子組件通過(guò)editorChange方法給

    2024年02月16日
    瀏覽(22)
  • Vue集成Monaco Editor的使用,以及開發(fā)Python代碼編輯器和Sql等

    Vue集成Monaco Editor的使用,以及開發(fā)Python代碼編輯器和Sql等

    ?微軟之前有個(gè)項(xiàng)目叫做Monaco Workbench,后來(lái)這個(gè)項(xiàng)目變成了VSCode,而Monaco Editor(下文簡(jiǎn)稱monaco)就是從這個(gè)項(xiàng)目中成長(zhǎng)出來(lái)的一個(gè)web編輯器,他們很大一部分的代碼(monaco-editor-core)都是共用的,所以monaco和VSCode在編輯代碼,交互以及UI上幾乎是一摸一樣的,有點(diǎn)不同的是,

    2024年02月11日
    瀏覽(32)
  • Online LaTeX Editor——Overleaf使用(全網(wǎng)最詳細(xì)過(guò)程)

    Online LaTeX Editor——Overleaf使用(全網(wǎng)最詳細(xì)過(guò)程)

    目錄 1 注冊(cè)O(shè)verleaf 2 新建項(xiàng)目 3 導(dǎo)入LaTeX壓縮包? 3.1 下載LaTeX源代碼 3.2 導(dǎo)入壓縮包 4 編譯生成 5 項(xiàng)目導(dǎo)出 最近由于課程及學(xué)業(yè)的需要學(xué)習(xí)了LaTeX的一些使用方法,以及推薦一款在線編輯LaTeX的工具:Overleaf。下面將詳細(xì)介紹使用方法,以及一些注意事項(xiàng)。 直接點(diǎn)擊下面鏈接即

    2024年02月07日
    瀏覽(59)
  • 代碼編輯器之monaco editor

    代碼編輯器之monaco editor

    (一)簡(jiǎn)介 底層vscode開發(fā)的一款編輯器,各方面的樣式功能基本與vscode一致。 (二)官方文檔 Monaco Editor (microsoft.github.io) (三)安裝 安裝時(shí)兩者版本要對(duì)應(yīng),對(duì)應(yīng)表在后面 (四)屬性 以下是較為常見(jiàn)的屬性 (五) 方法 挑選出使用頻次較高的 monaco.editor.setTheme(‘主題色名字

    2024年02月21日
    瀏覽(21)
  • Monaco Editor教程(二二):monaco編輯器完整配置翻譯及重點(diǎn)配置解析

    本篇文章講解一下創(chuàng)建Monaco編輯器時(shí)所有完整配置,算是一個(gè)比較淺顯的入門文章。 但由于一個(gè)Monaco的配置項(xiàng)多達(dá)150個(gè),整篇文章耗費(fèi)了我5天的下班時(shí)間,請(qǐng)讀者自行點(diǎn)贊收藏。這里結(jié)合實(shí)際的項(xiàng)目業(yè)務(wù)場(chǎng)景介紹一些常用的,有可能修改的默認(rèn)配置參數(shù)。Monaco已經(jīng)默認(rèn)了很

    2023年04月25日
    瀏覽(46)
  • Monaco Editor編輯器教程(二八):Monaco 與 VS Code 兩個(gè)項(xiàng)目的聯(lián)系與異同點(diǎn)

    Monaco Editor編輯器教程(二八):Monaco 與 VS Code 兩個(gè)項(xiàng)目的聯(lián)系與異同點(diǎn)

    很多人知道前端代碼編輯Monaco Editor 與VS Code 有關(guān)系,但卻不清楚其中的細(xì)節(jié),本篇文章就帶大家了解一下兩者的關(guān)系和異同點(diǎn)。 首先,這兩個(gè)項(xiàng)目都是來(lái)自微軟,其中VS Code 項(xiàng)目Github 144K star,是基于CS架構(gòu),客戶端-服務(wù)端架構(gòu)。主要的技術(shù)棧是 elector,ts。 而Monaco Editor則是

    2023年04月27日
    瀏覽(40)
  • Monaco Editor教程(二十):在編輯器的某個(gè)特定位置插入自定義的dom內(nèi)容,圖片,表單,表格,視頻

    哇咔咔,這是我的第20篇Monaco教程,寫完這一篇會(huì)暫時(shí)休息一段時(shí)間,練練字,存存稿,讀讀書,順便修修文章。 目前全網(wǎng)成系統(tǒng)的monaco中文專欄應(yīng)該只有我這一個(gè),歡迎評(píng)論區(qū)打臉。自結(jié)束了GitLab CI/CD的專欄后,我就一直在利用業(yè)余時(shí)間學(xué)習(xí)Monaco相關(guān)的知識(shí),一是為了彌補(bǔ)

    2023年04月16日
    瀏覽(78)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包