Vue项目集成Monaco Editor

目录

为什么要集成Monaco Editor

开始使用

集成至页面

右键菜单增加自定义操作

最终效果

本地化i18n

安装 monaco-editor-esm-webpack-plugin

安装 monaco-editor-nls

修改 webpack.config.js

设置中文

最终效果


为什么要集成Monaco Editor

Monaco Editor是微软开源的一款网页版的vscode编辑器,风格、操作方式几乎与vscode一致,Github地址:https://github.com/microsoft/monaco-editor 。 由于项目中需要开发一个sql语句编辑器的功能,故采用monaco editor的解决方案。

开始使用

安装monaco-editor

npm install monaco-editor --save

集成至页面

页面上添加一个div:

<div id="monaco-editor">
</div>

初始化monaco编辑器

import * as monaco from 'monaco-editor'

this.editor = monaco.editor.create(document.getElementById('monoco-editor'), {
  value: '',
  language: 'sql',
  automaticLayout: true
})

按照以上操作后,页面即可集成monaco editor功能。

右键菜单增加自定义操作

需要调用addAction方法,文档:https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.istandalonecodeeditor.html#addaction ,实例代码如下:

    this.editor.addAction({
      id: 'file_formatter',
      label: '格式化文档',    // 菜单名称
      keybindings: [monaco.KeyMod.Shift | monaco.KeyMod.Alt | monaco.KeyCode.KEY_F], // 快捷键
      contextMenuGroupId: 'code_formatter',
      run: () => {
        // const content = this.editor.getValue()
        // this.editor.setValue(format(content, { indent: '    ' }))
        // TODO 添加格式化操作
      }
    })

最终效果

自定义菜单

 

本地化i18n

本地化采用monaco-editor-esm-webpack-plugin方式实现,Github地址:https://github.com/wang12124468/monaco-editor-esm-webpack-plugin 。

安装 monaco-editor-esm-webpack-plugin

npm install monaco-editor-esm-webpack-plugin --save-dev

安装 monaco-editor-nls

npm install monaco-editor-webpack-plugin monaco-editor-nls --save

修改 webpack.config.js

const MonacoWebpackPlugin = require('monaco-editor-esm-webpack-plugin');

module.exports = {
    entry: './index.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'app.js'
    },
    module: {
        rules: [
            {
                test: /\.js/,
                enforce: 'pre',
                include: /node_modules[\\\/]monaco-editor[\\\/]esm/,
                use: MonacoWebpackPlugin.loader
            },
            {
                test: /\.css$/,
                use: ['style-loader', 'css-loader']
            }
        ]
    },
    plugins: [
        new MonacoWebpackPlugin()
    ]
};

设置中文


import { setLocaleData } from 'monaco-editor-nls';
import zh_CN from 'monaco-editor-nls/locale/zh-hans';

// You must import/require after `setLocaleData`
setLocaleData(zh_CN);


import * as monaco from 'monaco-editor'

this.editor = monaco.editor.create(document.getElementById('monoco-editor'), {
  value: '',
  language: 'sql',
  automaticLayout: true
})

最终效果

 以上

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值