koa教程2 初始化管理器
初始化管理器
如果所有的初始化代码都放在app.js里面,那么这个文件将会变得很臃肿,我们可以将一些代码拆分出来,比如之前讲的路由自动注册的方法。
再在项目根目录里创建一个core
文件夹,这个文件夹存放一些通用的方法,如初始化方法init.js
init.js
const Router = require("koa-router");
const requireDirectory = require("require-directory");
class InitManager {
//入口方法
static initCore(app) {
InitManager.app = app;
InitManager.initLoadRouters();
};
//注册路由
static initLoadRouters() {
const apiDirectory = `${process.cwd()}/app/router`;
requireDirectory(module, apiDirectory, {
visit: (router) => {
if (router instanceof Router) {
InitManager.app.use(router.routes());
}
}
});
}
};
module.exports = InitManager;
class声明一个类,类里面有一个入口方法,用于外部引入该文件时运行使用,接受一个参数,参数为new出的Koa的实例。
initLoadRouters
方法用于挂载所有路由。但是会有一个问题,路径的设置。
路径的两种解决方案
目前我们使用的是相对路径,虽然说好用,但是会有一个问题,当我们文件发生移动时,相对路径就不正确了,所以,比较推荐的是绝对路径,或者说是相对根目录的路径。
目前有两种解决方案:
- config.js文件统一配置
- process.cwd()拼接
config.js
config.js
以前讲过,在根目录配置一个该文件,然后导出一个对象,对象里面包含所有的设置,其中路径的设置一般是这样:
const path = require("path");
module.exports = {
apiDirectory: path.resolve(__dirname, "./app/router"),
}
使用path来生成路径。
process.cwd()
这是一个node方法,process.cwd()
可以生成一个根目录地址段
如:E:\代码\koa-test
,这是我的项目根目录
于是乎我们可以这样进行拼接
const apiDirectory = `${process.cwd()}/app/router`;
使用es6的反引号语法。
这样我们初始化管理器就写好了,app.js中就可以这样写:
const Koa = require("koa");
const InitManager = require("./core/init");
const app = new Koa();
//自动注册路由
InitManager.initCore(app);
app.listen(8080);
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据