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调试logger组件实现代码
Nov 20 Javascript
常用js字符串判断方法整理
Oct 18 Javascript
jQuery选择器之基本选择器与层次选择器
Mar 03 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
Aug 06 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
Nov 01 Javascript
jQuery控制元素隐藏和显示
Mar 03 Javascript
JS运动特效之完美运动框架实例分析
Jan 24 Javascript
Spring Boot/VUE中路由传递参数的实现代码
Mar 02 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
Oct 10 Javascript
详解nuxt路由鉴权(express模板)
Nov 21 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
Dec 05 Javascript
使用webpack搭建pixi.js开发环境
Feb 12 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
PHP 判断常量,变量和函数是否存在
2009/04/26 PHP
Thinkphp模板中使用自定义函数的方法
2012/09/23 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
js数组操作常用方法
2014/05/08 Javascript
浅谈js中变量初始化
2015/02/03 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
python3中property使用方法详解
2019/04/23 Python
Django之PopUp的具体实现方法
2019/08/31 Python
python高级特性简介
2020/08/13 Python
Python爬取梨视频的示例
2021/01/29 Python
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
商业活动邀请函
2014/02/04 职场文书
工厂门卫岗位职责范本
2014/04/04 职场文书
小学生期末评语
2014/04/21 职场文书
教师考核评语
2014/04/28 职场文书
优秀教师先进个人事迹材料
2014/08/31 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
OpenCV-Python实现油画效果的实例
2021/06/08 Python