MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上

無料無料技术资料

这篇内容可直接阅读,适合用于基础学习和検索引流。

MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上

前の記事

以前の記事では、モナコでメソッドにコメントを追加する方法を説明しました。codelenまたはMarkerを使用して、変数、定数、メソッドのドキュメントを表示します。しかし、このアプローチは大規模なライブラリにはあまり適していません。例えば、Javaライブラリには何百ものメソッドがあり、怠惰なプログラマがすべてのメソッドをモナコに追加することは不可能です。そこで、この記事では、エディタのエクスペリエンスを向上させるためにTypeScript型宣言ファイルを紹介します。メソッドの詳細なドキュメントだけでなく、そのメソッドの自動補完も表示できます。

コアメソッドは1つだけです。 addExtraLib()

addExtraLib

モナコはvscodeアクセスLSP(言語サービスプロトコル)とは異なり、自動補完を大量に実装する必要があり、メソッドアノテーションは面倒ですが、monacoは型宣言の文字列を渡すaddExtraLibメソッドを追加しました。以下のような内容。

declare class Facts {
  /**
   * Returns the next fact
   */
  static next(): string
}

addExtraLibを使用してこのテキストをmonaoc言語サービスに追加すると、ユーザが書いています。Facts.next()これは自動的に行われ、nextメソッドにそのメソッドのコメントが表示されます。下の写真は

MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上插图

ts型宣言の内容を使用して言語モデルを作成した場合、次の図のようにメソッド上で具体的な宣言を見ることができます:

MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上插图1

このシナリオには、特に特定の方法に精通していないプログラマにとって、多くの利点があります。メソッド名にマウスオーバーしてドキュメントを表示できます。とてもフレンドリーで便利です。

lodashやjQueryのようなJava Scriptライブラリを使用しているとき、メソッドの完全な名前を忘れたり、メソッドの引数の順序を覚えていないことがあります。メソッドファイルが必要です。

以下では、lodashとjQueryライブラリを例にとり、Monacoに2つのライブラリを追加します。

loadashライブラリのmonacoエディタへの統合

まず、lodashのTS宣言ファイルを取得します。簡単な検索の結果、https//github.com/DefinitelyTyped/DefinitelyTypedというgitリポジトリを見つけました。
このリポジトリには、よく使うライブラリのts宣言がたくさんあります。
LodashのTSステートメントを知っています。こちらで入手できます。
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/lodash/v3/index.d.ts
図書館に注意。index.d.ts ただのシェルであり、実体は個々のサブファイルに分散されています。
上記のリンクの内容を保存します。lodash.d.ts文書の中で

次に、HTMLでfetchを使用してファイルの具体的な内容を取得し、コアコードは次のとおりです。

const monacoTypesUrl = './lodash.d.ts'
const libSource = await (await fetch(monacoTypesUrl)).text();
console.log(libSource)

var libUri = "ts:filename/lodash.d.ts";
monaco.languages.typescript.javascriptDefaults.addExtraLib(libSource, libUri);
// When resolving definitions and references, the editor will try to use created models.
// Creating a model for the library allows "peek definition/references" commands to work with the library.
monaco.editor.createModel(libSource, "typescript", monaco.Uri.parse(libUri));

これを統合したら、エディタで入力したときのパフォーマンスを見てください。lodash名前空間です。_ 時に

MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上插图2

次に、cloneDeepメソッドを呼び出します。次のように動作します。

MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上插图3

それは素晴らしいですか?

以下はjQueryライブラリの統合です。

jQueryライブラリをMonacoエディタに統合する

上記の手順に従って、まずjqueyrのts宣言ファイルを取得します。
以下のリンクから、jQuery v 2のTS宣言を入手できます。
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/jquery/v2/index.d.ts

ファイルの内容をコピーして、ローカルファイルjquery.d.tsに設定します。
変更点は monacoTypesUrl 変数は './jquery.d.ts'

jQuery Ajaxの自動補完を見てみましょう。

MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上插图4


Ajaxの参照方法

MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上插图5

これはモナコで追加ライブラリを統合する素晴らしい経験です。エディタのユーザーエクスペリエンスを大幅に向上させます。

さらに、複数のTS宣言ライブラリを同時に注入することもできますし、自動プロンプトを完了するために独自のTS宣言ライブラリを記述することもできます。

概要まとめ

エディタは非常に複雑なソフトウェア製品であり、ユーザーエクスペリエンスを向上させる機能には注意が必要です。
開発経験は、製品の成功を直接決定します。

この資料を実際のプロジェクトに活用しませんか?

ツールセンターで電文解析、CRCチェック、デバイスデバッグを行うか、要件を送信して選定と接続のアドバイスを受けましょう。

エンジニア会員

この記事を実行可能なデバッグ資料に

登録すると、高度な電文解析、資料パックのダウンロード、コード例、エンジニアリングケース、優先技術サポートが利用可能に。実際のプロジェクト納品に最適です。

高度なツール無制限
資料パックとコードパック
完全なエンジニアリングケースライブラリ
優先技術サポート窓口

发表回复

あなたのメールアドレスアドレス不会被公开。 必須項目已用 * 标注