Vueはソースコード付きのリファレンスライブラリのメソッドを使用します

Vueはソースコード付きのリファレンスライブラリのメソッドを使用します

monaco-editor-vueの公式ソースコードは次のとおりです。

インデックス

'monaco-editor/esm/vs/editor/editor.api' から * を monaco としてインポートします。

関数noop() { }

エクスポート { モナコ };

エクスポートデフォルト{
  名前: 'MonacoEditor'、
  小道具: {
    diffEditor: { type: Boolean, default: false }, // diff モードを使用するかどうか width: { type: [String, Number], default: '100%' },
    高さ: {タイプ: [文字列、数値]、デフォルト: '100%'},
    オリジナル: 文字列, // 差分モードでのみ有効 値: 文字列,
    言語: {タイプ: 文字列、デフォルト: 'javascript'},
    テーマ: {タイプ: 文字列、デフォルト: 'vs'},
    オプション: {type: Object, default() {return {};}},
    editorMounted: {タイプ: Function、デフォルト: noop},
    editorBeforeMount: {タイプ: 関数、デフォルト: noop}
  },

  時計:
    オプション:
      深い:本当、
      ハンドラ(オプション) {
        this.editor && this.editor.updateOptions(オプション);
      }
    },

    価値() {
      this.editor && this.value !== this._getValue() && this._setValue(this.value);
    },

    言語() {
      if(!this.editor) 戻り値:
      if(this.diffEditor){ // diffモードで言語を更新
        const { オリジナル、変更済み } = this.editor.getModel();
        monaco.editor.setModelLanguage(オリジナル、this.language);
        monaco.editor.setModelLanguage(変更済み、this.language);
      }それ以外
        モデル言語を設定します。
    },

    テーマ() {
      this.editor && monaco.editor.setTheme(this.theme);
    },

    スタイル() {
      this.editor && this.$nextTick(() => {
        エディタのレイアウトをカスタマイズします。
      });
    }
  },

  計算: {
    スタイル() {
      戻る {
        幅: !/^\d+$/.test(this.width) ? this.width: `${this.width}px`,
        高さ: !/^\d+$/.test(this.height) ? this.height: `${this.height}px`
      }
    }
  },

  マウントされた(){
    これは、Monaco を初期化します。
  },

  破棄する前に() {
    this.editor と this.editor.dispose();
  },

  レンダリング (h) {
    戻る (
      <div class="monaco_editor_container" style={this.style}></div>
    );
  },

  メソッド: {
    initMonaco() {
      const { 値、言語、テーマ、オプション } = this;
      Object.assign(options, this._editorBeforeMount()); //エディターの初期化前 this.editor = monaco.editor[this.diffEditor ? 'createDiffEditor' : 'create'](this.$el, {
        値: 値、
        言語: 言語、
        テーマ: テーマ、
        ...オプション
      });
      this.diffEditor && this._setModel(this.value, this.original);
      this._editorMounted(this.editor); //エディターが初期化された後},

    _getEditor() {
      if(!this.editor) は null を返します。
      this.diffEditor を返します。this.editor.modifiedEditor : this.editor;
    },

    _setModel(value, original) { //diffモードでモデルを設定する
      const { 言語 } = this;
      元のモデルを monaco.editor.createModel(元のモデル、言語);
      定数 modifiedModel = monaco.editor.createModel(値、言語);
      this.editor.setModel({
        オリジナル: オリジナルモデル、
        変更: modifiedModel
      });
    },

    _setValue(値) {
      エディターを this._getEditor() にします。
      if(editor) は editor.setValue(value) を返します。
    },

    _getValue() {
      エディターを this._getEditor() にします。
      if(!editor) '' を返します。
      editor.getValue() を返します。
    },

    _editorBeforeMount() {
      const オプション = this.editorBeforeMount(monaco);
      オプションを返します || {};
    },

    _editorMounted(エディター) {
      this.editorMounted(エディター、モナコ);
      if(this.diffEditor){
        editor.onDidUpdateDiff((イベント) => {
          定数値 = this._getValue();
          this._emitChange(値、イベント);
        });
      }それ以外{
        editor.onDidChangeModelContent(イベント => {
          定数値 = this._getValue();
          this._emitChange(値、イベント);
        });
      }
    },

    _emitChange(値、イベント) {
      this.$emit('change', 値, イベント);
      this.$emit('入力', 値);
    }
  }
}

