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
Was this helpful?