我正在发布我自己的npm软件包,它目前完全可以正常运行。但是,我觉得有更好的方法将文件夹路径传递给模块。
当前我的模块有一些文件路径,写为../../../views等...
我不想这样包含它们,有人建议我使用回调,但是我不确定如何将它们集成到模块中。
这是我的index.js文件。
const Koa = require('koa');
app = new Koa();
autorouter = require('./autorouter.js');
app.use(autorouter);
module.exports = function autoroute(){
return app;
}
这是文件“ autorouter”
const send = require('koa-send'),
fs = require('fs'),
render = require('koa-ejs'),
path = require('path'),
run = require('../../../run.js');
const publicFolder = path.join(__dirname, '../../../public');
const viewsFolder = path.join(__dirname, '../../../views');
render(app, {
root: viewsFolder,
layout: false,
viewExt: 'html',
cache: false,
debug: false
});
autorouter = async (ctx) => {
if (!(ctx.path.includes('.'))) {
if (ctx.path.length == 1) {
await ctx.render('index', await run('index', ctx));
} else {
if (!(pageExists(ctx.path + '.html'))) {
await ctx.render('404');
} else {
await ctx.render(ctx.path.substr(1), await run(ctx.path));
}
}
} else {
await send(ctx, ctx.path, {
root: publicFolder
});
}
}
module.exports = autorouter;
pageExists = (page) => {
return fs.existsSync(viewsFolder + page);
}
对于将其应用于更好的方法学的任何帮助,将不胜感激。