JSコードコンパイラMonacoの使い方

JSコードコンパイラMonacoの使い方

序文

私が必要としているのは、構文の強調表示、関数プロンプト、自動行折り返し、およびコードの折りたたみです。

モナコ

Monaco は Microsoft 製で、多くの言語をサポートし、サムネイル マップも備えていますが、プロンプトが使いにくい場合があり、パッケージ サイズが非常に大きくなります。
Monaco エディターは、VS Code を動かすコード エディターです。

公式サイトの使い方

[公式ドキュメント](https://microsoft.github.io/monaco-editor/index.html)
[オンライン デモ](https://github.com/Microsoft/monaco-editor-samples)
[github](https://github.com/Microsoft/monaco-editor)

インストール

yarn に monaco-editor を追加します | npm に monaco-editor をインストールします

導入

import * as monaco from 'monaco-editor' // パッケージは大きいですが、デモは実行できます // いくつかの提案機能をカスタマイズします const suggestions = [
  {
    ラベル: 'split_chinese',
    insertText: 'split_chinese(inputString,language);', // 書き込まれていない場合は表示されません。 。
    詳細:
      'inputString: 文字列を分割する必要があります\n' +
      '言語:\nCH_T:中国語(繁体字)\nCH_S:中国語(簡体字)\n HK_T:香港(繁体字)\nTW_T:台湾(繁体字)\n'
  },
  {
    ラベル: 'uuid',
    挿入テキスト: 'var uuid = uuid();',
    詳細: 'UUID を生成'
  },
  {
    ラベル: 'HashMap',
    挿入テキスト: 'var hashMap = new HashMap();',
    詳細: 'ハッシュオブジェクトの作成'
  }
]

初期化

マウント() {
    monaco.languages.registerCompletionItemProvider('JavaScript', {
      完了項目を提供する() {
        戻る {
          提案: 提案
        }
      },
      triggerCharacters: [' ', '.'] // プロンプトをトリガーする文字を記述します。複数指定できます。 })
    自分 = これ
    setTimeout(関数() {
      自己初期化()
    }, 50) //親コンポーネントがパラメータを渡さなかったため、子コンポーネントがレンダリングされました}
  
 // 初期化メソッド init(script) {
  自分 = これ
  if (スクリプト) this.code = スクリプト
  自己.$refs.container.innerHTML = ''
  var editor = monaco.editor.create(this.$refs.container, {
    値: this.code、
    言語: 'javascript',
    ミニマップ:
      有効: false
    },
    フォントサイズ: '12px',
    fixedOverflowWidgets: true // エディターのサイズを超えるウィジェットを表示するには、固定属性を使用します})
  editor.onDidChangeModelContent(関数() {
    self.$emit('update:code', editor.getValue()) //エディターのコンテンツの変更を監視し、そのコンテンツを親コンポーネントに渡すために使用されます})
}

html

<テンプレート>
  <div ref="コンテナ" class="モナコ"></div>
</テンプレート>

CS

<スタイルスコープ>
.モナコ {
  幅: 95%;
  高さ: 400px;
  境界線: 1px 実線 #dcdfe6;
  テキスト配置: 左;
  右マージン: 20px;
  境界線の半径: 4px;
}
</スタイル>

操作効果

欠点

私のはひっくり返されてしまったので、もう一度実行したくありません。コードが残っているうちにデモを書くことにします。問題なく動作します (一部の顧客からは、使いにくいという報告もありましたが、それは私の責任で、私は Monaco を使う資格がありません)。ただし、特にプロンプ​​ト機能は通常プロンプトがないため、使用するのが非常に困難です。すると、1 つのパッケージが 3.9G ほど巨大になりました (本当です)。必要に応じて導入されない場合もありますが、導入されていない場合はプロンプト機能、カスタム機能プロンプトは表示されません。 webpack の設定もあり、あれこれいじっています!

以上がJSコンパイラMonacoの使い方チュートリアルの詳しい内容です。JSコンパイラMonacoの詳細については、123WORDPRESS.COMの他の関連記事にも注目してください。

以下もご興味があるかもしれません:
  • Baiduコンパイラのjsonエラーの問題を素早く解決する
  • AngularJS HTML コンパイラの紹介
  • JSPコンパイラの基本構文の詳細な説明
  • Vueはコードのハイライトを実現するためにモナコを使用しています
  • Vue で Monaco エディターのカスタム プロンプト機能を実装する

<<:  Windows で mysql 8.0.12 をインストールするための詳細なチュートリアル

>>:  UbuntuにMySQLをインストールするときにデフォルトのパスワードを変更する詳細な手順

推薦する

MySQLシリーズ マルチテーブル結合クエリ92および99構文例詳細チュートリアル

目次1. デカルト積現象2. 接続クエリの知識ポイントのまとめ1) 結合クエリとは何ですか? 2) ...

最高の無料英語フォント33選を紹介

チャンクファイブフリータイプファミリーCuprum JAH I フリーフォントイェセヴァブークレフィ...

CSSラベル表示モードについて1つの記事で学ぶ

タグの種類(表示モード) HTML タグは、一般的にブロック タグとインライン タグの 2 種類に分...

MySQL を使用してポート 3306 を開いたり変更したり、Ubuntu/Linux 環境でアクセス許可を開く

オペレーティングシステム: Ubuntu 17.04 64ビットMySQL バージョン: MySQL...

Kafka の Docker デプロイメントと Spring Kafka 実装

この記事は主にDockerによるKafkaのデプロイとSpring Kafkaの実装について紹介しま...

crontab 実行時間とシステム時間の不一致の解決方法

序文LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | gre...

Zabbixリモートコマンド実行の詳細な例

目次1つ。環境二。予防三つ。例Zabbix トリガーがしきい値に達すると、アラート メッセージの送信...

XHTML 特殊文字コレクション

注意&#160;ノーブレークスペース = ノーブレークスペース、 iexcl ¡ &...

Centos7 でスーパーバイザ デーモンをインストールして設定する方法

初心者は自分で録音しましょう1. スーパーバイザーをインストールします。 Supervisor は ...

JavaScript における継承の 3 つの方法

継承する1. 継承とは何か継承: まず、継承とは関係、つまりクラス間の関係です。JS にはクラスはあ...

Vue+echart で 2 列チャートを実現

この記事では、vue+echart を使って二重列チャートを実現するための具体的なコードを参考までに...

linxu での Svn ワンクリック インストール シェル スクリプトの詳細な説明

#!/bin/bash #SVNをダウンロード yum -y サブバージョンをインストールします ...

複数の例で HTML フォームを使用する方法

参考までに、HTMLフォームの使い方を9つの簡単な例で分析します。具体的な内容は次のとおりです。 1...

Mac MySQL のルートパスワードをリセットするチュートリアル

免責事項:このパスワード リセット方法は、Homebrew によってインストールされた MySQL ...

Vue3.0+vite2は動的非同期コンポーネントの遅延読み込みを実装します

目次Viteプロジェクトを作成するコンポーネントの作成Viteプロジェクトを作成するパフォーマンスが...