Я публикую свой собственный пакет npm, в настоящее время он работает точно так, как задумано. Однако я чувствую, что есть лучший способ передать пути к папкам в модуль.
В настоящее время в моем модуле есть несколько путей к файлам, записанных как ../../../views и т. Д. *
Я не хочу включать их таким образом, кто-то предложил использовать обратные вызовы, но я не совсем уверен, как их интегрировать с моим модулем.
Это мой файл index.js.
const Koa = require('koa');
app = new Koa();
autorouter = require('./autorouter.js');
app.use(autorouter);
module.exports = function autoroute(){
return app;
}
А это файл "авторутер"
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);
}
Любая помощь в адаптации этого к лучшей методологии будет принята с благодарностью.