11

タイトルにあるように、私のインラインrequire呼び出しは、最適化されていないrequirejs実行では機能しますが、gruntとalmondjsでビルドした場合は機能しません。

Uncaught Error: undefined missing views/some/view

ファイルの先頭は次のようになります。

define(
['jquery', 'app'],
function($, App) {

後でビジネスロジックに基づいて、別のファイルを要求できるようにしたい

require(['views/some/view'], function(SomeView){
     console.log(SomeView);
});

別の構文も試しました。

var SomeView= require('views/some/view');

そして、これはすべて、ビルドされていないrequirejsバージョンを使用して機能します。しかし、うなり声とアーモンドでそれを構築すると、再び失敗します

    requirejs: {
        compile: {
            options: {
                name: "../components/almond/almond", 
                baseUrl: "src",
                mainConfigFile: "./require.config.js",
                include: ['main'], 
                insertRequire: ['main'], // Add a require step in at the end for the main module.
                wrap: true, // Wrap everything up in a closure
                generateSourceMaps: true, // Experimental
                preserveLicenseComments: false, // Needs turned off for generateSourceMaps
                optimize: "uglify2", // Supports generateSourceMaps
                out: "assets/javascripts/build.js"
            }
        }
    },

定義呼び出しでファイルの先頭に配置すれば、アーモンドで正常に動作させることができますが、AMDでは無駄を省くことが望ましいのではないでしょうか。

4

1 に答える 1

10

Almond のドキュメントによると、非動的な読み込みとすべてが 1 つのファイルにパッケージ化されている場合に最適です。

コンパイル オプションで "findNestedDependencies" を true に設定して、インラインの require 呼び出しがビルドの一部として含まれるようにする必要があります。

于 2013-04-30T03:17:13.057 に答える