JScriptInclude Gearという名前で、スクリプト/ライブラリのカスケードインポートのメカニズムである復 post後の問題に注目します。 JScriptInclude Gearを提示する以前の投稿は、現在、無私無記法で作成されていますが、以前のプレゼンテーションがjavascriptによってかなりひどく受け取られたという事実にもかかわらず、現在は完全に無関係です。本質の誤解、すなわち
JScript(WSH)!= JavaScript(ブラウザ) 。これに関連して、 JScriptInclude Gearは松葉杖、自転車、「すでに」、「店内」などのランクに昇格しました。
私はその決定を本当に共有したかったのですが、それを「美味しく」理解できるようにする方法がわかりませんでしたが、今は成功しているように思えます。
それにもかかわらず、「詐欺的」ビジネスは動き、人々はそれを書き、人々はそれを使い、人々はそれを好む。 先週、私は多くのフィードバックを受け取りました。それは私が自分の決定に取り組むことを奨励しました。その結果、認識を超えて変換されました。 火のライン上で私と一緒に出てきたみんなに感謝します。
スピーチの内容がわからない人のために-魅力的な小さな紹介:
JScriptInclude Gearは、Windowsオペレーティングシステムファミリの環境でWSH(Windows Script Host)テクノロジによって解釈されるJScriptで記述された自動化スクリプトで使用するために設計されたカスケードスクリプト/ライブラリインポートメカニズムです。 さらに、スクリプトを基本モジュールの形式で整理する機能、構成ファイルでの定義のサポート、およびエイリアスなどによる後続の呼び出しなどをサポートします:)
以前の投稿で既にJScriptInclude Gearについて読んだことがある人は、残りのネガティブにもかかわらず、多分、私はあなたにとどまるように頼みました、そして、ほとんどすべてが変わったので、何か面白いことがあることを保証します: 2行のコードでスクリプトに接続します。SFXパッケージは 、コンポーネントの自動登録と必要なパスの自動構成を使用してシステムにメカニズムをインストールするために準備されています。ドキュメントは「from and to」にやり直され、現在はHTMLで表示されています。 「タンバリンと踊る」、そして楽しいボーナスとして、ドキュメントに記載されているいくつかの有用なモジュールを提示します(それでも使用例であり、「ふりをしない」)、そしてコード自体は自然に「podvaliz」です実際にそれを使用しないでください。
気になる人のために、 GitHubにようこそ:
JScriptInclude GearメカニズムのSFXインストールパッケージ。
(不名誉とは無関係:))
JScriptInclude Gear メカニズム
(最後のコミットに関する追加のコメント、またはヘルプの展開-セクションjsImport Object inset "Attention !!!")
それでも、少なくともJScriptInclude Gear Featuresのポイントまでは、残りの「多くのbukaf」を読んでください。
慈悲に興味のある人は、habrakatをお願いします...
JScriptInclude Gearの目的:
まず、スクリプト/ライブラリを接続するための技術の不足を補います。 Windows Scriptingテクノロジーは、特定のWSFファイル(Windows Script File)の XML形式でコードをラップすることにより、この問題を部分的に解決することを提供しますが、その使用は「 カスケード接続 」を許可しません。 この状況に関連して、独自の依存関係を持つライブラリの構造を形成することは不可能です。 このソリューションでは、 カスケードインポートを提供することにより、この問題を克服することができます。
カスケードインポートは、特別な注目に値する機会です-その原理は、Node.JSテクノロジから著者によって借用されました。 このモデルでは、多くのJavaScriptコードファイルがモジュールの柔軟で簡潔な構造とそれらの相互依存関係を構成しています。
Node.JSでは、このようなメカニズムはテクノロジのコアによって提供され、 JScriptInclude Gearの場合は制御も提供します。メカニズムは当然のことながら模倣であり、 JScript言語といくつかの関連テクノロジを使用して実装されます。
JScriptInclude Gearの実装:
JScriptInclude Gearの最初のエディションと比較すると、ターゲットスクリプトの先頭にメカニズムコードを配置することをユーザーに提供しましたが、これは110行以上のコードであり、このエディションでは、著者はWindows Script Componentsテクノロジを使用してこの不便を克服しました。形式、スクリプトはCOMコンポーネントとして登録します 。 したがって、著者はJScriptInclude.wscコンポーネントを準備しました 。その主な目的は、メカニズムのソースコードをエクスポートすることです。
作成者は、パスの手動設定の必要性に関連する不便さを考慮し、特別なSFXパッケージを準備することでこの状況を克服しました。メカニズムのソースコード内のパス。
インポートされたコードを初期化するために
PS: JScript(WSH)= JavaScript(ブラウザ)であるということをもう一度思い出させてください。どちらもECMA 262標準の実装ですが、まったく異なる環境に存在します。
WSHにはウィンドウがなく、 DOMはありません。また、それらのようなスクリプトタグなどがあります 。
ターゲットシステム上のJScriptスクリプトのいずれかにスクリプトを正常にインストールした後、 JScriptInclude Gearカスケードインポートメカニズムを接続し、そのベースモジュールのシステムに次のようにアクセスできます。
jsIncludeGear = new ActiveXObject("JScriptIncludeGear"); eval(jsIncludeGear.getSourceCode());
著者が前述したコンポーネントは、 getSourceCode()メソッドを呼び出し、その実行結果をeval()で初期化することにより、メカニズム自体のソースコードをエクスポートすることのみを目的としています。グローバルjsImportオブジェクトには、メインメカニズム機能が実装されているプロパティとメソッドを通じてアクセスできます 。
たとえば、メインのインポート/依存関係宣言命令:
jsImport.require(targetScript)
jsImprotオブジェクト、そのメソッド、およびプロパティは、JScriptInculde Gearメカニズムとともに提供されるリファレンスマニュアルの別のセクションで説明されています。 ( SFXパッケージから正常にインストールされた後、それをよく理解するように求められ、その場所がメッセージで表示されます)
また、 JSciprInclude Gearメカニズムのターゲットインストールディレクトリには\\ example \\ディレクトリがあり、その中のTestDirディレクトリには、このメカニズムの使用例であるJScriptExample.jsファイルがあります。これは、著者によって提案された主な機能と概念を示しています。 ( SFXパッケージからのインストールが成功すると、実行するように求められ、サンプルを含むディレクトリがエクスプローラーで開きます)
インポート手順の最後の手順は、ダウンロードしたコードを次のように初期化することです。
eval(jsImport.initialization());
JScriptInclude Gearの機能:
1) 任意のスクリプトの接続 -機会はシンプルなデザインによって提供されます
jsImport.require(targetScript)
別のスクリプトを実行可能ファイルに接続する、コードを実行する、またはその中で宣言されているエンティティにアクセスする。
これにより、既存のベストプラクティスとターンキーソリューションを作業で再利用できます。
2) カスケードインポート -スクリプト/ライブラリを接続することができます。これは、他のスクリプト/ライブラリを接続する必要性を示すこともできます(著者は将来、この「 依存関係 」と呼ぶことを提案し、それらの接続の事実は「 依存関係の実装 」です)
プラグインスクリプト/モジュールの依存関係の指定は、コードに同じ接続命令を含めることで実装されます。
jsImport.require(targetScript)
、つまり 彼ら自身が関係していたものと同じ挑戦。
一般に、接続はインポートプロシージャの下方再帰呼び出しの原則に基づいて発生します。 このメカニズムでは、依存関係の決定に絶対パスと相対パスを使用できます。 依存関係を宣言するときの相対パスは、この依存関係が宣言されているスクリプトの場所に基づいて考慮されることを強調する価値があります。 プラグインスクリプト内- イニシエータースクリプト(メカニズムが宣言され、カスケード内の最初のインポートが実行されるスクリプト)に対してではなく、 このプラグインスクリプト自体に対して相対的です。
3)接続の特異性 -このメカニズムは、インポートプロセス中に、すでに接続されているファイルを監視し、同じスクリプト/ライブラリへのリンクがカスケードブランチパスに沿った多くの依存関係に存在する場合でも、それらの再初期化を許可しません。
4)標準モジュールのモデルの提供 -このメカニズムは、スクリプト/ライブラリが標準化またはユニバーサルであり、システムに存在すると想定される場合に、基本モジュールの構造を整理するためのツールを提供します。 これを行うために、 JScriptInclude Gearはエイリアスによってそれらを記述するベースモジュールの構成ファイルを使用します。これにより、後でメカニズムを接続するスクリプトはすべてのベースモジュールを使用できます。 ツールには、新しいモジュールを定義し、既存のモジュールを再定義し、ユーザー構成をロードする方法が含まれています。
特別な指示で新しいモジュールを定義します。 接続カスケードの場合、カスケードの下部全体で宣言されたモジュールを使用することと、後続のすべてのインポート手順で使用することができます。
jsImport.defineBaseModule(moduleName, modulePath)
、構成ファイル自体は「 jsModulesConfig.js 」です。デフォルトでは、 JScriptInclude Gearインストールのルートディレクトリにあります。インストール中、基本配信のモジュールは自動的に検出されます。 モジュールを追加/変更/交換する必要がある場合、次のことができます。
-基本構成ファイルを編集します。これは推奨されません。 たとえば、更新の場合、このファイルはおそらく変更されます。
-カスタム構成ファイルを使用し、コードの実行中に特別な指示でそれらを接続します。
jsImport.getConfig(ConfigFilePath)
警告ユーザー設定ファイルで宣言されたモジュールは、エイリアスが基本設定で宣言されたモジュールのエイリアスと一致する場合、それらに優先して重複します。
5)デバッグまたは再利用のためのインポートされたコードのキャッシング -このメカニズムを開発する過程で、インポートされたコードのデバッグに関する質問が繰り返し発生しました。 eval()を介して初期化されるため、ロードされたコードで正しいエラーメッセージを取得することはできません。例外の原因となったコード行へのリンクは、スクリプトに関して有益ではありません。 この問題を解決するために、インポートされたコードのキャッシュが提供されます。 別のスクリプトファイルCacheFile.jsに書き込むことによる具体化 。 記録の必要性は、特別なプロパティを設定することにより決定されます。
jsImport.WriteCache = true
後で、その起動を通じて、正しいエラーメッセージを取得することが可能です。
PS:キャッシュファイルは、コンパイル済みソリューションとして使用できます。 後で新しいインポート手順の代わりにそれを使用します。その場合、JSScriptInclude Gearを使用する目的は明確ではありませんが、少なくとも複数のファイルからのコードのアセンブリを単純化する方法では、そのようなソリューションが役立つかもしれません。
それ以外は、添付のドキュメントにある、もう少し詳細なharazhiteliです。
そしてもう一度...はい、お願いします!
JScriptInclude GearメカニズムのSFXインストールパッケージ。
(不名誉とは無関係)
JScriptInclude Gear メカニズム
(最後のコミットに関する追加のコメント、またはヘルプの展開-セクションjsImport Object inset "Attention !!!")
UPD:一部のユーザーの場合、SFXパッケージはコンポーネントを登録しません。
SFXは少しやり直されましたが、今では機能しているように見えますが、これはすべての人に当てはまるわけではありませんが、x64などで問題が観察されています。
インストール後にサンプルをすぐに開始できなかった場合、 JScriptInclude.wscを手動で登録し、
または、 AfterInstall.jsスクリプトを自分で実行します 。