iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >Asp.Net Core 使用Monaco Editor 实现代码编辑器功能
  • 665
分享到

Asp.Net Core 使用Monaco Editor 实现代码编辑器功能

2024-04-02 19:04:59 665人浏览 八月长安
摘要

在项目中经常有代码在线编辑的需求,比如修改基于Xml的配置文件,编辑JSON格式的测试数据等。我们可以使用微软开源的在线代码编辑器Monaco Editor实现这些功能。Monaco

项目中经常有代码在线编辑的需求,比如修改基于Xml的配置文件,编辑JSON格式的测试数据等。我们可以使用微软开源的在线代码编辑器Monaco Editor实现这些功能。Monaco Editor是著名的vscode的前身,项目地址:https://microsoft.GitHub.io/monaco-editor/。本文介绍在ASP.net core项目中使用Monaco Editor实现代码编辑器功能。

安装

可以使用npm下载moaco-editor:

npm install monaco-editor@0.31.1

我们需要的文件在node_modules/monaco-editor/min/vs目录中,将整个vs目录拷贝到Asp.net core WEB项目的wwwroot/lib目录下:

在Program.cs中需要启动静态文件:

app.UseStaticFiles();

在布局页面中引入如下CSSjs:


<link data-name="vs/editor/editor.main" rel="stylesheet" href="~/lib/vs/editor/editor.main.css" rel="external nofollow"  />
    <script  src="~/lib/vs/loader.js"></script>
    <script  src="~/lib/vs/editor/editor.main.nls.js"></script>
    <script src="~/lib/vs/editor/editor.main.js"></script>

基本的环境设置就完成了。

基本功能

现在可以在页面中实现编辑器的基本功能,在页面中增加一个div,作为编辑器容器:


<div id="container" style="width:800px;height:600px;border:1px solid grey"></div>

然后增加编辑器的js代码:


<script>
    $(document).ready(function () {
        require.config({ paths: { 'vs': '/lib/vs' } });
        monaco.editor.create(document.getElementById('container'), {
            value: "function sayHello(){\n console.write('Hello World');\n}",
            language: 'javascript'
        });
    })
</script>

设置

编辑器有多种设置,比如是否显示代码行、显示样式等等,设置完成后,可以使用updateOptions修改设置,示例代码如下:


        var editor = monaco.editor.create(document.getElementById('container'), {
            value: "function sayHello(){\n console.write('Hello World');\n}",
            language: 'javascript',
            lineNumbers: 'on',
            roundedSelection: false,
            scrollBeyondLastLine: false,
            readOnly: false,
            theme: 'vs-dark'
        });

代码比较

monaco editor的一个强大的功能是文字比较功能,可以将两段文字进行比较:


<script>
    require.config({ paths: { 'vs': '/lib/vs' } });
    var originalModel = monaco.editor.createModel(
        '删除行\n行一\n行二\n行三内容\n更多内容',
        'text/plain'
    );
    var modifiedModel = monaco.editor.createModel(
        '\n行一\n行二\n行三\n更多内容\n增加行',
        'text/plain'
    );
    var diffEditor = monaco.editor.createDiffEditor(document.getElementById('container'), {
        // You can optionally disable the resizing
        enableSplitViewResizing: false
    });
    diffEditor.setModel({
        original: originalModel,
        modified: modifiedModel
    });
</script>

效果如下:

自定义语言

monaco editor 支持常见的几乎所有编程语言,在编辑这些语言的代码时可以高亮显示关键字,同时也支持对自定义语言的扩展。其功能非常强大,同时配置起来也比较复杂,这里只举个简单的例子,说明如何使用。

这里使用的“语言”很简单,目的是记录中国象棋的棋谱,关键字只有代表“车马炮”等棋子的大写汉语拼音,运算符只有代表向前、向后和平行移动的“++”、“--”和“==”,还有就是注释。
使用自定义语言,首先要注册这个语言的id:


        monaco.languages.reGISter({ id: 'mylang' });

然后设置语言的Token Provider:


 monaco.languages.setMonarchTokensProvider('mylang', getlang());

这样就可以在编辑器中使用这种自定义语言了,下面是完整的代码:


