簡體   English   中英

在r.js構建之后,在App Loader中未定義Backbone和Handlebars

[英]After r.js build Backbone and Handlebars are undefined in App Loader

我的app加載器中有一個r.js構建問題。

Unbuild模式工作正常但在使用r.js構建之后, app_loader.js#L7 bb和hb中的變量undefined 到目前為止,我通過使用全局變量Handlebars和Backbone來解決這個墊片有什么問題?

我認為這個錯誤是因為在你的墊片中你分別輸出了骨干和把手作為Backbone和Handlebars,

backbone : {
         deps: ['underscore', 'jquery'],
         exports: 'Backbone' 
       },
handlebars:{
         deps: ['jquery'],
         exports: 'Handlebars'
       },

在您的app_loader.js#L7中,您將它用作bb和hb。

在墊片中將其導出為bb和hb:

backbone : {
             deps: ['underscore', 'jquery'],
             exports: 'bb' 
           },
handlebars:{
             deps: ['jquery'],
             exports: 'hb'
           },

或者在app_loader.js#L7中使用Backbone和Handlebars而不是bb和hb:

define("app_loader",[ 
  "jquery",
    "underscore",
  "backbone",
  "handlebars",
    "order!assets/js/app_routes.js"
], function(jQuery, underscore, Backbone, Handlebars, router){ 

我也是骨干和requirejs的新手,但它應該有所幫助。

我已經分叉你的github項目並使用grunt requirejs來運行優化。

我設法運行該網站,並沒有注意到Chrome中的任何控制台錯誤。

我接受了你的項目並注意到你的構建中的錯誤。 然后,我對app_main.js文件進行了一些更改,如下所示。 如果這可以解決您的問題,請告訴我? 解決了我的問題。

// Require.js allows us to configure shortcut alias
// Their usage will become more apparent futher along in the tutorial.
require.config({

    shim: {
        underscore: {
            exports: '_' //the exported symbol
        },
        backbone : {
            deps: ['underscore', 'jquery'],
            exports: 'Backbone' 
        },
        handlebars: {
            exports: 'Handlebars'
        }

    },

    paths: {
        appLoader:  'app_loader',
        jquery:     'jquery',
        underscore: 'underscore',
        backbone :  'backbone' ,
        handlebars: 'handlebars'

    }
});

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

我刪除了您的全局引用並在本地測試了它。 有用。

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) { ... });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM