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 相关文章推荐
A标签中通过href和onclick传递的this对象实现思路
Apr 19 Javascript
js验证整数加保留小数点的简单实例
Dec 02 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
Sep 03 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
Nov 26 Javascript
JSON+Jquery省市区三级联动
Jan 13 Javascript
jQuery表格插件datatables用法汇总
Mar 29 Javascript
jQuery简单实现对数组去重及排序操作实例
Oct 31 jQuery
解决vue中使用Axios调用接口时出现的ie数据处理问题
Aug 13 Javascript
使用webpack4编译并压缩ES6代码的方法示例
Apr 24 Javascript
vue动态注册组件实例代码详解
May 30 Javascript
学习RxJS之JavaScript框架Cycle.js
Jun 17 Javascript
vue 实现input表单元素的disabled示例
Oct 28 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与XML联手进行网站编程代码实例
2008/07/10 PHP
用PHP实现的四则运算表达式计算实现代码
2011/08/02 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
表单元素与非表单元素刷新区别详细解析
2013/11/06 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
Django继承自带user表并重写的例子
2019/11/18 Python
Python 面向对象之类class和对象基本用法示例
2020/02/02 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
英国二手物品交易网站:Preloved
2017/10/06 全球购物
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
怎么样写好简历中的自我评价
2013/10/25 职场文书
品质主管的岗位职责
2013/12/04 职场文书
青春无悔演讲稿
2014/05/08 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
教师党员自我评价2015
2015/03/04 职场文书
师德师风主题教育活动总结
2015/05/07 职场文书
详解python字符串驻留技术
2021/05/21 Python
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js