Javascript 带主干的SPA需要.js优化器

Javascript 带主干的SPA需要.js优化器,javascript,node.js,backbone.js,requirejs,Javascript,Node.js,Backbone.js,Requirejs,我构建了一个大型主干应用程序(很多视图、模型、集合),并使用require.js加载模块。一切按预期顺利进行 现在我想将这个应用程序发布到网络上,但我想通过将所有内容压缩到一个(单个?)文件来优化网络请求。我已经阅读了Require.JS Optimizer,安装了node.JS并创建了一个构建文件。 以下是我的测试: 创建生成文件而不在模块部分-->中指定单个模块-->我将获得源应用程序的副本,并将所有js文件进行UGLYD。应用程序工作正常,但从网络请求的角度来看,似乎没有任何变化 用一个模

我构建了一个大型主干应用程序(很多视图、模型、集合),并使用require.js加载模块。一切按预期顺利进行

现在我想将这个应用程序发布到网络上,但我想通过将所有内容压缩到一个(单个?)文件来优化网络请求。我已经阅读了Require.JS Optimizer,安装了node.JS并创建了一个构建文件。 以下是我的测试:

  • 创建生成文件而不在模块部分-->中指定单个模块-->我将获得源应用程序的副本,并将所有js文件进行UGLYD。应用程序工作正常,但从网络请求的角度来看,似乎没有任何变化

  • 用一个模块创建一个构建文件(即我的main.js文件)->我获得了一个源应用程序的副本,所有的js文件都经过了uglyfied,一个巨大的新main.js文件,我想它包含了它的所有依赖项(即所有使用过的文件)。这将解决网络请求问题,但应用程序根本没有启动,开始给我奇怪的错误

  • 使用Require.JS优化器的正确方法是什么?我想是2,但你的看法如何?如果这是正确的方法,我应该找出如何解决这些错误

    谢谢

    编辑

    这是我的应用程序文件夹结构:

    app
     |
      --- scripts
             |
             --- libs
             --- collections
             --- views
             --- models
             --- main.js
      --- styles
      --- templates
      --- index.htm
    
    在“app”文件夹的同一级别,我创建了一个包含r.js和build.js的build文件夹,其内容如下:

    ({
        //Directory relativa a questo file dove si trova l'app
        appDir: '../app',
    
        //Directory relativa ad appDir di dove si trovano i moduli
        baseUrl: 'scripts',
    
        //Percorso verso il file main
        mainConfigFile: '../app/scripts/main.js',
    
        paths:
        {
            jquery: 'libs/jquery/jquery-min',
            jqueryui: 'libs/jqueryui/jquery-ui-1.10.2.min',
            underscore: 'libs/underscore/underscore-min',
            backbone: 'libs/backbone/backbone-min',
            kendo: 'libs/kendo/kendo.web.min',
            kendo_it: 'libs/kendo/amd/kendo.culture.it.min',
            relational: 'libs/relational/backbone-relational',
            nested: 'libs/nested/backbone-nested-v1.1.2.min',
            rivets: 'libs/rivets/rivets.min',
            i18n: 'libs/i18next/i18next.amd.withJQuery-1.6.3',
            jvalid: 'libs/jqueryvalidate/jquery.validate.min',
            chartjs: 'libs/chartjs/chart.min',
            toastr: 'libs/toastr/toastr.min',
            templates: '../templates'
        },
    
        //Where to save the output
        dir: '../app-build',
    
        modules:
        [
            {
                name: 'main'
            }
        ]
    
    
    })
    
    我使用以下命令启动构建过程:

    node r.js -o build.js
    
    如果我运行“compiled”main.js,我会返回以下错误:

    Uncaught Error: Mismatched anonymous define() module
    

    有什么想法吗?

    根据应用程序的要求,您可以选择

    • 将所有文件连接到单个文件中
    • 按模块连接

    将所有内容连接到单个文件对于小型应用程序来说效果很好,但无法扩展到大型应用程序。requirejs为此提供了详细的文档。如果每件事都是对的,无论你采用什么方法,那就不应该出现错误。请提供有关您所遇到错误的更多信息,这可能有助于人们正确回答您的问题

    我有一个名为app的文件夹,里面有我的应用程序。在同一级别的应用程序中,我有另一个名为build的文件夹,其中包含r.js和build.js,这是一个类似于Require.js网站上的配置文件。我在该文件中定义了appDir、baseUrl、maincigfile、dir、路径和模块参数。如果我在build文件夹中使用命令“node r.js-o build.js”启动build,几分钟后,我会有另一个文件夹,其中包含所有的应用程序和“concatenadded”main.js。如果我尝试运行该应用程序,会出现以下错误:“未捕获错误:不匹配的匿名define()模块”。这有帮助吗?