単一の縮小ファイルを作成する最善の方法を決定しようとしていますが、古いブラウザーもある程度サポートしています。IE9 以下で動作しない多数のサードパーティ ライブラリを使用している大規模な Web アプリケーションがあります。理想的には、少なくともこれらのブラウザーを検出し、ユーザーにサブビューを表示してアップグレードを求めるまで、これらのブラウザーをサポートしたいと考えています。私のRequireJSフローは次のとおりです。
HTML には、ロード チェーンの最初のリンク (設定ファイル)、または縮小されたペイロード (実稼働サーバーの場合) のいずれかを出力するバックエンドの条件付きステートメントがあります。
<?php
if (env('APP_ENV') === 'dev') {
echo $this->Html->script('libs/requirejs/require', ['data-main' => '/js/src/config.r']);
} else {
echo $this->Html->script('build.min');
}
?>
config.r.js
次のようになります。
require.config({
baseUrl: '/js',
deps: ['src/boot'],
paths: {
'requireJS': '../bower_components/requirejs/require',
'requireDomReady': '../bower_components/requirejs-domready/domReady',
'handlebars': '../bower_components/handlebars/handlebars.runtime.min',
'templates': 'src/templates',
'jquery': '../bower_components/jquery/dist/jquery.min',
'backbone': '../bower_components/backbone/backbone',
'underscore': '../bower_components/underscore/underscore',
},
shim: {
'handlebars': {
exports: 'Handlebars'
},
'underscore': {
exports: '_'
},
'backbone': {
deps: ['handlebars', 'underscore'],
exports: 'Backbone'
}
}
});
boot.js
次のようになります。
define([
'requireDomReady',
'src/utils/userAgent'
], function(
requireDomReady,
userAgent
) {
'use strict';
// If we have detected that this browser isnt supported, show the appropriate screen.
if (userAgent.isIE9 || userAgent.isIE8) {
var upgradeScreen = document.getElementById('upgrade-screen');
upgradeScreen.style.display = 'block';
return;
}
// With the inital check of support being completed, load the main app.
require([
'src/app'
], function(
app
) {
requireDomReady(app);
});
});
最小化されたペイロードは、基本的に と、そのすべてのサードパーティ ライブラリをマージしconfig.r.js
ます。縮小されたペイロードがすべてのライブラリを含む本番環境で提供されるときはいつでも、それらが存在するだけで IE9 以下の insta-error になる insta-parse されます。boot.js
app.js
縮小されたファイルまたは緩い個々のファイルのいずれかをロードしながら、このboot
シーケンスがシーケンスから分離されるように、これを分割するにはどうすればよいですか? app
私がハングアップしている部分は、これを行う方法ですが、config.r.js、または環境に応じて縮小されたスクリプト ファイルのいずれかを要求するように依頼することです。
任意のガイダンスをいただければ幸いです。エラーを取り除き、アップグレード ビューを表示するためだけに、ライブラリをダウングレードしたり、ポリフィルを追加したりする必要はありません。