问题描述:
  之前使用seajs 1.x的时候,大量的使用到了如下写法:
    define(['a.js,b.js'],function(){})
    使用起来是没问题的,因为源码里的define是有考虑到的(以下摘自1.3的seajs代码片段):
    if (arguments.length === 1) {
      factory = id;
      id = '';
    }
    // define([], factory)
    else if (util.isArray(id)) {
      factory = deps;
      deps = id;
      id = '';
    }
    // parse deps
    if (!util.isArray(deps) && util.isFunction(factory)) {
      deps = parseDependencies(factory.toString());
    } 
 升级到2.0之后,之前的js全部报错了,定位到是define出了问题,2.0的define做了一些修改,如下(以下摘自2.0的seajs-debug代码片段):
 function define(id, deps, factory) {
  // define(factory)
  if (arguments.length === 1) {
    factory = id
    id = undefined
  }
	
  // Parse dependencies according to the module factory code
  if (!isArray(deps) && isFunction(factory)) {
    deps = parseDependencies(factory.toString())
  }
从代码上看,2.0之后定义define(['a.js,b.js'],function(){})这种形式的话,参数id变成了数组,deps就变成function了,导致后面解析有问题。
目前解决办法是补齐所有参数,这样OK。但是我之前项目所有js都需要更新一次。
考虑seajs升级之后应该也能兼容以前的情况,希望作者考虑一下是否增加以前对参数的判断,保证向前兼容。
或者是我理解不到位,还望作者多多指教