vue-monaco-editor2
v1.0.9
Published
> Monaco Editor Vue Component
Downloads
15
Readme
vue-monaco-editor2
Monaco Editor Vue Component
Based off React Monaco Editor Based off vue-monaco-editor
解决了原组件编辑器没有高度的问题
Setup
npm install vue-monaco-editor2 --save
Simple Vue Use
import MonacoEditor from 'vue-monaco-editor2'
// use in component
export default {
components: {
MonacoEditor
}
}
Component Props
| Option | Type | Default | Description
|:-------------|:-------------|:-------|:-------|
| language | String | javascript
| |
| height | Number/String | 100%
||
| width | Number/String | 100%
||
| code | String | // code \n
| Initial code to show |
| theme | String | vs-dark
| vs, hc-black, or vs-dark |
| highlighted | Array[Object] | [{ number: 0, class: ''}]
| Lines to highlight with numbers and .classes
|
| changeThrottle | Number(ms) | 0
| throttle codeChange
emit |
| update | boolean | false | immediately update code to Monaco |
| srcPath| String | https://gsblackwidow.blob.core.chinacloudapi.cn/jscontainer/monaco-editor/min
| you can use your own cdn url
| editorOptions | Object | Merged with defaults below | See Monaco Editor Options |
Editor Default Options
defaults: {
selectOnLineNumbers: true,
roundedSelection: false,
readOnly: false,
cursorStyle: 'line',
automaticLayout: false,
glyphMargin: true
}
Component Events
These events are available to parent component
| Event | Returns | Description
|:-------------|:-------------|:-------|
|mounted|editor
[editor instance]|Emitted when editor has mounted|
|codeChange|editor
[editor instance]|Emitted when code has changed|
Example
Component Implementation
<MonacoEditor
height="600"
language="typescript"
:code="code"
:editorOptions="options"
@mounted="onMounted"
@codeChange="onCodeChange"
>
</MonacoEditor>
Parent
module.exports = {
components: {
Monaco
},
data() {
return {
code: '// Type away! \n',
options: {
selectOnLineNumbers: false
}
};
},
methods: {
onMounted(editor) {
this.editor = editor;
},
onCodeChange(editor) {
console.log(this.editor.getValue());
}
}
};
Webpack Use
By default, monaco-editor is loaded from a cdn asyncronously using require
. To use a local copy of monaco-editor
with webpack, we need to expose the dependency in our build directory:
npm install copy-webpack-plugin --save-dev
Add this to your webpack.config.js:
const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {
plugins: [
new CopyWebpackPlugin([
{
from: 'node_modules/monaco-editor/min/vs',
to: 'vs',
}
])
]
};
Then, specify the build directory path in the srcPath
prop. See src/App.vue
for an example.
Dev Use
git clone [this repo] .
npm install
npm run dev
Edit src/App.vue