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 入門 - SQL 実行プロセス

目次1. プロセス2. コアアーキテクチャ2.1 サーバー層の基本コンポーネントの紹介3. ステート...

WeChatアプレットが複数行テキストのスクロール効果を実現

この記事の例では、WeChatアプレットで複数行のテキストスクロールを実装するための具体的なコードを...

Vue を使用して CSS トランジションとアニメーションを実装する方法

目次1. トランジションとアニメーションの違い2. Vueを使用して基本的なCSSトランジションとア...

MySql のグループ化と各グループからランダムに 1 つのデータを取得する

アイデア: 最初にランダムに並べ替えてからグループ化します。 1. テーブルを作成します。 テーブル...

HTML/CSS の基礎 - HTML コード記述におけるいくつかの注意事項 (必読)

この記事の警告事項は、ブラウザの互換性とはまったく関係ありません。主に、プロジェクトで遭遇したいくつ...

VMware+centOS 8 で http プロトコルに基づく Git サービスを構築する方法

目次1. 原因2. デバイス情報3. 準備4. Apacheをインストールする5. gitを設定する...

IE6/7 は混乱するだろう: 空のテキスト ノードの高さの問題

序文: ietester でドキュメント コードを表示するには、debugbar を使用します。すべ...

JS の querySelector メソッドと getElementById メソッドの違い

目次1. 概要1.1 querySelector() と querySelectorAll() の使...

MySQL ステートメントを使用した簡単な追加、削除、変更、クエリ操作の例

この記事では、例を使用して、MySQL ステートメントを使用して、単純な追加、削除、変更、およびクエ...

LinuxにKafkaをインストールする

目次1.1 前提条件としてのJava環境1.2 Zookeeperのインストールと設定1.3 Kaf...

MySQL の左結合操作における on 条件と where 条件の違いの紹介

優先度両方のケースで同じ条件を設定すると、異なる結果セットが生成される可能性があるのは、優先順位のた...

クリエイティブな会社概要ウェブページデザイン

ユニークな「About」ページ自分を他の人たちと差別化する素晴らしい方法は、本当にユニークな自己紹介...

React Nativeはモニタリングジェスチャーの上下プル効果を実現します

React Native は、プルアップとプルダウンの監視ジェスチャを実装します。詳細なコアコードは...

MySQL CHARとVARCHARの保存と読み取りの違い

導入保存時と読み取り時に CHAR 型と VARCHAR 型の違いを本当にご存知ですか?まずいくつか...

MySqlのインストールとログインの詳細な説明

LinuxにMySQLがすでにインストールされているかどうかを確認する sudo service m...