17

モジュールの依存関係を管理するためにRequireJSを使用して、JavaScriptを多用するページをTypeScriptを使用するように変換しようとしています。

私が抱えている問題は、TypeScriptファイル間の相互依存性だけでなく、ページが、まだAMDに変換されていないシステムの他の部分と共有されているいくつかの一般的なJavaScriptファイルにも依存していることです。

非AMDスクリプト<SCRIPT>をRequireのタグの上にある通常のタグに配置し、それらがロードされていると想定するのは非常に危険ですか?

それが悪い考えである場合、これを処理するためのより良い方法は何ですか?各スクリプトのAMDバージョンと非AMDバージョンが必要ですか?または、オプションで呼び出すようにすべてのスクリプトを変換する必要がありますdefine()か?

4

2 に答える 2

17

RequireJS の最近のバージョンでは、プレーンな JS ファイルが、実際には何も返さない AMD モジュールであるかのように見せかけることができます。

私が試した最新バージョンの 2.1.4 では、プレーンな JS ファイルをモジュールのように扱うことができます。例:

require(
    [
        'path/to/module' // <- AMD module
        ,'path/to/plainjs' // <- actually a plain JS file
    ]
    , function(module, plain){
        // module will be per define in that file.
        // plain will be 'undefined' type
    }
)

モジュールのような参照をプレーンな JS ファイルに自由に混在させることができます。それらが正しい順序でロードされている限り、更新するグローバルが更新され、必要なものが得られます。例:

require(['js/underscore'], function(){

    // nesting to insure Underscore, a prereq to BackBone
    // completes loading before backbone starts
    require(
        [
            'path/to/module' // <- AMD module
            ,'js/backbone' // <- actually a plain JS file
        ]
        , function(module){
            // module will be per define in that file.

            window.BackBone // is available for you

        }
    )

})

RequireJS では、プレーン JS ファイルの最後に「.js」を追加してプレーン JS であることを示す必要がありましたが、上記の例では「.js」を使用していないことに注意してください。この拡張子のないモジュール参照により、従うモジュール IDpathsmapsエイリアス。ID.jsはリテラルとして扱われ、変換されません。

于 2013-01-30T11:56:12.350 に答える
1

スクリプトタグに追加のスクリプトを手動で含めることができますが、これがチームにとって常に問題が発生する理由になる可能性があります(誰かが特定のスクリプトを追加するのを忘れた)。

Definitely Typeedからrequire.d.ts定義を参照しrequire、ステートメントではなく関数を直接呼び出すことimportができます。これにより、一貫性が向上する可能性があります。

于 2013-01-29T17:04:14.350 に答える