MonacoEditor + Vue を使ってエディタを実装
約 3 分
目次
概要
Vue + MonacoEditorでJSのデバッガを作ってみました。 標準入出力(?)をサポートしています。とりあえず意味がわからないと思うのでデモをみてください。
紹介
デモ
https://s-yoshiki.github.io/AtCoder-JsDebugger/#/
GitHub
https://github.com/s-yoshiki/AtCoder-JsDebugger
セットアップ
Vue
Vueプロジェクトのセットアップはこの辺りを参考にしてください。
https://tech-blog.s-yoshiki.com/2019/02/1090/
vue-monaco
ここを参考にしました。
https://github.com/egoist/vue-monaco
yarn add vue-monaco
Usage
サンプルコード
<template>
<monaco-editor class="editor" v-model="code" language="javascript" ref="editor" :theme="theme"></monaco-editor>
</template>
<script>
import MonacoEditor from "vue-monaco";
export default {
components: {
MonacoEditor
},
data() {
return {
code: "const noop = () => {}",
theme: "vs-dark"
};
}
};
</script>
<style>
.editor {
width: 600px;
height: 800px;
}
</style>
ポイント
テーマカラーについて
themeに指定できるのは以下の3種類である。
- 'vs' (白)
- 'vs-dark' (黒)
- 'hc-black' (ハイライトカラー)
エディタのリサイズ
cssを調整して、縦・横幅を100%にしていたとしても、エディタはリサイズされません。 windowのリサイズを検知した瞬間に以下のようなメソッドを適用する必要があります。
window.addEventListener('resize', (e) => {
this.$refs.editor.getMonaco().layout();
});
エディタの変更の検知
エディタの内容の変更についてはvueのwatchを使うのが良いでしょう。
変更を検知した瞬間に alert するサンプル
import MonacoEditor from 'vue-monaco';
export default {
components: {
MonacoEditor,
},
data() {
return {
code: '',
};
},
watch: {
code() {
alert(this.code);
},
},
};おすすめの記事
最新の記事
よく読まれている記事
タグから探す
- javascript129
- typescript66
- node.js54
- linux54
- 画像処理48
- amazon-aws47
- アルゴリズム37
- canvas35
- html529
- 画像処理100本ノック27
- php24
- centos24
- python22
- 競技プログラミング21
- mac21
- mysql20
- opencv17
- 雑談16
- 機械学習16
- docker16
- wordpress15
- atcoder14
- apache12
- データベース12
- amazon-s312
- red-hat12
- prisma12
- ubuntu11
- github10
- git10
- react10
- mariadb10
- vue.js9
- aws-cdk9
- css38
- 可視化8
- 小ネタ8
- next.js8
- nestjs8
- amazon-lightsail7
- ブログ6
- cms6
- oracle6
- perl6
- gitlab6
- iam5
- amazon-ec25
- 資格試験5
- aws-amplify5
- curl4