学习koa开发API(四)--- 文件目录设置
2021-01-15 05:11
标签:读取 cal == col dirname direct 建立 lock 程序 我们在开发过程中不会把所有的代码都写在 在根目录新增app文件夹,分别新增controllers文件夹、routes文件夹和index.js文件。 假设我们需要开发两类接口,一种是有关图书的,一种是有关用户的。那么我们子routes文件夹下新增 我们如果一个个路由进行注册会相当的麻烦,所以我们在index.js下将路由注册并导出: 修改routes同级的index.js 记得修改 访问 如果每个路由都要写一堆逻辑代码也不方便维护,所以我们将逻辑代码写在控制器文件夹中。 在controllers下新增 修改routes下的 关于自动注册路由还可以使用 修改app下的index.js。 参考:require-directory 学习koa开发API(四)--- 文件目录设置 标签:读取 cal == col dirname direct 建立 lock 程序 原文地址:https://www.cnblogs.com/armouy/p/12243289.htmlindex.js
文件中,我们会建立如下目录结构:新增路由文件
index.js、book.js和user.js
文件。// book.js
const Router = require(‘koa-router‘);
const router = new Router({prefix:‘/book‘});
?
router.get("/get",(ctx,next)=>{
ctx.body = ‘
获得一本图书
‘;
});
?
module.exports = router;// user.js
const Router = require(‘koa-router‘);
const router = new Router({prefix:‘/user‘});
?
router.get("/edit",(ctx,next)=>{
ctx.body = ‘
编辑用户信息
‘;
});
?
module.exports = router;// index.js
const fs = require("fs");
module.exports = (app)=>{
// 同步读取当前目录下的文件
fs.readdirSync(__dirname).forEach(file => {
if(file === ‘index.js‘) return;
const router = require(`./${file}`);
app.use(router.routes()).use(router.allowedMethods());
});
}
const Koa = require(‘koa‘);
const app = new Koa();
const routing = require(‘./routes‘);
?
// router注册到app
routing(app);
app.listen(3000);
package.json
文件,"start": "nodemon app/index.js"
http://localhost:3000/book/get
和http://localhost:3000/user/edit
成功。新增控制器文件
book.js和user.js
。// book.js
class BookCtl {
get(ctx){
ctx.body = ‘
获得一本图书
‘;
}
}
module.exports = new BookCtl();// user.js
class UserCtl {
edit(ctx){
ctx.body = ‘
编辑用户信息
‘;
}
}
module.exports = new UserCtl();book.js和user.js
:// book.js
const Router = require(‘koa-router‘);
const router = new Router({prefix:‘/book‘});
const bookCtl = require("../controllers/book");
?
router.get("/get",bookCtl.get);
?
module.exports = router;
// user.js
const Router = require(‘koa-router‘);
const router = new Router({prefix:‘/user‘});
const userCtl = require("../controllers/user");
router.get("/edit",userCtl.edit);
?
module.exports = router;
补充
require-directory
。npm i require-directory --save
const Koa = require(‘koa‘);
const requireDirectory = require("require-directory");
const Router = require(‘koa-router‘)
const app = new Koa();
?
const requireRouterPath = `${process.cwd()}/app/routes` // process.cwd 获取程序根目录
// requireDirectory 第一个参数固定,当有第二个参数时,可以传递第三个参数;
// 这里的第二个参数是要加载的router的目录;
// 第三个参数是一个对象,对象的值是一个函数,键可以有三种:白名单(include)、黑名单(Blacklisting)、在对象加载时访问它们(visit)
const modules = requireDirectory(module, requireRouterPath, { visit: whenLoadModule })
function whenLoadModule(obj) {
if (obj instanceof Router) {
app.use(obj.routes(), obj.allowedMethods())
}
}
?
app.listen(3000);
文章标题:学习koa开发API(四)--- 文件目录设置
文章链接:http://soscw.com/index.php/essay/42102.html