@page
@model CustomLanguageModel
@{
    ViewData["Title"] = "自定义语言";
}
<h1>@ViewData["Title"]</h1>
<div id="container" style="height: 800px"></div>
<script>
    var require = { paths: { vs: '/lib/vs' } };
</script>
@section Scripts
{
<script>
    $(document).ready(function () {
        monaco.languages.register({ id: 'mylang' });
        monaco.languages.setMonarchTokensProvider('mylang', getlang());

        var sampleEditor=monaco.editor.create(document.getElementById('container'), {
            model:null
        }
        );
        setTimeout(function(){
             var model=monaco.editor.createModel('// 炮二平五 \nPAO 2 == 5 \n//马八进七 \nMA 8 ++ 7', 'mylang');
             sampleEditor.setModel(model);
        },1);
    });
    function getlang(){
        return {
            //车马炮相士将帅兵卒
          keyWords: [ 'JU', 'MA', 'PAO', 'XIANG', 'SHI', 'JIANG', 'SHUAI', 'BING', 'ZU' ],
          //++ 进 --退 ==平 
          operators: [ '++', '--', '=='  ],
          symbols:  /[=><!~?:&|+\-*\/\^%]+/,
          // The main tokenizer for our languages
          tokenizer: {
            root: [
              [/[A-Z][\w\$]*/, {cases: { '@@keywords': 'keyword' }}],
              { include: '@@whitespace' },
              [/@@symbols/, { cases: { '@@operators': 'operator'} } ],
              [/\d./, 'number'],
            ],
            comment: [
              [/[^\,    'comment', '@@push' ],
              ["\\*/",    'comment', '@@pop'  ],
              [/[\,       'comment', '@@comment' ],
              [/\/\/.*$/,    'comment'],
            ],
          },
        };
    }
</script>
}}

效果如下:

本文的示例项目已经上传到github: Https://github.com/zhenl/monacoEditordotnet

到此这篇关于Asp.Net Core 使用Monaco Editor 实现代码编辑器的文章就介绍到这了,更多相关asp.net Core代码编辑器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Asp.Net Core 使用Monaco Editor 实现代码编辑器功能

本文链接: https://www.lsjlt.com/news/161628.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Asp.Net Core 使用Monaco Editor 实现代码编辑器功能
    在项目中经常有代码在线编辑的需求,比如修改基于Xml的配置文件,编辑Json格式的测试数据等。我们可以使用微软开源的在线代码编辑器Monaco Editor实现这些功能。Monaco...
    99+
    2024-04-02
  • Monaco Editor开发SQL代码提示编辑器实例详解
    目录安装简易 SQL 编辑器相关功能获取选中代码替换选中代码处理光标位置自定义 SQL 库表提示,并保留原有 SQL 提示编辑器 resize编辑器设置主题SQL 代码格式化右键菜单...
    99+
    2022-11-13
    Monaco Editor开发SQL编辑器 Monaco Editor代码提示
  • Vue集成Monaco Editor的使用,以及开发Python代码编辑器和Sql等
    什么是Monaco Editor? ​微软之前有个项目叫做Monaco Workbench,后来这个项目变成了VSCode,而Monaco Editor(下文简称monaco)就是从这个项目中成长出来的一个web编辑器,他们很大一部分的代...
    99+
    2023-09-01
    编辑器 vue.js vscode monaco
  • vue3+vite+ts使用monaco-editor编辑器的简单步骤
    目录前言实现打包报错的处理总结 前言 近期要完成一个代码编辑器的内容,用的vue3.0+ts+vite架构,学习尚浅, 常在插件上遇坑 特此记录下在monaco-edito...
    99+
    2023-01-28
    monaco-editor教程 monaco-editor 配置 monaco编辑器
  • ASP.NET Core中怎么使用UEditor编辑器
    ASP.NET Core中怎么使用UEditor编辑器,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.安装UEditorNetCoreInstall-Pack...
    99+
    2023-06-17
  • 如何使用vue codemirror插件实现代码编辑器功能
    本篇内容主要讲解“如何使用vue codemirror插件实现代码编辑器功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用vue codemirror插件实现代码编辑器功能”吧!1、使用...
    99+
    2023-07-04
  • vue中如何使用codemirror插件实现代码编辑器功能
    这篇文章主要介绍“vue中如何使用codemirror插件实现代码编辑器功能”,在日常操作中,相信很多人在vue中如何使用codemirror插件实现代码编辑器功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-20
  • JS代码编译器Monaco使用方法
    前言 我的需求是可以语法高亮、函数提示功能、自动换行、代码折叠 Monaco Monaco是微软家的,支持的语言很多,还有缩略地图,有时候提示不好用然后包体很大。 The Monac...
    99+
    2024-04-02
  • asp.net core 使用 tensorflowjs实现 face recognition的源代码
    功能描述 上传照片文件名及是系统要识别标签或是照片的名称(人物标识) 提取照片脸部特征值(调用 facemesh模型) 保存特征值添加样本(调用 knnC...
    99+
    2024-04-02
  • ASP.NET Core如何使用Log4net实现日志记录功能
    这篇文章主要介绍“ASP.NET Core如何使用Log4net实现日志记录功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ASP.NET Core如何使用Log4net实现日...
    99+
    2023-06-29
  • 在vue项目中怎么使用codemirror插件实现代码编辑器功能
    这篇文章主要为大家展示了“在vue项目中怎么使用codemirror插件实现代码编辑器功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在vue项目中怎么使用c...
    99+
    2024-04-02
  • codemirror6实现在线代码编辑器使用详解
    目录背景介绍codemirror5、codemirror6对比codemirror6 核心包vue3+codemirror6实现简易在线代码编辑器安装依赖创建编辑器效果截图主题获取、...
    99+
    2023-01-08
    codemirror 代码编辑器 codemirror 在线编辑器
  • javascript 文本编辑器实现代码
    写一篇1800个字以上的中文文章,标题如下:JavaScript 文本编辑器实现代码JavaScript 是一种广泛应用于 Web 开发中的脚本语言,其最大的优点是可以在不重新加载整个页面的情况下,使得页面上某一部分动态地变化。文本编辑器则...
    99+
    2023-05-17
  • Flutter实现购物车功能(代码+逻辑)
    目录一、初始化时判断是否为登录状态二、分析点击全选和非全选状态三、改变单个物品check四、点击数量增加和减少按钮改变当前显示number值五、长按删除数据一、初始化时判断是否为登录...
    99+
    2024-04-02
  • 【python】Jupyter的使用(python代码编辑器)
    文章目录 一、Jupyter的介绍1、Jupyter是什么?2、Jupyter有什么独特之处? 二、Jupyter的安装1、首先要下载python2、用pip命令下载Jupyter 三...
    99+
    2023-09-01
    python jupyter 编辑器
  • 使用.Net Core实现的一个图形验证码功能
    SimpleCaptcha是一个使用简单,基于.Net Standard 2.0的图形验证码模块。它的灵感来源于Edi.Wang的这篇文章https://edi.wang/post/...
    99+
    2024-04-02
  • 如何使用PHP实现表格的直接编辑功能
    随着互联网技术的快速发展,Web 应用的应用范围越来越广泛。Web 应用提供的数据展示和数据收集功能对许多企业和个人的运营和管理起到了重要的作用。表格数据的展示和收集是 Web 应用中最常见的功能之一。在这个过程中,编辑表格数据的功能是必不...
    99+
    2023-05-14
  • Android中怎么实现短信编辑器功能
    Android中怎么实现短信编辑器功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。AndroidManifest.xml<xml version="...
    99+
    2023-05-30
    android
  • Qt5实现文本编辑器(附详细代码)
    目录1. 功能介绍2. 功能演示3. 代码4. 改进1. 功能介绍 老规矩,我们直接上截图 这是主界面 文件菜单界面 编辑菜单界面 设置菜单界面 关于菜单界面 ...
    99+
    2024-04-02
  • codemirror6在线代码编辑器如何使用
    本篇内容主要讲解“codemirror6在线代码编辑器如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“codemirror6在线代码编辑器如何使用”吧!介绍  &nbs...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作