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 30 Javascript
JavaScript判断DOM何时加载完毕的技巧
Nov 11 Javascript
js QQ客服悬浮效果实现代码
Dec 12 Javascript
原生JS实现的简单小钟表功能示例
Aug 30 Javascript
用Fundebug插件记录网络请求异常的方法
Feb 21 Javascript
详解Vue demo实现商品列表的展示
May 07 Javascript
详解vue-cli3多页应用改造
Jun 04 Javascript
layui type2 通过url给iframe子页面传值的例子
Sep 06 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
Apr 09 Javascript
js实现简单抽奖功能
Nov 24 Javascript
Taro小程序自定义顶部导航栏功能的实现
Dec 17 Javascript
vue 中this.$set 动态绑定数据的案例讲解
Jan 29 Vue.js
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 join函数应用
2011/05/04 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
js直接编辑当前cookie的脚本
2008/09/14 Javascript
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
2017/05/25 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
python 网络编程详解及简单实例
2017/04/25 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
2017/07/20 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
python实现猜数字游戏
2020/03/25 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
新加坡第一大健康与美容零售商:屈臣氏新加坡(Watsons Singapore)
2020/12/11 全球购物
南京某软件公司的.net面试题
2015/11/30 面试题
opencv实现图像几何变换
2021/03/24 Python
市场营销毕业生自荐信
2013/11/23 职场文书
银行批评与自我批评
2014/02/10 职场文书
境外导游求职信
2014/02/27 职场文书
中学生打架检讨书
2014/10/13 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书
PYTHON基于Pyecharts绘制常见的直角坐标系图表
2022/04/28 Python
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers