2

我一直在从事一个前端脚本比以前更多的项目,我决定使用 RequireJS 来保持它的组织性。在整夜闲逛之后,我仍然遇到一些问题,其中某些依赖项似乎在事后加载。

例如,Sammy 需要 jQuery 才能工作。刷新我的应用程序会导致“Sammy,函数未定义”类型的错误。加载 jQuery 之前是否执行 Require 函数?

需要配置:

    require.config({
        paths: {
            'jquery': 'vendor/jquery.2.min',
            'sammy': 'vendor/sammy',
        },
        shim: {
            'jquery': {
                debs: [],
                exports: '$'
            },
            'sammy': {
                debs: ['jquery'],
                exports: 'Sammy'
            }
            ...

至于我的导航:

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

    return Sammy(function() {
    ...

在我大约 10% 的测试中,在点击 Sammy 功能时,应用程序会弹出以下内容:

Uncaught ReferenceError: jQuery is not defined sammy.js:2120
Uncaught TypeError: undefined is not a function 

RequireJS 的工作方式让我感到困惑。我错过了什么?

4

1 回答 1

10

您的配置中有错字,正确的属性名称将deps不是文档debs中指定的名称。

'jquery': {
    deps: [],
    exports: '$'
},
'sammy': {
    deps: ['jquery'],
    exports: 'Sammy'
}
于 2013-04-24T17:54:16.517 回答