//vuex Vue.use(Vuex); const store = new Vuex.Store({ state: { accessToken: localStorage.getItem("accessToken"), refreshToken: localStorage.getItem("refreshToken"), user: null, } }); // function parseModel(name,response) { var html = new DOMParser().parseFromString(response.data, 'text/html'); var template = html.getElementsByTagName('template')[0].innerHTML; var script = html.getElementsByTagName('script')[0].innerHTML +'//# sourceURL='+name; var model = eval(script); model.template = template; return model; } // const routes = [ ]; var routeList = routes.concat(); const router = new VueRouter({ //mode: 'history', routes }); router.beforeEach((to, from, next) => { //$('#loading').show(); if (!store.state.accessToken && to.path !== '/pages/login') { router.push('/pages/login'); return; } if (store.state.accessToken) { connect(); } var route; for (var i = 0; i < routeList.length; i++) { if (routeList[i].path === to.path) { route = routeList[i]; } } if (!route) { var path = to.path === '/' ? '/pages/home' : to.path; var url = path + '.html'; console.log('preRoute:from ' + from.path + ' to path ' + to.path); axios.get(url).then(function (response) { var name = path.replace(/\//g, '-').substr(1); var route = { name:name, path: to.fullPath, component: Vue.component(name, parseModel(name,response)) }; router.addRoutes([route]); routeList.push(route); router.push(to.fullPath); }); } else { console.log('route from:' + from.path + ' to:' + to.path); next(); } }); router.afterEach((route, redirect) => { Vue.nextTick(() => { //$('#loading').fadeOut(100); }); }); //vue const app = new Vue({ //store: store, router, data: { }, mounted: function () { console.log('mounted:app'); } }).$mount('#app');