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 相关文章推荐
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
Jul 18 Javascript
js 强制弹出窗口代码研究-又一款代码
Mar 20 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
Apr 14 Javascript
jQuery图片滚动图片的效果(另类实现)
Jun 02 Javascript
jquery操作cookie插件分享
Jan 14 Javascript
jQuery中parents()和parent()的区别分析
Oct 28 Javascript
js+CSS实现弹出居中背景半透明div层的方法
Feb 26 Javascript
12306验证码破解思路分享
Mar 25 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
Jun 02 Javascript
javascript中获取元素标签中间的内容的实现方法
Oct 08 Javascript
JavaScript EventEmitter 背后的秘密 完整版
Mar 29 Javascript
vue实现跨域的方法分析
May 21 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采用file_get_contents代替使用curl实例
2014/11/07 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
greybox——不开新窗口看新的网页
2007/02/20 Javascript
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
2016/03/08 Javascript
JavaScript File分段上传
2016/03/10 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
2018/05/13 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
小程序关于请求同步的总结
2019/05/05 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
2019/05/09 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
python Opencv将图片转为字符画
2021/02/19 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
html5.2 dialog简介详解
2018/02/27 HTML / CSS
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
人事部岗位职责范本
2014/03/05 职场文书
《长相思》听课反思
2014/04/10 职场文书
节约用电标语
2014/06/17 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python
Python实现机器学习算法的分类
2021/06/03 Python
php png失真的原因及解决办法
2021/10/24 PHP