RequireJS优化器与coffeescript

时间:2013-04-09 02:07:54

标签: javascript coffeescript requirejs

当我尝试在项目中运行节点RequireJS时,我正在运行几个问题。

这是我的文件夹结构:

-root
    -/src
        -App.coffee

    -/static
        -/vendor
            -/plugin
                -r.js
                -coffee-script.js

            -/lib
                -jquery.js

            -main.js

    -build.js

这是我的build.js文件:

({
    appDir          : './',
    baseUrl         : './static/js/',
    dir             : '../public',
    optimize        : 'uglify',
    exclude         : ['coffee-script'],
    stubModules     : ['cs'],

    paths: {

        // Libraries

        'modernizr'     : 'vendor/modernizr',
        'jquery'        : ['//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min', 'vendor/jquery'],
        'jqueryui'      : 'vendor/jquery-ui',
        'backbone'      : 'vendor/backbone',
        'underscore'    : 'vendor/underscore',

        // Plugins

        'plugin'        : 'plugin/plugin',

        // RequireJS

        'cs'            : 'plugin/cs',
        'coffee-script' : 'plugin/coffee-script'

    },
    shim: {

        'jqueryui' : ['jquery'],

        'underscore': {
            exports: '_'
        },

        'backbone': {
            deps: ['underscore', 'jquery'],
            exports: 'Backbone'
        }
    },
    modules: [{
        name: "main"
    }]
})

最后这是我的main.js文件:

require({
  baseUrl   : '../../src/',
  paths: {
    cs: '../../cs',
    'coffee-script': '../../coffee-script'
  }
}, ['cs!App']);

我总是得到与错误路径设置相关的错误,我无法弄清楚我错在哪里。

谢谢!

1 个答案:

答案 0 :(得分:0)

以下解决方案适用于我的情况。使用shim导入或手动包装的非amd模块是一个常见问题(例如this一个,带有自定义路径)。

尝试避免相对路径并使用绝对 1 路径。 从别名模块调用的依赖项将使用其当前位置来查找所需的模块。

require.config(
{
  locale: window.GIS.i18n.locale,
  deps: ['cs!modules/main'],
  paths: {
    'i18n'                       : 'i18n',
    'underscore'                 : 'libs/underscore',
    'cs'                         : 'libs/cs', // there's no '../something/else/libs/cs'
    'CoffeeScript'               : 'libs/coffeescript', // ibidem.
    'text'                       : 'libs/text',
    // ... other amd module aliases go here...
  },

  shim:{
  // ...
  }

});

define(['cs!modules/main'], function(){});

1 当然,这些不是绝对路径本身,但它们是相对于模块树的根。