0

«namespaces» で編成された一連の JavaScript «modules» があります — グローバル オブジェクト (ウィンドウ) をルートとするオブジェクト階層です。

ユーティリティを使用する場合もありますがcreateNs("namespace.name")(これは YUI とまったく同じように機能しますYAHOO.namespace)、IntelliSense はありません。ReSharper もそのような問題を解決できません。

今のところ、IntelliSense を機能させる唯一の方法は、次のような非常に面倒なことを書くことです。

// module with no dependencies:
(function (window) {
    var ourCompany = window.ourCompany || (window.ourCompany = {});
    var components = ourCompany.components || (ourCompany.components = {});
    var emails = components.emails || (components.emails = {});
    emails.inbox = {
        checkNew: function () { }
    };
})(window);

// consumer:
(function (window) {
    window.ourCompany.components.emails.inbox.checkNew();
})(window);

別のオプションはjQuery.extend、常に利用できるとは限らない方法を使用することです。

// depends on jquery:
(function (window, $) {
    $.extend(true, window, {
        ourCompany: {
            components: {
                emails: {
                    inbox: {
                        checkNew: function () { }
                    }
                }
            }
        }
    });
})(window, jQuery);

共通点の解決策は何ですか?

  • 書く量を減らし、

  • インテリセンスを持っている、

  • ReSharper のリファクタリングがあり、

  • サードパーティの依存関係はありません。

出来ますか?

ありがとう!

4

1 に答える 1

0

さて、ここにあなたのオプションがあります:

  1. ユーティリティ メソッドを解決する R# プラグインを作成できます。興味があればどこを見ればいいのか教えてください。

  2. JavaScript 用の Visual Studio Intellisense の使用を試すことができます (ReSharper | オプション -> 環境 | Intellisense | 一般 -> 制限付き ReSharper IntelliSense -> JavaScript 以外のすべてを有効にします)。これは Intellisense のみに影響し、他のすべての ReSharper 機能は引き続き機能します。

  3. ReSharper 7.1 では、JS ファイルで検出されたすべての識別子を Intellisense に提供します。多分それはあなたにとって十分でしょう。

  4. 使用していない場合は/// <reference path="path-to/another-script.js" />、次のようなコードを使用して別の JS ファイル (実際にはどこにも含まれません) を作成できます。

    ourCompany.components.emails = {};

于 2012-12-08T18:38:40.260 に答える