JS代码编译器Monaco使用方法

 更新时间:2021年06月11日 10:47:35   作者:FannieGirl  
Monaco是微软家的,支持的语言很多,还有缩略地图,有时候提示不好用然后包体很大的问题,但是这是极少数,今天小编给大家分享JS编译器Monaco使用教程,感兴趣的朋友一起看看吧

前言

我的需求是可以语法高亮、函数提示功能、自动换行、代码折叠

Monaco

Monaco是微软家的,支持的语言很多,还有缩略地图,有时候提示不好用然后包体很大。
The Monaco Editor is the code editor that powers VS Code.

使用方法官网

[官方文档](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>

 

运行效果

缺点

我的推翻了,不想再跑一下,代码还在就写一个demo。运行还是可以的(有客户使用但也反馈不好用,是我自己的锅,不配使用Monaco)真的很难用,特别是提示的功能,一般情况下是没有提示的。然后一个包很大,好像有3.9G(严重)。可能没有按需引入,但是不引入没有提示功能,自定义函数提示。还有webpack配置,来回折腾!

以上就是JS编译器Monaco使用教程的详细内容,更多关于JS编译器Monaco的资料请关注脚本之家其它相关文章!

相关文章

  • 谈谈JavaScript的New关键字

    谈谈JavaScript的New关键字

    这篇文章主要和大家聊一聊JavaScript的New关键字,一般我们通过New关键字来创建一个类的实例对象,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 用js判断是否为360浏览器的实现代码

    用js判断是否为360浏览器的实现代码

    这篇文章主要介绍了用js判断是否为360浏览器的实现代码,有时候我们需要判断是否为360浏览器,包括百度联盟后台就有这样的提示需要的朋友可以参考下
    2015-01-01
  • 浅谈JavaScript对象的创建方式

    浅谈JavaScript对象的创建方式

    下面小编就为大家带来一篇浅谈JavaScript对象的创建方式。小编觉得挺不错的,现在就分享给大家,也给大家做个参考,一起跟随小编过来看看吧
    2016-06-06
  • javascript写的日历类(基于pj)

    javascript写的日历类(基于pj)

    在网上搜索了一些用javascript写的日历类都不太令人满意,主要是用了之后还要写很多客户端代码,有空之余,自己动手写了一个。主要是推广自己写的js pr库。
    2010-12-12
  • JS组件Bootstrap实现弹出框效果代码

    JS组件Bootstrap实现弹出框效果代码

    这篇文章主要介绍了JS组件Bootstrap实现弹出框效果代码的相关资料,对弹出框感兴趣的小伙伴们可以参考一下
    2016-04-04
  • 基于JavaScript实现熔岩灯效果导航菜单

    基于JavaScript实现熔岩灯效果导航菜单

    这篇文章主要介绍了基于JavaScript实现熔岩灯效果导航菜单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 详解js中的apply与call的用法

    详解js中的apply与call的用法

    在ECAMScript3给Function的原型定义了两个方法,它们是Function.prototype.call和Function.prototype.apply。本文详细介绍了apply与call的用法,有需要的可以参考下。
    2016-07-07
  • javascript笛卡尔积算法实现方法

    javascript笛卡尔积算法实现方法

    这篇文章主要介绍了javascript笛卡尔积算法实现方法,实例分析了笛卡尔积算法的javascript实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • JavaScript中继承原理与用法实例入门

    JavaScript中继承原理与用法实例入门

    这篇文章主要介绍了JavaScript中继承原理与用法,结合实例形式分析了JavaScript中继承的基本概念、原理、用法及相关操作注意事项,需要的朋友可以参考下
    2020-05-05
  • 微信小程序使用第三方库Underscore.js步骤详解

    微信小程序使用第三方库Underscore.js步骤详解

    大家都知道Underscore.js是一个 JavaScript 工具库,它提供了一整套函数式编程的实用功能,但是没有扩展任何 JavaScript 内置对象。那么这篇文章我们就来学习下微信小程序如何使用第三方库Underscore.js,有需要的可以参考学习。
    2016-09-09

最新评论