1

私は、RequireJS 最適化ツールを使用して、JavaScript モジュールだけでなく、「テキスト」も含めるかどうか (可能であればどのように使用するか) を理解しようとしています。モジュール。「テキスト!」を使ったデュランダルアプリを作っています。ビューのモジュール。

ビューを読み込もうとしてタイムアウトになるユーザーがいることがあります。エラーの例を次に示します。

Error: Load timeout for modules: text!views/primaryapplicants.html
http://requirejs.org/docs/errors.html#timeout

その timeout の処理について投稿したばかりの別の質問があります。インターセプトして再試行する方法がわかりません。モジュール定義が有効であることはわかっていますが、それは、特に携帯電話を使用している場合に、ネットワーク接続の問題が発生している可能性があるということです。

しかし、これについて考え続けていると、アプリ全体を 1 つのファイルに単純にパッケージ化できれば、余分な HTTP 呼び出しを回避できることがわかりました。これにより、このようなタイムアウトが削減される可能性があります。これは、「部分的に」読み込まれる可能性ではなく、アプリが読み込まれるか、読み込まれないことを意味します。

このアプリには多数のビューがありません。すべてのビューを追加すると、gzip 圧縮で約 20kb 追加されると推定されます。

では、これらの「テキスト」をパッケージ化することは可能ですか? どういうわけかモジュールアップ?

4

2 に答える 2

1

Durandal のオプティマイザである weyland を試してみてください。weyland-config.js 構成の例は、HTML StarterKit にあります。

https://github.com/BlueSpire/Durandal/blob/master/platforms/HTML/StarterKit/weyland-config.js

exports.config = function(weyland) {
    weyland.build('main')
        .task.jshint({
            include:'app/**/*.js'
        })
        .task.uglifyjs({
            include:['app/**/*.js', 'lib/durandal/**/*.js']
        })
        .task.rjs({
            include:['app/**/*.{js,html}', 'lib/durandal/**/*.js'],
            loaderPluginExtensionMaps:{
                '.html':'text'
            },
            rjs:{
                name:'../lib/require/almond-custom', //to deploy with require.js, use the build's name here instead
                insertRequire:['main'], //not needed for require
                baseUrl : 'app',
                wrap:true, //not needed for require
                paths : {
                    'text': '../lib/require/text',
                    'durandal':'../lib/durandal/js',
                    'plugins' : '../lib/durandal/js/plugins',
                    'transitions' : '../lib/durandal/js/transitions',
                    'knockout': '../lib/knockout/knockout-2.3.0',
                    'bootstrap': '../lib/bootstrap/js/bootstrap',
                    'jquery': '../lib/jquery/jquery-1.9.1'
                },
                inlineText: true,
                optimize : 'none',
                pragmas: {
                    build: true
                },
                stubModules : ['text'],
                keepBuildDir: true,
                out:'app/main-built.js'
            }
        });
}
于 2013-10-21T12:40:48.757 に答える