Backbone + RequireJS" define未定义"

时间:2014-11-18 19:32:54

标签: javascript backbone.js requirejs concatenation minify

我有一个相当大的项目,我正在尝试将所有JS文件连接到一个文件中。我已经能够做到这一点,但我在实际将两个文件实现到代码中时遇到了麻烦。

我的Gruntfile有一个连接任务:

requirejs: {
            compile: {
                options: {
                    baseUrl: "<%= yeoman.app %>",
                    mainConfigFile: "<%= yeoman.app %>/config.js",
                    include: ["config"],
                    out: "<%= yeoman.app %>/dist/main.js"
                }
            }
        },

同样,这很好用。我的config.js包含项目中使用的所有库,模型,帮助器,集合和视图:

   require.config({
            paths: {
                // path configuration assumes .js suffix

                // Libraries
                'jquery': 'js/libs/jquery-1.8.2.min',
                // custom version of jQM, see comments section in library for custom change log
                'jQM': 'js/libs/jquery.mobile-1.2.0-CUSTOM',
                //'jQUI': 'js/libs/jquery-ui-1.8.24.dev.min',
                'Underscore': 'js/libs/underscore',
                'JSON2': 'js/libs/json2',
                'Backbone': 'js/libs/backbone',
        etc...
        },
        shim: {
            'jQMConfig': {
                //deps: ['jQUI'] // use jQUI as dependency if jQUI is required.  see https://github.com/jquery/jquery-mobile/issues/5119
                deps: ['jquery']
            },
            'jQM': {
                deps: ['jQMConfig']
            },
etc...
    });
require(['js/router']);

最后,在我的HTML代码中,我包含了这两个脚本:

<script type="text/javascript" src="dist/main.js"></script>
<script data-main="config" src="js/libs/require-2.1.15.min.js"></script>

这是我在控制台“定义未定义”的错误,并且仍在调用js /文件夹中的所有文件。请指出我正确的方向。

1 个答案:

答案 0 :(得分:1)

您必须先包含require.js文件,同时您可以指定data-main作为主文件。

在html中包含脚本,如下所示:

<script data-main="dist/main" src="js/libs/require.js"></script>

有关详细信息,请参阅patterns for seperating config from main module