首页 > 作文

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

更新时间:2023-04-04 12:09:50 阅读: 评论:0

在项目中经常有代码在线编辑的需求,比如修改基于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.ustaticfiles();

在布局页面中引入如下css和js:

<link data-name="vs/editor/editor.main" rel="stylesheet" href="~/lib/vs/editor/editor.main.css" rel="external n哈根达斯广告语ofollow"  />    <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',            roundedlection: fal,            scrollbeyondlastline: fal,            readonly: fal,            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: fal    });    diffeditor.tmodel({ 政协委员提案       original: originalmodel,        modified: modifiedmodel    });</script>

效果如下:

自定义语言

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

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

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

然后设置语言的token provider:

 monaco.languages.tmonarchtokensprovider('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>@ction scripts{<script>    $(document).ready(function () {        monaco.languages.register({ id: 'mylang' });        monaco.languages.tmonarchtokensprovider('mylang', getlang());        var sampleeditor=monaco.editor.create(document.getelementbyid('container'), {            model:null        }        );        ttimeout(function(){             var model=monaco.editor.cr安家最后结局eatemodel('// 炮二平五 \npao 2 == 5 \n//马八进七 \nma 8 ++ 7', 'mylang');             sampleeditor.tmodel(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$]*/, {cas: { '@@ke两步走战略目标ywords': 'keyword' }}],              { include: '@@whitespace' },              [/@@symbols/, { cas: { '@@operators': 'operator'} } ],              [/\d./, 'number'],            ],            comment: [              [/[^\/*]+/, 'comment' ],              [/\/\*/,    'comment', '@@push' ],              ["\\*/",    'comment', '@@pop'  ],              [/[\/*]/,   'comment' ]            ],            whitespace: [              [/[ \t\r\n]+/, 'white'],              [/\/\*/,       'comment', '@@comment' ],              [/\/\/.*$/,    'comment'],            ],          },        };    }</script>}}

效果如下:

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

到此这篇关于asp.net core 使用monaco editor 实现代码编辑器的文章就介绍到这了,更多相关asp.net core代码编辑器内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 12:09:47,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/449576e777cbc489004f044dcf3701a9.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Asp.Net Core 使用Monaco Editor 实现代码编辑器功能.doc

本文 PDF 下载地址:Asp.Net Core 使用Monaco Editor 实现代码编辑器功能.pdf

标签:代码   编辑器   语言   自定义
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图