Monaco Editor的使用

概述

项目当中,难免会遇到代码编辑器的功能需求,自己实现肯定不现实的,因此开源库成为了首要选择,因此这里主要介绍Monaco Editor的使用,Monaco Editor 是一个浏览器端的代码编辑器库,同时它也是 VS Code 所使用的编辑器,因此该插件功能十分强大,但是官方的文档看着实在是不太友好,因此这里简单记录插件的基本使用

具体使用

安装

npm install monaco-editor

创建编辑器

import * as monaco from "monaco-editor";
import "./work.js";
window.onload = () => {
  const container = document.querySelector(".box");
  const value = `function hello() {
    alert('Hello world!');
  }`;

  const options = {
    value, //值
    language: "javascript", //语言
    theme: "vs-dark", //主题
    readOnly: true, //是否只读
    automaticLayout: true, // 自动布局
    minimap: {
      // 关闭小地图
      enabled: true,
    },
  };
  const editor = monaco.editor.create(container, options);
};

设置代码提示

一定要导入对应的代码提示文件,不然页面代码输入没有代码提示 ./work.js

import * as monaco from "monaco-editor";
import editorWorker from "monaco-editor/esm/vs/editor/editor.worker?worker";
import jsonWorker from "monaco-editor/esm/vs/language/json/json.worker?worker";
import cssWorker from "monaco-editor/esm/vs/language/css/css.worker?worker";
import htmlWorker from "monaco-editor/esm/vs/language/html/html.worker?worker";
import tsWorker from "monaco-editor/esm/vs/language/typescript/ts.worker?worker";

self.MonacoEnvironment = {
  getWorker(_, label) {
    if (label === "json") {
      return new jsonWorker();
    }
    if (label === "css" || label === "scss" || label === "less") {
      return new cssWorker();
    }
    if (label === "html" || label === "handlebars" || label === "razor") {
      return new htmlWorker();
    }
    if (label === "typescript" || label === "javascript") {
      return new tsWorker();
    }
    return new editorWorker();
  },
};

monaco.languages.typescript.typescriptDefaults.setEagerModelSync(true);

常用方法

editor.setValue('')//设置值
editor.getValue();//获取值

总结

更多的用法可以参考Monaco Editor在git上面的示例.

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 12:19
点赞 评论 收藏
分享
10-15 09:13
已编辑
天津大学 soc前端设计
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务