/** * Server初始化构造函数之参数说明 * * 开发 `node server.js dev` * * 编译后生产运行 `node server.js` * * 开发环境内置mock处理 * @param isProxy 默认`false`,标识是否启用proxy获取数据 * @param port 默认`1234`,指定当前服务器的端口号 * @param ignore 默认`false`,忽略显示系统默认错误,仅在开发环境生效,主要用于错误页面开发 */ declare module 'mext/server' { import * as Koa from 'koa'; import * as https from 'https'; import * as http from 'http'; import { IContext } from 'mext-types'; class Server { /** * Server初始化构造函数之参数说明 * * 开发环境内置mock处理 * * @param isProxy 默认`false`,标识是否启用proxy获取数据 * @param port 默认`1234`,指定当前服务器的端口号 * @param ignore 默认`false`,忽略显示系统默认错误,仅在开发环境生效,主要用于错误页面开发 */ constructor({ isProxy, port, ignore }: { isProxy: boolean; port: Number; ignore: boolean }); /** * 中间件 ``` // 这种引用,不会热更新,需要重启服务 app.use(async (ctx, next) => { console.log('start', ctx.request.path); await next(); }); // 当use引用相对地址文件,或者数组的时候,开发模式会对中间件热更新 app.use('./middleware'); app.use(['./middleware']); ``` */ use(middleware: Koa.Middleware<any, IContext>): void; /** * 加载核心中间件 * * 用来区分前置中间件和后置中间件 ```js // 设置前置中间件 app.use(); // 执行内置核心中间件 app.core(); // 设置后置中间件 app.use(); ``` */ core(): void; /** * 日志过滤器 */ logFilter(): void; /** * * 开发者可以根据node产生的错误进行自定义过滤出来 * * 回调参数的error对象数据仅生产环境生效 * * 如果没有将errLogs返回,那么将不会打印错误日志 * * ``` * app.catch(errLogs => { * // 开发阶段、errLogs为null * // 可以自行处理errLogs,决定是否将错误errLogs发送到终端,即打印日志 * return newErrLogs; * }) * ``` * */ catch(cb: Function): void; /** * * 开启端口监听 * * 示例 * ``` app.listen(1234, ( listen, url, open ) => { // listen 当前koa监听对象 // url ip地址+端口 = url // open 打开浏览器,比如本地hosts配置 example.com open('http://example.com:1234/') }); ``` */ listen( port?: string | number | ((listen: http.Server | https.Server, url: string) => void), cb?: ((listen: http.Server | https.Server, url: string) => void) | null ): Promise<void>; /** * 指定当前根目录__dirname、路由文件地址./routes.js * * 这个函数主要用来让开发者自定义api接口,内置了koa-router和koa-body * ```js // routes.js module.exports = (router, controller) => { // router的使用规则参考koa-router router.get('/api/list',controller.index.list); } // controller.index.list 表示当前root目录下的controller文件夹内的index.js文件 // index.js module.exports = class { list(ctx){ ctx.body = 'hello api/list' } } ``` */ router(root: string, routerFile: string): void; } export = Server; }