diff --git a/QMPlusVuePage/package-lock.json b/QMPlusVuePage/package-lock.json index 966e8a3287564f57d43f6b36c8fefed47f525584..47790431965a73705816fa3fea1ce37780206e71 100644 --- a/QMPlusVuePage/package-lock.json +++ b/QMPlusVuePage/package-lock.json @@ -10913,6 +10913,11 @@ "vue-style-loader": "^4.1.0" } }, + "vue-router": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.3.tgz", + "integrity": "sha512-8iSa4mGNXBjyuSZFCCO4fiKfvzqk+mhL0lnKuGcQtO1eoj8nq3CmbEG8FwK5QqoqwDgsjsf1GDuisDX4cdb/aQ==" + }, "vue-style-loader": { "version": "4.1.2", "resolved": "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.2.tgz", diff --git a/QMPlusVuePage/package.json b/QMPlusVuePage/package.json index 8f4f33d2b1c8efdc60dfb13d126b9558ba51c2bb..560c863d3c5e78894766713451244eddfa487001 100644 --- a/QMPlusVuePage/package.json +++ b/QMPlusVuePage/package.json @@ -1,46 +1,47 @@ { - "name": "qm-plus-vue-page", - "version": "0.1.0", - "private": true, - "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build", - "lint": "vue-cli-service lint" - }, - "dependencies": { - "core-js": "^2.6.5", - "vue": "^2.6.10" - }, - "devDependencies": { - "@vue/cli-plugin-babel": "^3.11.0", - "@vue/cli-plugin-eslint": "^3.11.0", - "@vue/cli-service": "^3.11.0", - "babel-eslint": "^10.0.1", - "eslint": "^5.16.0", - "eslint-plugin-vue": "^5.0.0", - "vue-template-compiler": "^2.6.10" - }, - "eslintConfig": { - "root": true, - "env": { - "node": true + "name": "qm-plus-vue-page", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" }, - "extends": [ - "plugin:vue/essential", - "eslint:recommended" - ], - "rules": {}, - "parserOptions": { - "parser": "babel-eslint" - } - }, - "postcss": { - "plugins": { - "autoprefixer": {} - } - }, - "browserslist": [ - "> 1%", - "last 2 versions" - ] + "dependencies": { + "core-js": "^2.6.5", + "vue": "^2.6.10", + "vue-router": "^3.1.3" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "^3.11.0", + "@vue/cli-plugin-eslint": "^3.11.0", + "@vue/cli-service": "^3.11.0", + "babel-eslint": "^10.0.1", + "eslint": "^5.16.0", + "eslint-plugin-vue": "^5.0.0", + "vue-template-compiler": "^2.6.10" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/essential", + "eslint:recommended" + ], + "rules": {}, + "parserOptions": { + "parser": "babel-eslint" + } + }, + "postcss": { + "plugins": { + "autoprefixer": {} + } + }, + "browserslist": [ + "> 1%", + "last 2 versions" + ] } diff --git a/QMPlusVuePage/src/App.vue b/QMPlusVuePage/src/App.vue index fcc566279aef926ce288d41de2fd4d841a400705..96cdbcfb1deddf4fb9828e8ddf8893827caff953 100644 --- a/QMPlusVuePage/src/App.vue +++ b/QMPlusVuePage/src/App.vue @@ -1,17 +1,15 @@ diff --git a/QMPlusVuePage/src/main.js b/QMPlusVuePage/src/main.js index 63eb05f711c8cb5cda45128882fa69c351f105fb..25161480b7a3a96f0ffa30a5a4740c9390750b9f 100644 --- a/QMPlusVuePage/src/main.js +++ b/QMPlusVuePage/src/main.js @@ -1,8 +1,11 @@ import Vue from 'vue' import App from './App.vue' +import router from '@/router/index' + Vue.config.productionTip = false new Vue({ - render: h => h(App), -}).$mount('#app') + render: h => h(App), + router +}).$mount('#app') \ No newline at end of file diff --git a/QMPlusVuePage/src/permission.js b/QMPlusVuePage/src/permission.js new file mode 100644 index 0000000000000000000000000000000000000000..2e4a9cff33764b4b1110519359c8f41da52931b5 --- /dev/null +++ b/QMPlusVuePage/src/permission.js @@ -0,0 +1,26 @@ +import router from './router' +import { asyncRouterHandle } from '@/utils/asyncRouter'; + +router.beforeEach((to, from, next) => { + next() + // asyncRouterHandle(asyncRouter) // 等待动态使用 VUEX持久化 会将其放入 vuex并且动态生成左侧列表 + // router.addRoutes(asyncRouter) +}) + +const asyncRouter = [{ + path: '/layout', + name: 'layout', + component: 'view/layout/index.vue', + meta: { + title: '首页', + }, + children: [{ + path: 'dashbord', + name: 'dashbord', + component: 'view/dashbord/index.vue' + }, { + path: "test", + name: "test", + component: "view/test/index.vue" + }] +}] \ No newline at end of file diff --git a/QMPlusVuePage/src/router/index.js b/QMPlusVuePage/src/router/index.js new file mode 100644 index 0000000000000000000000000000000000000000..91fe539ecadd304f0d3ba7ac1c5effca94909d5f --- /dev/null +++ b/QMPlusVuePage/src/router/index.js @@ -0,0 +1,47 @@ +import Vue from 'vue' +import Router from 'vue-router' + +Vue.use(Router) + +const baseRouters = [{ + path: '/', + redirect: '/login' + }, + { + path: '/login', + name: 'login', + component: () => + import ('@/view/login/login.vue') + }, + { + path: '/regist', + name: 'regist', + component: () => + import ('@/view/login/regist.vue') + }, + { + path: "/error", + name: "error", + component: () => + import ('@/view/error/index.vue') + }, + { + path: '*', + redirect: '/error' + + } +] + +// 需要通过后台数据来生成的组件 + +const createRouter = () => new Router({ + routes: baseRouters +}) + +const router = createRouter() + +export function resetRouter() { + const newRouter = createRouter() + router.matcher = newRouter.matcher +} +export default router \ No newline at end of file diff --git a/QMPlusVuePage/src/utils/_import.js b/QMPlusVuePage/src/utils/_import.js new file mode 100644 index 0000000000000000000000000000000000000000..43755d17103a1f2f83e1e1177a02d40f6682b6ca --- /dev/null +++ b/QMPlusVuePage/src/utils/_import.js @@ -0,0 +1,3 @@ +module.exports = file => () => { + return import ('@/' + file) +} \ No newline at end of file diff --git a/QMPlusVuePage/src/utils/asyncRouter.js b/QMPlusVuePage/src/utils/asyncRouter.js new file mode 100644 index 0000000000000000000000000000000000000000..fbefeb05f54a79fbf4937fa24fa269b5d296f87b --- /dev/null +++ b/QMPlusVuePage/src/utils/asyncRouter.js @@ -0,0 +1,9 @@ +const _import = require('./_import') //获取组件的方法 +export const asyncRouterHandle = (asyncRouter) => { + asyncRouter.map(item => { + item.component = _import(item.component) + if (item.children) { + asyncRouterHandle(item.children) + } + }) +} \ No newline at end of file diff --git a/QMPlusVuePage/src/view/dashbord/index.vue b/QMPlusVuePage/src/view/dashbord/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..4a94bda44c064216f9903cac0d18dfdebd100031 --- /dev/null +++ b/QMPlusVuePage/src/view/dashbord/index.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/QMPlusVuePage/src/view/error/index.vue b/QMPlusVuePage/src/view/error/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..f2eff74b25603ac22d6de895a42a6ff5f10edf37 --- /dev/null +++ b/QMPlusVuePage/src/view/error/index.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/QMPlusVuePage/src/view/layout/index.vue b/QMPlusVuePage/src/view/layout/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..cd4f27b37ef3064fe2492cbafeedebd58fe39b87 --- /dev/null +++ b/QMPlusVuePage/src/view/layout/index.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/QMPlusVuePage/src/view/login/login.vue b/QMPlusVuePage/src/view/login/login.vue new file mode 100644 index 0000000000000000000000000000000000000000..3b99f318fac6441bf4ab3bcd0d1bec99f444066a --- /dev/null +++ b/QMPlusVuePage/src/view/login/login.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/QMPlusVuePage/src/view/login/regist.vue b/QMPlusVuePage/src/view/login/regist.vue new file mode 100644 index 0000000000000000000000000000000000000000..7945e4ed70eddc1e56e019c3bcef92b679e3957d --- /dev/null +++ b/QMPlusVuePage/src/view/login/regist.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/QMPlusVuePage/src/view/test/index.vue b/QMPlusVuePage/src/view/test/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..a856d1570a678d15d1a1b86ec23b98fab5a06ce6 --- /dev/null +++ b/QMPlusVuePage/src/view/test/index.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file