monaco-editor的使用

devops-sample中已经添加相关示例页面 (devops-sample/pages/home/codeEditor)

简单的编辑器实现

使用editor.create(id,data)方法创建文件编辑查看器,参数id为html页面中要显示编辑器的标签的id,参数data为相关数据(具体说明见使用扩展)。
如,要在一个id为js-manoco-editor的标签中放入一个文件编辑器:

function done(editor) {
  displayEditor = editor.create($('#js-manoco-editor')[0], { //#js-manoco-editor为要渲染的标签的id
    value: nui.loadText("sample/pages/data/codeEditorDemo-java.txt"), //要显示的代码
    language: "java", //语言类型
    theme: "vs-dark" //显示的主题
  });
}
nui.loadCodeEditor(done); //加载编辑器

动态改变编辑器中的内容

  • 修改语言
       使用displayEditor.setModel(newModel)方法设定编辑器中显示的内容, 参数newModel为编辑器中要显示的新内容通过editor.createModel(contentTxt,theme)方法创建,
     (editor.createModel(contentTxt,theme)中,参数contentTxt为要编辑器中的内容,参数theme为编辑器显示主题风格)
      如
    
      var url = "sample/pages/data/codeEditorDemo-javascript.txt";    //代码的url地址
      var contentTxt = nui.loadText(url);      //加载要显示的代码
      var newModel = monacoEditor.createModel(contentTxt,"java");   //创建新代码的模型,第二个参数为语言类型
      displayEditor.setModel(newModel);       //将新模型放进展示窗
  • 修改编辑器中显示的内容 使用displayEditor.getModel().setValue(code),参数code为string
      var url = "sample/pages/data/codeEditorDemo-javascript.txt";    //用户选择的代码的url地址
      var contentTxt = nui.loadText(url);      //加载要显示的代码
      displayEditor.getModel().setValue(contentTxt);       //将新代码放进编辑器

修改编辑器中的显示风格

使用displayEditor.updateOptions(data)方法,如

displayEditor.updateOptions({
'theme': "vs-dark"     //vs-dark为要设置的显示风格
});

动态加载代码及当前语言获取

  • 使用displayEditor.getModel().setValue(code)方法可以设置编辑器中显示的内容
  • 使用displayEditor.getModel().getValue()方法可以获取到编辑器中的内容
  • 使用editor.languages.getLanguages()获得当前编辑器语言

使用扩展

editor.create(id,data)中的data参数内可以包含很多属性,
通过设置这些属性可以改变编辑器的一些显示效果
(这里仅仅展示一部分属性,了解更多属性点这里)

{       
        value: nui.loadText("sample/pages/data/codeEditorDemo-java.txt"),   //要显示的代码
        language: "java",    //语言类型
        theme: "vs-dark",     //显示的主题
        frontSize: 12 ,       //显示器中的字号
        readOnly: true        //设置编辑器中的文字可编辑
 }

diff的使用

  • 使用editor.createDiffEditor(id, data);方法创建编辑器,参数id为html页面中要显示编辑器的标签的id,参数data为相关数据(具体说明见使用扩展)
  • 通过diffEditor.setModel({original:eidtorModel1,modified:eidtorModel2})方法来设置要对比的两段代码,editorModel为编辑模块,需要通过editor.createModel(code,language)方法创建 (monaco-editor的使用中解释过该方法) 如
var done = function(editor) {
      diffEditor = editor.createDiffEditor($('#js-manoco-diff-editor')[0], {
        theme: "vs-dark"  //设置编辑器主题风格
      });
      diffEditor.setModel({
        original: editor.createModel(nui.loadText("sample/pages/data/codeEditorDemo-diff-original.txt"), 'javascript'),    //原版内容
        modified: editor.createModel(nui.loadText("sample/pages/data/codeEditorDemo-diff-modified.txt"), 'javascript')     //修改的内容
      })
    }
    nui.loadCodeEditor(done);       //加载编辑器

results matching ""

    No results matching ""