JS代码编译器Monaco如何按照和使用?
Admin 2021-09-16 群英技术资讯 932 次浏览
今天给大家分享的是JS代码编译器的内容,但是JavaScript的代码编译器有很多,这篇文章就主要介绍编译器Monaco的安装和使用,下文有详细的介绍,感兴趣的朋友可以参考。
对于Monaco的使用,下文我的需求是可以语法高亮、函数提示功能、自动换行、代码折叠。
Monaco是微软家的,支持的语言很多,还有缩略地图,有时候提示不好用然后包体很大。
The Monaco Editor is the code editor that powers VS Code.

安装
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代码编译器的使用,大家可以继续浏览群英网络其他相关的文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文实例为大家分享了js实现列表自动滚动循环播放的具体代码,供大家参考,具体内容如下
vue中英文切换如何实现,详细代码如下,感兴趣的朋友就继续往下看吧。
JS遍历数组(循环数组)的方式有多种,可以使用传统的for循环,也可以使用升级版的for in循环,还可以使用Array类型的forEach() 方法,这篇文章主要给大家介绍了关于JS中for、for...in、for...of和forEach的区别和用法的相关资料,需要的朋友可以参考下
一些新手朋友对于怎样用vue实现导入Excel不是很了解,其实实现步骤和方法并不困难,下面小编就给大家来详细的介绍一下,有这方面学习需要的朋友可以参考。
为什么会出现箭头函数??传统的javascript函数语法并没有提供任何的灵活性,每一次你需要定义一个函数时,你都必须输入function () {},这至少会出
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008