Vue 使用 Monaco 打造 VSCode Editor Cloud
2021-10-07
Monaco 是 VSCode 的編輯器核心,同時是 Open Source 的專案,提供開發人員用於設計個人化的 Editor。本次示範以 Vue Cli 並使用 Vue 2 來設計基於 Monaco 的 Cloud 版本 VSCode Style Editor。
說明
先不用忙了,微軟推出了 VSCODE.DEV,輕快的線上編輯工具的夢想達成了!
Create Project
Vue Create Vue2-Monaco
# Vue 2.x
cd Vue2-Monaco
npm install monaco-editor
npm install monaco-editor-webpack-plugin
Setup
本次是利用 monaco-editor-webpack-plugin 來達到在 Vue 調用 Monach 的效果,而 Vue CLI 要加入 webpack.config.js 的方式是直接於 vue.config.js 中進行編輯,並加入 configureWebpack。
vue.config.js
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')
module.exports = {
  configureWebpack: {
    plugins: [
      new MonacoWebpackPlugin()
    ]
  }
}
接著可以在 Vue Component 中,藉由 import monaco-editor 的方式使用 Monaco,在渲染 Monaco 的時候,可以藉由物件 Options 的方式來控制 Editor 的呈現方式,例如不要顯示 minimap、default font size 等。
App.vue
<template>
  <div id="app">
  </div>
</template>
<script>
import * as monaco from "monaco-editor";
export default {
  name: "App",
  mounted() {
    monaco.editor.create(document.getElementById("app"), {
      value: '',
      language: "javascript",
      theme: 'vs-dark',
      fontSize: 22,
      automaticLayout: true,
      minimap: {
        enabled: false
      }
    });
  }
};
</script>
<style>
html, body{
  margin: 0;
  padding: 0;
}
#app {
  font-family: consolas, Avenir, Helvetica, Arial, sans-serif;
  height: 100vh;
  overflow: hidden;
}
</style>
後續實作
提示常用快捷鍵 (Ctrl + D, Alt + Shift + I)
部署至 GitHub 並設定 DNS Alias editor.sdwh.dev