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 相关文章推荐
javascript编程起步(第六课)
Feb 27 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
Jan 02 Javascript
Jquery 绑定时间实现代码
May 03 Javascript
JavaScript中的apply()方法和call()方法使用介绍
Jul 25 Javascript
收集json解析的四种方法分享
Jan 17 Javascript
AngularJS基础学习笔记之指令
May 10 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
Nov 18 Javascript
js实现简单的二级联动效果
Mar 09 Javascript
JS实现css hover操作的方法示例
Apr 07 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
Aug 20 Javascript
Node.js学习之内置模块fs用法示例
Jan 22 Javascript
Vue3不支持Filters过滤器的问题
Sep 24 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 获取本地IP代码
2013/06/23 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
python简单实现基数排序算法
2015/05/16 Python
python生成随机密码或随机字符串的方法
2015/07/03 Python
Python爬虫学习之翻译小程序
2019/07/30 Python
下载官网python并安装的步骤详解
2019/10/12 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
2020/08/24 HTML / CSS
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
成功的酒店创业计划书
2013/12/27 职场文书
生物制药自我鉴定
2014/01/25 职场文书
刘胡兰的英雄事迹材料
2014/02/11 职场文书
电焊工岗位职责
2014/03/06 职场文书
校园联欢晚会主持词
2014/03/17 职场文书
质量管理标语
2014/06/12 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
简易版租房协议书范本
2014/10/13 职场文书
毕业生见习报告总结
2014/11/08 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
被告答辩状范文
2015/05/22 职场文书
第一军规观后感
2015/06/12 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python