code: function preloadRoutes({
    path,
    exclude = []
  }, router, controllers) {
    return (file) => {
      const fileObject = nativePath.parse(file);
  
      // 只加载js和json
      if (exclude.indexOf(fileObject.name) === -1 && ['.js', '.json'].indexOf(fileObject.ext) > -1) {
        // 路由文件的绝对路径
        file = nativePath.join(path, file);
  
        // 如果文件存在
        if (fs.existsSync(file)) {
          const json = require(file);
          try {
            // [ { key: value } ] or [ { path: '', controller: '' } ]
            if (Array.isArray(json)) {
              json.forEach((n) => {
                preloadRoute(n, router, controllers);
              });
            } else if (isObjectLike(json)) { // isObject 会判断function
              // 如果配置了对象，就需要转换为数组
              preloadRoute(json, router, controllers);
            }
          } catch (e) {
            e.message = `${e.message} in File: "${file}"`;
            throw e;
          }
        }
      }
    };
  }
docs: 挂在路由集合
  @param {*} opts
  @param {koa-router|express.Router} router 路由挂在对象
  @param {Object} controllers controller集合