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 相关文章推荐
jquery插件冲突(jquery.noconflict)解决方法分享
Mar 20 Javascript
jQuery不兼容input的change事件问题解决过程
Dec 05 Javascript
JS设置下拉列表框当前所选值的方法
Dec 22 Javascript
jQuery插件实现可输入和自动匹配的下拉框
Oct 24 Javascript
jquery获取easyui日期控件的值实现方法
Nov 09 Javascript
jquery实现表单获取短信验证码代码
Mar 13 Javascript
基于jQuery实现文字打印动态效果
Apr 21 jQuery
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
Jun 06 Javascript
Vue组件化通讯的实例代码
Jun 23 Javascript
vue实现点击展开点击收起效果
Apr 27 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
Aug 22 Javascript
Element-UI中Upload上传文件前端缓存处理示例
Feb 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基于dom实现的图书xml格式数据示例
2017/02/03 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
JavaScript中实现sprintf、printf函数
2015/01/27 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
jquery ztree实现树的搜索功能
2016/02/25 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
2017/03/21 Javascript
利用JS如何计算字符串所占字节数示例代码
2017/09/13 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
解决layer图标icon不加载的问题
2019/09/04 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
Python新手实现2048小游戏
2015/03/31 Python
Python写入CSV文件的方法
2015/07/08 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
详解Python绘图Turtle库
2019/10/12 Python
Python yield的用法实例分析
2020/03/06 Python
python eventlet绿化和patch原理
2020/11/21 Python
pandas 数据类型转换的实现
2020/12/29 Python
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
Madewell美德威尔美国官网:美国休闲服饰品牌
2016/11/25 全球购物
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
大学生毕业鉴定
2014/01/31 职场文书
赵乐秦在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
门卫岗位职责
2015/02/09 职场文书
特岗教师个人总结
2015/02/10 职场文书
工程催款通知书
2015/04/17 职场文书
go:垃圾回收GC触发条件详解
2021/04/24 Golang