backbone.js - 在 r.js 构建 Backbone 和 Handlebars 之后,App Loader 中未定义

标签 backbone.js requirejs r.js

我有一个 r.js build 的问题在我的应用程序加载器中。

Unbuild 模式运行完美,但在使用 r.js 构建后,app_loader.js#L7 中的变量bb 和 hb 未定义。到目前为止,我通过使用全局变量 Handlebars 和 Backbone 来解决这个问题,但是这有什么问题 shim

最佳答案

我已经删除了您的全局引用并在本地进行了测试。它有效。

build.js - 更新为使用 app_main 作为配置文件

({
    optimizeCss: "standard",
    removeCombined: true,
    preserveLicenseComments: false,
    appDir: "../www-root-dev",
    dir: "../www-root",
    keepBuildDir: false,
    optimize: "uglify2",
    mainConfigFile: "../www-root-dev/assets/js/app_main.js",
    modules: [{
        name: "app_main"
    }]
})

app.js

define(["app_loader"], function(loader){
    var $ = loader.$, Backbone = loader.Backbone;  
    ...
});

app_loader.js

define(["jquery","underscore","backbone","handlebars","app_routes"],
function($, _, Backbone, Handlebars, router){ 
    return {
        $: $.noConflict(),
        _: _,
        Backbone: Backbone,
        router: router,
        Handlebars: Handlebars
    };
});

app_main.js - 已更新以简化路径

require.config({
    baseUrl: './assets/js',
    paths: {
        mvc: '../../mvc'
    },
    shim: {
        underscore: {
            exports: '_' //the exported symbol
        },
        backbone : {
            deps: ['underscore', 'jquery'],
            exports: 'Backbone' 
        },
        handlebars: {
            deps: ['jquery'],
            exports: 'Handlebars'
        }
    }
});

require(['app'], function(App){  
    App.initialize(); 
});

app_routes.js

define(["jquery", "underscore", "backbone", "mvc/demo.view.js", "mvc/demo.model.js"], function($, _, Backbone, DemoView, DemoModel) { ... });

demo.model.js

define(["backbone"], function(Backbone) { ... });

demo.view.js

define(["jquery","backbone","text!mvc/demo.html"], function($, Backbone,demoTemplate) { ... });

关于backbone.js - 在 r.js 构建 Backbone 和 Handlebars 之后,App Loader 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17132440/

相关文章:

javascript - 主干集合获取渲染在第一次加载时使用路由器运行两次

typescript - 如何使用 Requirejs 在 Typescript 中使用模块/类

angularjs - 使用 grunt 和 r.js/requirejs 手动引导

javascript - 如何: Get Durandal (or Backbone) router history and pass to window.一些全局变量?

javascript - Backbone.js目录结构

javascript - r.js, almond : Is it possible for two . 包含杏仁共享依赖的js文件?

requirejs - 如何使用 yeoman Gruntfile.js 将 requirejs 替换为 almondjs?

javascript - RequireJS 优化器前置

javascript - 如何在 CommonJS 模块配置中设置 Backbone.$?