backbone.js require.js和r.js依赖关系

gopyfrb3  于 2022-11-10  发布在  其他
关注(0)|答案(3)|浏览(144)

我的应用程序一直运行良好,但今天我决定给予r.js一个漩涡。
现在我的树(它的一部分)看起来像

  • index.html
  • 资产
  • 日本
  • require.js
  • r.js
  • main.js
  • 零部件
  • underscore.js
  • jquery.js
  • backbone.js
  • 杰奎里伊斯
  • 模型
  • election.js
  • 集合
  • elections.js
  • 检视
  • app.js
  • election.js

在我的index.html文件中我有<script data-main="assets/js/main" src="assets/js/require.js"></script>
这是main.js

require.config({
    paths: {
        jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min',
        underscore: 'components/underscore/underscore-min',
        backbone: 'components/backbone/backbone-min',
        jqueryui: 'components/jqueryui/jquery-ui-1.10.1.custom.min'
    },

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

        'jqueryui': ['jquery']
    }

});

require(['views/app'], function(App) {

    var router = Backbone.Router.extend({
        routes: {
            '': 'root',
            'year(/:year)': 'year'
        },

        root: function() {
            new App();
        },

        year: function(year) {
            new App({
                year: year
            });
        }
    });

    r = new router();
    Backbone.history.start({
        // pushState: true
    });
});

在我的模块中,我引用了assets/js/views/election.jsassets/js/models/election.js等文件
但是当我用这个build.js运行r.js时

({
    // baseUrl: "assets/",
    paths: {
        jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min',
        underscore: 'components/underscore/underscore-min',
        backbone: "components/backbone/backbone-min",
        jqueryui: 'components/jqueryui/jquery-ui-1.10.1.custom.min'
    },
    name: "main",
    out: "main-built.js"
})

我得到了Error: ENOENT, no such file or directory '/Users/alex/Dropbox/www/animated-elections/assets/js/assets/js/collections/elections.js',我不明白为什么它会在我的路径上添加另一个assets/js

weylhg0b

weylhg0b1#

我相信require.js应该和主文件放在同一个文件夹中,即assets文件夹的旁边,而不是里面。

jtjikinw

jtjikinw2#

r.js位于您的应用程序目录中,而不是像示例设置中指定的那样作为它的同级。
我还没有测试过这个,但是r.js可能假设任何模块调用都应该与它所在的位置相关。

8yparm6h

8yparm6h3#

在build.js文件中添加此代码。

baseUrl: ".",
paths: {
    jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min',
    underscore: 'components/underscore/underscore-min',
    backbone: "components/backbone/backbone-min",
    jqueryui: 'components/jqueryui/jquery-ui-1.10.1.custom.min',
    'views/app': 'empty:',
    'views/election': 'empty:',
    //and so with others
},
name: "main",
out: "main-built.js"

祝你好运

相关问题