Skip to content

Commit

Permalink
051 - Api라우트, Plugins 자동 로드
Browse files Browse the repository at this point in the history
  • Loading branch information
moosin76 committed Dec 3, 2021
1 parent e03cd4d commit 526eb22
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 9 deletions.
24 changes: 24 additions & 0 deletions server/autoRoute.js
@@ -0,0 +1,24 @@
const fs = require('fs');
const path = require('path');

// /api
module.exports = function(root, app) {
const dir = fs.readdirSync(path.join(__dirname, root), {
withFileTypes : true
});

dir.forEach(p=>{
if(p.isDirectory()) {
if(p.name != '_model') {
arguments.callee(`${root}/${p.name}`, app);
}
} else {
let moduleName = '/' + p.name.replace(/\.js/g, '');
if(moduleName == '/index') {
moduleName = '';
}
console.log(`${root}${moduleName} => ${root}/${p.name}`);
app.use(`${root}${moduleName}`, require(`.${root}/${p.name}`));
}
})
}
4 changes: 2 additions & 2 deletions server/server.js
Expand Up @@ -52,8 +52,8 @@ app.use('/upload/:_path', thumbnail(path.join(__dirname, './upload')));
app.use(express.static(path.join(__dirname, "../dist")));

// API 라우터
const memberRouter = require('./api/member');
app.use('/api/member', memberRouter);
const autoRoute = require('./autoRoute');
autoRoute('/api', app);
app.use('/api/*', (req, res) => {
res.json({ err: '요청하신 API가 없습니다. : ' + req.url });
});
Expand Down
4 changes: 1 addition & 3 deletions src/entry-client.js
@@ -1,7 +1,5 @@
import { createApp } from "./main";
import './plugins-client/vue-toast';
import './plugins-client/vue-progressbar';
import './plugins-client/ezNotify';
import plugins from './plugins-client';

const { app, router, store } = createApp();

Expand Down
6 changes: 2 additions & 4 deletions src/main.js
Expand Up @@ -4,9 +4,7 @@ import { createRouter } from './router'
import { createStore } from './store'
import { sync } from "vuex-router-sync";

import vuetify from './plugins/vuetify'
import './plugins/axios'
import './plugins/moment';
import plugins from './plugins';
import '@babel/polyfill'
import 'roboto-fontface/css/roboto/roboto-fontface.css'
import '@mdi/font/css/materialdesignicons.css'
Expand All @@ -25,7 +23,7 @@ export function createApp(ctx) {
data: { url: ctx ? ctx.url : '' },
router,
store,
vuetify,
vuetify : plugins.vuetify,
render: h => h(App)
});

Expand Down
14 changes: 14 additions & 0 deletions src/plugins-client/index.js
@@ -0,0 +1,14 @@
import camelCase from "lodash/camelCase";

const requireModule = require.context('.', false, /\.js$/);
const modules = {};

requireModule.keys().forEach(filename => {
if(filename !== './index.js') {
const moduleName = camelCase(filename.replace(/(\.\/|\.js)/g, ''));
modules[moduleName] = requireModule(filename).default;
}
});
// console.log(Object.keys(modules));

export default modules;
14 changes: 14 additions & 0 deletions src/plugins/index.js
@@ -0,0 +1,14 @@
import camelCase from "lodash/camelCase";

const requireModule = require.context('.', false, /\.js$/);
const modules = {};

requireModule.keys().forEach(filename => {
if(filename !== './index.js') {
const moduleName = camelCase(filename.replace(/(\.\/|\.js)/g, ''));
modules[moduleName] = requireModule(filename).default;
}
});
// console.log(Object.keys(modules));

export default modules;

0 comments on commit 526eb22

Please sign in to comment.