阅读 83

前端工具 | 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

  • css

  • 运行效果

缺点

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

芳妮酱总结

今天我们改用了brace,真香。使用简单,基本需求满足,没有额外的配置

原文:https://www.cnblogs.com/ifannie/p/14864512.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