docs: function visitDefine(traverse, node, path, state) {
  
          // 获取 define 语句中的最后一个参数，一般为 factory
          var factory = node.arguments[node.arguments.length - 1];
          var deps;
          var elements;
  
          utils.catchup(node.range[0], state);
  
          // 如果是 factory function
          if (factory.type === Syntax.FunctionExpression) {
              var body = factory.body.body;
              deps = node.arguments[node.arguments.length - 2];
  
              if (deps && deps.type === Syntax.ArrayExpression) {
                  elements = deps.elements;
                  var params = factory.params;
  
                  elements.forEach(function (element, index) {
                      if (params[index]) {
                          utils.append('var ', state);
                          utils.move(params[index].range[0], state);
                          utils.catchup(params[index].range[1], state);
                          utils.append(' = ', state);
                      }
  
                      utils.append('require(', state);
                      utils.move(element.range[0], state);
                      utils.catchup(element.range[1], state);
                      utils.append(');\n', state);
                  });
              }
  
              utils.move(body[0].range[0], state);
              path.unshift(node);
              body.forEach(function (node) {
                  utils.catchup(node.range[0], state);
                  path.unshift(node);
                  traverse(node, path, state);
                  path.shift();
              });
              path.shift();
              utils.move(node.range[1], state);
          }
  
          // 如果最后一个参数是对象。
          else if (factory.type === Syntax.ObjectExpression
              || factory.type === Syntax.Literal) {
              utils.append('module.exports = ', state);
              utils.move(factory.range[0], state);
              utils.catchup(factory.range[1], state);
              utils.move(node.range[1], state);
          }
  
          // 如果最后一个参数是变量
          else if (factory.type === Syntax.Identifier) {
              utils.append('module.exports = typeof ' + factory.name, state);
              utils.append(' === \'function\' ? ', state);
  
              utils.append(factory.name + '(', state);
  
              deps = node.arguments[node.arguments.length - 2];
              if (deps && deps.type === Syntax.ArrayExpression) {
                  elements = deps.elements;
  
                  utils.append(elements.map(function (element) {
                      return 'require("' + element.value + '")';
                  }).join(', '), state);
              }
  
              utils.append(')', state);
  
              utils.append(' : ', state);
              utils.move(factory.range[0], state);
              utils.catchup(factory.range[1], state);
  
  
              utils.move(node.range[1], state);
          }
  
          return false;
      }