maty(options)

主调用方法,用于创建app实例对象。

使用方式:

const maty = require('maty');

const app = maty(options);

options参数的可用配置项及作用如下:

options = {
  baseDir: process.cwd(),                // 项目根目录绝对地址,默认获取process.cwd()
  routerDir: defaultRouterDir,           // 加载路由配置的目录
  interceptorDir: defaultInterceptorDir, // 加载拦截器配置的目录
  viewDir: defaultViewDir,               // 视图模板目录
  viewExclude: ['**/include/**'],        // 排除自动渲染模板的目录,采用glob匹配规则
  apiDataCache: cache(),                 // 接口数据缓存方法,默认lru-cache实现
  apiDataName(apiUrl) {},                // 接口数据名方法,默认为获取api地址最后一个/后面的单词名
  handleAPI: apiUrl => apiUrl,           // router.api地址预处理方法,默认返回自身
  ajaxCache: true,                       // 是否允许缓存ajax响应结果,默认允许缓存
  uploadDir: defaultUploadDir            // 文件上传默认存储目录
}

baseDir [:String]

项目根目录,默认从启动目录获取,baseDir决定了路由、拦截器、视图模板、文件上传目录的默认值。

const defaultRouterDir = `${baseDir}/routers`;
const defaultInterceptorDir = `${baseDir}/interceptors`;
const defaultViewDir = `${baseDir}/views`;
const defaultUploadDir = `${baseDir}/uploads`;

同时又可以单独设置routers、interceptors、views、uploads的所在目录,单独设置时忽略baseDir的作用。

viewExclude [:String]

maty支持无匹配路由配置的情况下,自动获取和请求路径相同的视图模板文件来渲染,而viewExclude用于设置排除规则(具体规则参见glob文档),符合规则的模板文件不会被自动渲染,用于保护一些模块文件或私有文件等

apiDataCache [:Object]

设置后端api返回的数据缓存对象,采用 lru-cache 的实现规范。比如需要使用Redit等自行管理缓存的,可以自定义该对象。

apiDataCache至少有get, set两个方法:

set(key, value, maxAge)
get(key) => value

apiDataName(apiUrl) [:Function]

获取api返回数据的名称,例如一个路由配置如下:

'/comments/list': {
  api: ['http://api.com/user/info', 'http://api.com/user/comments'],
  handle(data) {
    const userInfo = data.info  // key info 来自/user/info最后一个单词
    const comments = data.comments
  }
}

'/user/info', '/user/comments'两个接口返回的数据会被合并到handle方法第一个参数的data对象中,那么apiDataName就是用于设置data对象的key。默认为使用api地址最后一个/后面的单词名。

该配置项作为规律性的自动化获取data key的手段,用于提高效率。但api地址提供方未必按默认的规律行事,或者多个api地址的最后一个单词名经常性冲突, 此时可以按实际api地址的规律来自定义一个apiDataName(apiUrl){} 方法。api地址作为参数传入该方法。

同时若偶尔有data key名冲突,还可以在router配置apiItem.name来手动定义。

handleAPI(apiUrl) [:Function]

针对每一个api地址的处理方法,默认返回apiUlr本身。该配置同样用于提高规律性的api地址配置效率。例如上面那个路由配置了两个api地址:

['http://api.com/user/info', 'http://api.com/user/comments']

它们的规律是拥有相同的域名,那么可以简化配置为:

['/user/info', '/user/comments']

然后设置handleAPI方法为:

handleAPI(apiUrl) {
  return `http://api.com${apiUrl}`;
}

ajaxCache [:Boolean]

众所周知,ajax请求可能被浏览器缓存,大部分是在请求地址上加一个随机数用来消除缓存,其实服务器响应头也可以控制缓存,而ajaxCache就是用来控制对于ajax的响应是否缓存的。默认true允许缓存,设置false可禁止缓存。

Last updated