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基础学习资料
Nov 23 Javascript
模仿百度三维地图的js数据分享
May 12 Javascript
JQuery获取样式中的background-color颜色值的问题
Aug 20 Javascript
jquery解析xml字符串简单示例
Apr 11 Javascript
javascript移动设备Web开发中对touch事件的封装实例
Jun 05 Javascript
js获取元素相对窗口位置的实现代码
Sep 28 Javascript
js调试工具Console命令详解
Oct 21 Javascript
jQuery中ajax和post处理json的不同示例对比
Nov 02 Javascript
JavaScript实现大数的运算
Nov 24 Javascript
AngularJS学习笔记之基本指令(init、repeat)
Jun 16 Javascript
BootStrap导航栏问题记录
Jul 31 Javascript
Node 代理访问的实现
Sep 19 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 图像处理类1
2009/06/15 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
javascript获取网页宽高方法汇总
2015/07/19 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
WebStorm中如何将自己的代码上传到github示例详解
2020/10/28 Javascript
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python里隐藏的“禅”
2014/06/16 Python
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
武汉东之林科技有限公司机试
2013/09/17 面试题
一些Unix笔试题和面试题
2013/01/22 面试题
力学专业求职信
2014/07/23 职场文书
2014年教研室工作总结
2014/12/06 职场文书
秋菊打官司观后感
2015/06/03 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python