Vue を使用する場合、上記ライブラリの_getValueメソッドをどのように使用すればよいでしょうか?

ref = "" を定義し、 this.$refs.exampleEditor._setValue('')を使用します。

次のコードを参照してください

テスト

<テンプレート>
  <div>
    <MonacoEditor ref="exampleEditor" width="100%" height="300" theme="vs-dark" language="javascript" :options="options" @change="codeInput" />
  </div>
</テンプレート>
<スクリプト>
'monaco-editor-vue' から MonacoEditor をインポートします。
エクスポートデフォルト{
  コンポーネント:
    モナコ編集者
  },
  データ() {
    戻る {
    }
  },
  作成前() {
  },

  マウント() {
  },
  メソッド: {
    this.$refs.exampleEditor._setValue('')
  }
}

これで、ソースコード付きのリファレンスライブラリのメソッドを使用した vue に関するこの記事は終了です。リファレンスライブラリを使用した vue の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue でフォントを変更し、オンライン フォント ライブラリを参照せずにローカルにフォントを保存する方法
  • vue2.0 で element-ui コンポーネント ライブラリを参照する方法

<<:  Redmine の Docker インストール手順

>>:  DQL コマンドを使用して MySQL でデータをクエリする方法

推薦する

VueはElementUIのフォームサンプルコードを模倣する

実装要件ElementUI を模倣したフォームは、インデックス コンポーネント、Form フォーム ...

React NativeのScrollViewプルダウンリフレッシュ効果

この記事では、React Native ScrollViewのプルダウンリフレッシュ効果の具体的なコ...

MYSQLでリモートアクセス権限を有効にする方法

1. MySQLデータベースにログインするmysql -u ルート -pユーザーテーブルを表示する ...

Vue+Elementでページング効果を実現

この記事の例では、ページング効果を実現するためのvue+Elementの具体的なコードを参考までに共...

html+vue+element-ui のスムーズさを 1 分で体験

テクノロジーファンHTMLウェブページ、知っておくべきYouyou が開発した vue フロントエン...

Docker プルタイムアウトの解決策

最近、Docker イメージのプルが非常に不安定です。遅く、タイムアウトすることがよくあります。 x...

JS addEventListener() およびattachEvent() メソッドは登録イベントを実装します

JavaScript の DOM イベント モデルでは、オブジェクトの addEventListen...

Vite と Vue CLI の長所と短所

Vue エコシステムには Vite と呼ばれる新しいビルド ツールがあり、Vue CLI よりも 1...

MySQL データベース インデックスが B+ ツリーの使用を選択するのはなぜですか?

MySQL データベース インデックスが B+ ツリーを使用する理由をさらに分析する前に、データ構...

div が隠しテキストを超え、div 部分の向こうの CSS コードを隠します

隠れる前に:隠れた後: CS: ...コードをコピーコードは次のとおりです。オーバーフロー:非表示;...

Linux で実行中のバックグラウンド プログラムを表示および終了する方法

Linux タスク管理 - バックグラウンド実行と終了fg、bg、ジョブ、&、ctrl + ...

HTML 左、中央、右の適応レイアウト (calc css 式を使用)

最新の HTML 標準には、レイアウトを計算するために使用できる calc CSS 式があります。し...

MySQLの誤操作後にbinlog2sqlを使用して素早くロールバックする方法の詳細な説明

序文日常の仕事や勉強では、データベースを操作するときに「不注意」によるミスを犯すことは避けられません...

MySQLがサブクエリと結合の使用を推奨しない理由

ページ分割されたクエリを実行するには: 1. MySQL の場合、サブクエリと結合の使用は推奨されま...

電子メールの HTML ページを作成するための原則の概要

HTML メールはこのサイト上の独立したホスト ページではないため、他の誰かによってホストされていま...