gpt4 book ai didi

asp.net-mvc - 在 Web 应用程序中使用 Monaco 编辑器

转载 作者:行者123 更新时间:2023-12-03 18:37:34 26 4
gpt4 key购买 nike

我们有一个 MVC Web 应用程序,其中 Powershell 用作脚本引擎。目前一个 textarea 元素用于脚本编辑,结果证明它非常麻烦。正如微软发布的 Monaco Editor ,我们想知道是否可以将编辑器作为小部件嵌入到我们的应用程序中,以利用其语法检查和智能感知功能。查看他们的文档后,找不到太多相关信息。这是可能的还是微软目前不支持在第三方应用程序中使用?

最佳答案

这是包含 Monarc Editor 的解决方法在您的网站上,它仍然需要来自 Microsoft 的文件才能工作,但是,如果我们在本地下载这些文件并修改 baseUrl 应该可以工作。指向正确的文件夹:

Basic HTML Code


<section class="try">
<div class="container">
<h3>Editor</h3>
<div class="editor row">
<div class="span3">
<p>Colorizers are implemented using <a href="monarch.html"
target="_blank">Monarch</a>.</p>
</div>
<div class="span9">
<div class="row">
<div class="span4">
<label class="control-label">Language</label>
<select class="language-picker"></select>
</div>
<div class="span4">
<label class="control-label">Theme</label>
<select class="theme-picker">
<option>Visual Studio</option>
<option>Visual Studio Dark</option>
<option>High Contrast Dark</option>
</select>
</div>
</div>
<div class="editor-frame">
<div class="loading editor" style="display: none;">
<div class="progress progress-striped active">
<div class="bar"></div>
</div>
</div>
<div id="editor"></div>
</div>
</div>
</div>
</div>
</section>

JavaScript Code:


'use strict';
require.config({
baseUrl: 'https://microsoft.github.io/monaco-editor/node_modules/monaco-editor/min/'
});


var editor = null,
diffEditor = null;

$(document).ready(function() {
require(['vs/editor/editor.main'], function() {
var MODES = (function() {
var modesIds = monaco.languages.getLanguages().map(function(lang) {
return lang.id;
});
modesIds.sort();

return modesIds.map(function(modeId) {
return {
modeId: modeId,
sampleURL: 'https://microsoft.github.io/monaco-editor/index/samples/sample.' + modeId + '.txt'
};
});
})();

for (var i = 0; i < MODES.length; i++) {
var o = document.createElement('option');
o.textContent = MODES[i].modeId;
$(".language-picker").append(o);
}
$(".language-picker").change(function() {
loadSample(MODES[this.selectedIndex]);
});
$('.language-picker').selectpicker({
size: 10
});
loadSample(MODES[0]);

$(".theme-picker").change(function() {
changeTheme(this.selectedIndex);
});
$('.theme-picker').selectpicker({
size: 3
});

loadDiffSample();

$('#inline-diff-checkbox').change(function() {
diffEditor.updateOptions({
renderSideBySide: !$(this).is(':checked')
});
});
});

window.onresize = function() {
if (editor) {
editor.layout();
}
if (diffEditor) {
diffEditor.layout();
}
};
});

function loadSample(mode) {
$.ajax({
type: 'GET',
url: mode.sampleURL,
dataType: 'text',
beforeSend: function() {
$('.loading.editor').show();
},
error: function() {
if (editor) {
if (editor.getModel()) {
editor.getModel().dispose();
}
editor.dispose();
editor = null;
}
$('.loading.editor').fadeOut({
duration: 200
});
$('#editor').empty();
$('#editor').append('<p class="alert alert-error">Failed to load ' + mode.modeId + ' sample</p>');
}
}).done(function(data) {
if (!editor) {
$('#editor').empty();
editor = monaco.editor.create(document.getElementById('editor'), {
model: null,
});
}

var oldModel = editor.getModel();
var newModel = monaco.editor.createModel(data, mode.modeId);
editor.setModel(newModel);
if (oldModel) {
oldModel.dispose();
}
$('.loading.editor').fadeOut({
duration: 300
});
});
}

function loadDiffSample() {

var onError = function() {
$('.loading.diff-editor').fadeOut({
duration: 200
});
$('#diff-editor').append('<p class="alert alert-error">Failed to load diff editor sample</p>');
};

$('.loading.diff-editor').show();

var lhsData = null,
rhsData = null,
jsMode = null;

$.ajax({
type: 'GET',
url: 'https://microsoft.github.io/monaco-editor/index/samples/diff.lhs.txt',
dataType: 'text',
error: onError
}).done(function(data) {
lhsData = data;
onProgress();
});

$.ajax({
type: 'GET',
url: 'https://microsoft.github.io/monaco-editor/index/samples/diff.rhs.txt',
dataType: 'text',
error: onError
}).done(function(data) {
rhsData = data;
onProgress();
});

function onProgress() {
if (lhsData && rhsData) {
diffEditor = monaco.editor.createDiffEditor(document.getElementById('diff-editor'), {
enableSplitViewResizing: false
});

var lhsModel = monaco.editor.createModel(lhsData, 'text/javascript');
var rhsModel = monaco.editor.createModel(rhsData, 'text/javascript');

diffEditor.setModel({
original: lhsModel,
modified: rhsModel
});

$('.loading.diff-editor').fadeOut({
duration: 300
});
}
}
}

function changeTheme(theme) {
var newTheme = (theme === 1 ? 'vs-dark' : (theme === 0 ? 'vs' : 'hc-black'));
if (editor) {
editor.updateOptions({
'theme': newTheme
});
}
if (diffEditor) {
diffEditor.updateOptions({
'theme': newTheme
});
}
}

工作 fiddle : https://jsfiddle.net/robertrozas/r1b9hbhk/

关于asp.net-mvc - 在 Web 应用程序中使用 Monaco 编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38489158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com