From ca75f7bcbc65381f10a28ff247c6b01251061df7 Mon Sep 17 00:00:00 2001 From: Pan Date: Fri, 8 Dec 2017 16:17:40 +0800 Subject: [PATCH] perf(tagsView):split to single modules --- src/store/getters.js | 4 +- src/store/index.js | 8 ++-- src/store/modules/app.js | 39 +------------------- src/store/modules/tagsView.js | 47 ++++++++++++++++++++++++ src/views/example/table/index.vue | 2 +- src/views/layout/components/AppMain.vue | 3 +- src/views/layout/components/TagsView.vue | 2 +- 7 files changed, 59 insertions(+), 46 deletions(-) create mode 100644 src/store/modules/tagsView.js diff --git a/src/store/getters.js b/src/store/getters.js index 4acc4bbe..2227a606 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -1,8 +1,8 @@ const getters = { sidebar: state => state.app.sidebar, language: state => state.app.language, - visitedViews: state => state.app.visitedViews, - cachedViews: state => state.app.cachedViews, + visitedViews: state => state.tagsView.visitedViews, + cachedViews: state => state.tagsView.cachedViews, token: state => state.user.token, avatar: state => state.user.avatar, name: state => state.user.name, diff --git a/src/store/index.js b/src/store/index.js index 9bfa6a77..0a3fa8be 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1,8 +1,9 @@ import Vue from 'vue' import Vuex from 'vuex' import app from './modules/app' -import user from './modules/user' import permission from './modules/permission' +import tagsView from './modules/tagsView' +import user from './modules/user' import getters from './getters' Vue.use(Vuex) @@ -10,8 +11,9 @@ Vue.use(Vuex) const store = new Vuex.Store({ modules: { app, - user, - permission + permission, + tagsView, + user }, getters }) diff --git a/src/store/modules/app.js b/src/store/modules/app.js index 21b4de01..1dc7940e 100644 --- a/src/store/modules/app.js +++ b/src/store/modules/app.js @@ -5,9 +5,7 @@ const app = { sidebar: { opened: !+Cookies.get('sidebarStatus') }, - language: Cookies.get('language') || 'zh', - visitedViews: [], - cachedViews: [] + language: Cookies.get('language') || 'zh' }, mutations: { TOGGLE_SIDEBAR: state => { @@ -21,32 +19,6 @@ const app = { SET_LANGUAGE: (state, language) => { state.language = language Cookies.set('language', language) - }, - ADD_VISITED_VIEWS: (state, view) => { - if (state.visitedViews.some(v => v.path === view.path)) return - state.visitedViews.push({ - name: view.name, - path: view.path, - title: view.meta.title || 'no-name' - }) - if (!view.meta.noCache) { - state.cachedViews.push(view.name) - } - }, - DEL_VISITED_VIEWS: (state, view) => { - for (const [i, v] of state.visitedViews.entries()) { - if (v.path === view.path) { - state.visitedViews.splice(i, 1) - break - } - } - for (const i of state.cachedViews) { - if (i === view.name) { - const index = state.cachedViews.indexOf(i) - state.cachedViews.splice(index, 1) - break - } - } } }, actions: { @@ -55,15 +27,6 @@ const app = { }, setLanguage({ commit }, language) { commit('SET_LANGUAGE', language) - }, - addVisitedViews({ commit }, view) { - commit('ADD_VISITED_VIEWS', view) - }, - delVisitedViews({ commit, state }, view) { - return new Promise((resolve) => { - commit('DEL_VISITED_VIEWS', view) - resolve([...state.visitedViews]) - }) } } } diff --git a/src/store/modules/tagsView.js b/src/store/modules/tagsView.js new file mode 100644 index 00000000..eed8b694 --- /dev/null +++ b/src/store/modules/tagsView.js @@ -0,0 +1,47 @@ +const tagsView = { + state: { + visitedViews: [], + cachedViews: [] + }, + mutations: { + ADD_VISITED_VIEWS: (state, view) => { + if (state.visitedViews.some(v => v.path === view.path)) return + state.visitedViews.push({ + name: view.name, + path: view.path, + title: view.meta.title || 'no-name' + }) + if (!view.meta.noCache) { + state.cachedViews.push(view.name) + } + }, + DEL_VISITED_VIEWS: (state, view) => { + for (const [i, v] of state.visitedViews.entries()) { + if (v.path === view.path) { + state.visitedViews.splice(i, 1) + break + } + } + for (const i of state.cachedViews) { + if (i === view.name) { + const index = state.cachedViews.indexOf(i) + state.cachedViews.splice(index, 1) + break + } + } + } + }, + actions: { + addVisitedViews({ commit }, view) { + commit('ADD_VISITED_VIEWS', view) + }, + delVisitedViews({ commit, state }, view) { + return new Promise((resolve) => { + commit('DEL_VISITED_VIEWS', view) + resolve([...state.visitedViews]) + }) + } + } +} + +export default tagsView diff --git a/src/views/example/table/index.vue b/src/views/example/table/index.vue index b6403e86..de92c020 100644 --- a/src/views/example/table/index.vue +++ b/src/views/example/table/index.vue @@ -11,7 +11,7 @@ export default { name: 'TableMain', computed: { cachedViews() { - return this.$store.state.app.cachedViews + return this.$store.state.tagsView.cachedViews } } } diff --git a/src/views/layout/components/AppMain.vue b/src/views/layout/components/AppMain.vue index 29fb6288..fba66f3a 100644 --- a/src/views/layout/components/AppMain.vue +++ b/src/views/layout/components/AppMain.vue @@ -13,7 +13,8 @@ export default { name: 'AppMain', computed: { cachedViews() { - return this.$store.state.app.cachedViews + // console.log(this.$store.state.tagsView.cachedViews) + return this.$store.state.tagsView.cachedViews } // key() { // return this.$route.name !== undefined ? this.$route.name + +new Date() : this.$route + +new Date() diff --git a/src/views/layout/components/TagsView.vue b/src/views/layout/components/TagsView.vue index 704f274d..7e730280 100644 --- a/src/views/layout/components/TagsView.vue +++ b/src/views/layout/components/TagsView.vue @@ -15,7 +15,7 @@ export default { components: { ScrollPane }, computed: { visitedViews() { - return this.$store.state.app.visitedViews + return this.$store.state.tagsView.visitedViews } }, mounted() {