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加解密 脚本解密
Feb 22 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
Dec 10 Javascript
php中给js数组赋值方法
Mar 10 Javascript
基于Jquery实现键盘按键监听
May 11 Javascript
Javascript实现单张图片浏览
Dec 18 Javascript
在JavaScript中使用NaN值的方法
Jun 05 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
Oct 26 Javascript
js操作数组函数实例小结
Dec 10 Javascript
提升jQuery的性能需要做好七件事
Jan 11 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
Oct 16 Javascript
浅谈Webpack 是如何加载模块的
May 24 Javascript
微信小程序全局变量改变监听的实现方法
Jul 15 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
打造计数器DIY三步曲(中)
2006/10/09 PHP
php录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
php统计文章排行示例
2014/03/04 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
2018/03/12 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
Python将图片转换为字符画的方法
2020/06/16 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
财务会计专业毕业生自荐信
2013/10/19 职场文书
简历中求职的个人自我评价
2013/12/03 职场文书
行政专员的岗位职责
2014/03/10 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
演讲开场白台词大全
2015/05/29 职场文书
宣传部部长竞选稿
2015/11/21 职场文书
《雷雨》教学反思
2016/02/20 职场文书
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers