JS代码编译器Monaco使用方法


Posted in Javascript onJune 11, 2021

前言

我的需求是可以语法高亮、函数提示功能、自动换行、代码折叠

Monaco

Monaco是微软家的,支持的语言很多,还有缩略地图,有时候提示不好用然后包体很大。
The Monaco Editor is the code editor that powers VS Code.

JS代码编译器Monaco使用方法

使用方法官网

[官方文档](https://microsoft.github.io/monaco-editor/index.html)
[在线demo](https://github.com/Microsoft/monaco-editor-samples)
[github](https://github.com/Microsoft/monaco-editor)

安装

yarn add monaco-editor | npm install monaco-editor

引入

import * as monaco from 'monaco-editor' // 包体很大了 但是demo可以跑起来

//自定义一些提示函数
const suggestions = [
  {
    label: 'split_chinese',
    insertText: 'split_chinese(inputString,language);', // 不写的时候不展示。。
    detail:
      'inputString:need split string\n' +
      'language:\nCH_T:traditional Chinese\nCH_S:Chinese Simplified\n HK_T:Hong Kong Traditional\nTW_T:Taiwan Traditional\n'
  },
  {
    label: 'uuid',
    insertText: 'var uuid = uuid();',
    detail: 'generate uuid'
  },
  {
    label: 'HashMap',
    insertText: 'var hashMap = new HashMap();',
    detail: 'create hash object'
  }
]

初始化

mounted() {
    monaco.languages.registerCompletionItemProvider('JavaScript', {
      provideCompletionItems() {
        return {
          suggestions: suggestions
        }
      },
      triggerCharacters: [' ', '.'] // 写触发提示的字符,可以有多个
    })
    let self = this
    setTimeout(function () {
      self.init()
    }, 50) //因为父组件还未传参 子组件已经渲染
  }
  
 //初始化方法
init(script) {
  let self = this
  if (script) this.code = script
  self.$refs.container.innerHTML = ''
  var editor = monaco.editor.create(this.$refs.container, {
    value: this.code,
    language: 'javascript',
    minimap: {
      enabled: false
    },
    fontSize: '12px',
    fixedOverflowWidgets: true // 超出编辑器大小的使用fixed属性显示
  })
  editor.onDidChangeModelContent(function () {
    self.$emit('update:code', editor.getValue()) //用来监听编辑器内容变化,将内容传给父组件
  })
}

html

<template>
  <div ref="container" class="monaco"></div>
</template>

css

<style scoped>
.monaco {
  width: 95%;
  height: 400px;
  border: 1px solid #dcdfe6;
  text-align: left;
  margin-right: 20px;
  border-radius: 4px;
}
</style>

 

运行效果

JS代码编译器Monaco使用方法

缺点

我的推翻了,不想再跑一下,代码还在就写一个demo。运行还是可以的(有客户使用但也反馈不好用,是我自己的锅,不配使用Monaco)真的很难用,特别是提示的功能,一般情况下是没有提示的。然后一个包很大,好像有3.9G(严重)。可能没有按需引入,但是不引入没有提示功能,自定义函数提示。还有webpack配置,来回折腾!

以上就是JS编译器Monaco使用教程的详细内容,更多关于JS编译器Monaco的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
奇妙的js
Sep 24 Javascript
JavaScript toFixed() 方法
Apr 15 Javascript
基于jQuery的message插件实现右下角弹出消息框
Jan 11 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
Aug 01 Javascript
jQuery鼠标事件汇总
Aug 30 Javascript
JS中Object对象的原型概念基础
Jan 29 Javascript
JS实现的简单折叠展开动画效果示例
Apr 28 Javascript
详解React之父子组件传递和其它一些要点
Jun 25 Javascript
详解vue中的computed的this指向问题
Dec 05 Javascript
JavaScript常见事件对象与操作实例总结
Jan 05 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
Jul 26 Javascript
小程序外卖订单界面的示例代码
Dec 30 Javascript
React中的Context应用场景分析
Jun 11 #Javascript
详解JVM系列之内存模型
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
一文搞懂redux在react中的初步用法
Jun 09 #Javascript
深入详解JS函数的柯里化
Jun 09 #Javascript
javascript canvas实现雨滴效果
用JS实现飞机大战小游戏
Jun 09 #Javascript
You might like
PHP教程 基本语法
2009/10/23 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
php简单计算权重的方法示例【适合抽奖类应用】
2019/06/10 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
2013/01/17 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
2015/02/02 Javascript
javascript实现动态改变层大小的方法
2015/05/14 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
node 命令方式启动修改端口的方法
2018/05/12 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
如何使用Python实现自动化水军评论
2019/06/26 Python
python gdal安装与简单使用
2019/08/01 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
大学生毕业自我鉴定范文
2013/09/19 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
小学教师自我鉴定范文
2014/03/20 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
单位租车协议书
2015/01/29 职场文书
《将心比心》教学反思
2016/02/23 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
oracle表分区的概念及操作
2021/04/24 Oracle
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技