1

わかった、彼が物だ。AMDローダーにcurl.jsを使用していますが、UNIXで実行する必要があり、Windowsで開発しているため、「cram」はあまり好きではありません。したがって、ノードにはすでにWindows用のバイナリがあるため、RequireJSライブラリのnodeJS用のr.jsアダプターが念頭にあります。

現在のバージョン(1.6.4)のjQueryは有効なAMDモジュール(バージョン1.7で提供される)ではなく、jQueryUIコンポーネントに依存関係があるため、次のように偽造する必要がありました。

curl( [js!Core/jquery.js] )
    .then( function() {
        define('jquery', function() { return jQuery; });
    })

私のアプリケーションはこれに満足しています。ただし、r.js(バージョン0.26.0)の使用は、次のエラーでこの部分で失敗します。

Tracing dependencies for: boot
function (){return jQuery}

node.js:207
    throw e; // process.nextTick error, or 'error' event on first tick
          ^
ReferenceError: jQuery is not defined
at eval at <anonymous> (r.js:7468:30)
at main (r.js:770:33)
at callDefMain (r.js:840:18)

これは私のapp.build.jsです

({
    appDir: '../',
    baseUrl: 'Scripts/',
    paths: {
        'link': '../../../Lib/@Javascript Libs/curl.js/src/curl/plugin/link.js'
    },
    dir: 'built',
    optimize: 'none',
    modules: [
        { name: 'boot' }
    ]
})

そして、ここに参照用の完全なboot.jsがあります(coffeescript):

require([
    'link!styles/main.css'
    'js!Core/jquery.js!order'
    'js!Core/underscore.js!order'
    'js!Core/backbone.js!order'
]).then ->
    define 'jquery', -> jQuery

.next(['Router/MainRouter'])
.then (MainRouter) ->
    new MainRouter()
    Backbone.history.navigate('home') unless Backbone.history.start(
        pushState: false
    )

キャッチができるヒントを事前にありがとう...

4

1 に答える 1

0

正しい。RequireJS は、そのグローバルrequirejs()(別名require()) 関数で異なる構文を使用します。RequireJs には「js!」もありません。プラグイン内蔵。構成にそのパスを含める必要がある場合があります。モジュール以外の JavaScript ファイルに RequireJS の構文を使用することもできます。

また、cram 0.2 は Rhino を使用した Windows 環境をサポートします。私たちは cram 0.2 のテストを作成しており、まもなくリリースされます。

RequireJS 構文 (js! プレフィックスを削除し、.js 拡張子を含めます):

require([
    'link!styles/main.css'
    'order!Core/jquery.js'
    'order!Core/underscore.js'
    'order!Core/backbone.js'
], function (maincss, jQuery, underscore, backbone) {
    // do something here
});
于 2011-10-03T22:55:43.660 に答える