Requirejs 如何使用r.js optimizer优化大型js应用程序+;从CDN加载诸如jquery、引导之类的库?

Requirejs 如何使用r.js optimizer优化大型js应用程序+;从CDN加载诸如jquery、引导之类的库?,requirejs,concatenation,single-page-application,minify,r.js,Requirejs,Concatenation,Single Page Application,Minify,R.js,我们已经用许多不同的库(bootstrap、gmap、momentjs等)构建了一个巨大的主干木偶应用程序。即使是在生产模式下,当我将所有内容组合成一个单一内容时,所有内容都很有魅力。为了提高性能,现在应该从CDN加载大多数库 但这似乎不像预期的那么容易。我从这个很棒的教程()开始,并添加了一个负责加载外部libs的基础结构模块 infrastructure.js define([ 'jquery' ], function($) { 'use strict'; }); main

我们已经用许多不同的库(bootstrap、gmap、momentjs等)构建了一个巨大的主干木偶应用程序。即使是在生产模式下,当我将所有内容组合成一个单一内容时,所有内容都很有魅力。为了提高性能,现在应该从CDN加载大多数库

但这似乎不像预期的那么容易。我从这个很棒的教程()开始,并添加了一个负责加载外部libs的基础结构模块

infrastructure.js

define([
    'jquery'
], function($) {
    'use strict';
});
main.js(在过去几个月里增长了一点:D)

grunt配置中包含的build.js部分

requirejs: {
  compile: {
    options: {
      mainConfigFile: 'app/scripts/main.js',
      paths: {
        jquery: 'empty:'
      },
      modules: [{
        name: 'main',
        exclude: [
          'infrastructure'
        ]
      }, {
        name: 'infrastructure'
      }],
      findNestedDependencies: true,
      preserveLicenseComments: false,
      stubModules: ['text'],
      inlineText: true,
      optimize: 'none',
      dir: '<%= build.dest %>/app/scripts/',
      wrapShim: true
    }
  }
}
我认为这个问题不会发生,因为在main.js中加载应用程序的所有其他部分和依赖库之前,应用程序需要制造模块。但main.js中的所有依赖项似乎仍在制造模块之前加载

现在我有点困惑,不知道如何继续,甚至不知道从哪里开始

有没有人已经使用CDN的libs和r.js优化过如此大小的应用程序。此外,您对连接/缩小过程+从CDN加载LIB有什么看法?它真的提高了加载性能吗


thx预先

为引导添加对JQuery的依赖性。从服务器加载JQuery时,它的加载速度足以在引导启动时可用。既然JQuery来自CDN,那么加载它需要更多的时间,并且在引导启动时不可用

requirejs: {
  compile: {
    options: {
      mainConfigFile: 'app/scripts/main.js',
      paths: {
        jquery: 'empty:'
      },
      modules: [{
        name: 'main',
        exclude: [
          'infrastructure'
        ]
      }, {
        name: 'infrastructure'
      }],
      findNestedDependencies: true,
      preserveLicenseComments: false,
      stubModules: ['text'],
      inlineText: true,
      optimize: 'none',
      dir: '<%= build.dest %>/app/scripts/',
      wrapShim: true
    }
  }
}
 Uncaught Error: Bootstrap's JavaScript requires jQuery