Monaco Editor for Vue.
npm install monaco-editor-vue
<template>
<div id="app">
<MonacoEditor
width="800"
height="500"
theme="vs-dark"
language="javascript"
:options="options"
@change="onChange"
></MonacoEditor>
</div>
</template>
<script>
import MonacoEditor from 'monaco-editor-vue';
export default {
name: "App",
components: {
MonacoEditor
},
data() {
return {
options: {
//Monaco Editor Options
}
}
},
methods: {
onChange(value) {
console.log(value);
}
}
};
</script>
Add the Monaco Webpack plugin monaco-editor-webpack-plugin
to your webpack.config.js
:
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')
module.exports = {
plugins: [
new MonacoWebpackPlugin({
// available options are documented at https://github.com/Microsoft/monaco-editor-webpack-plugin#options
languages: ['javascript']
})
]
}
If using Vue CLI instead of Webpack directly, you can add to vue.config.js
:
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')
module.exports = {
chainWebpack: config => {
config.plugin('monaco-editor').use(MonacoWebpackPlugin, [
{
// Languages are loaded on demand at runtime
languages: ['json', 'javascript', 'html', 'xml']
}
])
}
}
If you specify value
property, the component behaves in controlled mode.
Otherwise, it behaves in uncontrolled mode.
-
width
width of editor. Defaults to100%
. -
height
height of editor. Defaults to100%
. -
value
value of the auto created model in the editor. -
original
value of the auto created original model in the editor. -
language
the initial language of the auto created model in the editor. Defaults tojavascript
. -
theme
the theme of the editor. Defaults tovs
. -
options
refer to Monaco interface IEditorConstructionOptions. -
editorBeforeMount(monaco)
The function called before the editor mounted (similar tobeforeMount
of Vue). -
editorMounted(editor, monaco)
The function called when the editor has been mounted (similar tomounted
of Vue). -
change(newValue, event)
an event emitted when the content of the current model has changed.
Refer to Monaco interface IEditor.
Monaco only supports one theme.
<template>
<div id="app">
<MonacoEditor
:diffEditor="true"
original="..."
//...
></MonacoEditor>
</div>
</template>