设置RequireJS时遇到问题

时间:2015-03-21 14:01:54

标签: javascript jquery requirejs

我正在努力获得一个基本的需求JS应用程序,但我遇到了一些困难,有人可以帮忙吗?我也在使用Laravel。

包含脚本

<body>
    @yield('content')
    <script data-main="{{ asset('/js/main.js') }}" src="{{ asset('/js/require.js') }}"></script>
</body>

config.js

require.config({
    baseUrl: "",
    paths: {
        "jquery": "jquery-2.1.3.min"
    }
});

main.js

require(['config'], function() {
    define(['jquery'], function($) {

        $(document).ready(function()
        {
            alert("test");
        });

    });
});

文件夹目录结构:

/public
-- /js
-- -- jquery-2.1.3.min.js
-- -- config.js
-- -- main.js
-- -- require.js

我得到的错误是:

Uncaught Error: Mismatched anonymous define() module: function () {
        alert("test");
    }

1 个答案:

答案 0 :(得分:0)

define()包装器应该包装一个模块,而不是嵌套在任何代码块中。在您的情况下,它是require()包装器的子项。

您的main.js文件应该是配置文件。因为require.js会为依赖列表加载它作为第一个任务,以便为您的应用程序初始化并注入其他依赖项。

有两种方法可以做到这一点。

使用单独的文件(与您的方式一样)

main.js

require.config({
    baseUrl: "",
    paths: {
        "jquery": "jquery-2.1.3.min",
        "app"   : "main_module"
    },
    deps: 'app'
});

main_module.js

define(['jquery'], function($) {

    $(document).ready(function(){
        alert("test");
    });

});
 

或者将您的配置放入main.js.然后在

中编写代码
require.config({
    baseUrl: "",
    paths: {
        "jquery": "jquery-2.1.3.min"
    }
});

require(['jquery'], function($) {

    $(document).ready(function(){
        alert("test");
    });

});