Skip to content

Instantly share code, notes, and snippets.

@dlodeprojuicer
Last active April 23, 2020 11:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dlodeprojuicer/66e3f9c1ed8665daea8f9a60915779e9 to your computer and use it in GitHub Desktop.
Save dlodeprojuicer/66e3f9c1ed8665daea8f9a60915779e9 to your computer and use it in GitHub Desktop.
Full dynamic router loop
const requireModule = require.context("./views", false, /\.vue$/);
let routes = [];
requireModule.keys().map(file => {
const moduleName = file.split("/")[1].split(".vue")[0];
const url = moduleName.replace(/([a-zA-Z])(?=[A-Z])/g, "$1-").toLowerCase();
if (moduleName.match(new RegExp(/^[A-Z]/)) === null) {
throw `Page file name must start with uppercase - ${file}`;
}
const viewComponent = requireModule(file).default;
if (viewComponent.name !== url) {
throw `[${file}] Page file name is not consistant with module name - expected ${url}, found ${viewComponent.name}`;
}
routes.push({
path: `/${url}`,
name: url,
component: () => import(`./views/${moduleName}.vue`),
meta: {
requiresAuth: setAuth(moduleName),
title: viewComponent.title,
}
});
});
// for Vue Router
export default new VueRouter({
routes
});
// for Ionic Vue Router
export default new IonicVueRouter({
routes
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment