Vue.js 在两个vuex模块中使用相同的操作来分离日志逻辑

Vue.js 在两个vuex模块中使用相同的操作来分离日志逻辑,vue.js,vuex,nuxt.js,Vue.js,Vuex,Nuxt.js,所以我正在开发nuxt应用程序,使用vuex作为一个商店。 我想到了使用一些日志记录(对laravel后端的简单RESTAPI请求)来记录用户的操作 我发现,如果我在两个不同的模块中有两个名称相同的动作,那么这两个动作都将被执行 这种做法可以接受吗?还是将被纠正和删除的未记录行为 快速计划正在发生的事情: store/index.js export const LOGGING_SEARCH = 'logging search'; export const SEARCH = 'search';

所以我正在开发nuxt应用程序,使用vuex作为一个商店。 我想到了使用一些日志记录(对laravel后端的简单RESTAPI请求)来记录用户的操作

我发现,如果我在两个不同的模块中有两个名称相同的动作,那么这两个动作都将被执行

这种做法可以接受吗?还是将被纠正和删除的未记录行为

快速计划正在发生的事情:

store/index.js

export const LOGGING_SEARCH = 'logging search';
export const SEARCH = 'search';
从“./logging”导入日志记录;
从“./search”导入搜索;
常量存储=()=>
新Vuex.商店({
模块:{
登录中,
搜索,
}
});
导出默认存储;
store/search.js

export const LOGGING_SEARCH = 'logging search';
export const SEARCH = 'search';
const actions={
搜索(状态、查询){
//一些搜索请求和处理结果
}
};
常量搜索={
国家,,
突变,
行动,
};
导出默认搜索;
store/logging.js

export const LOGGING_SEARCH = 'logging search';
export const SEARCH = 'search';
const actions={
搜索(状态、查询){
日志(…)
}
};
常数记录={
国家:{},
突变:{},
行动,
};
导出默认日志;
我认为有两种方法:

  • 使用常量
  • 使用名称传递模块
  • 常数

    创建文件:
    constants/store.js

    export const LOGGING_SEARCH = 'logging search';
    export const SEARCH = 'search';
    
    然后使用它,例如:

    import { LOGGING_SEARCH } from '../constants/store.js'
    const actions = {
        [LOGGING_SEARCH](state, query) {
            log(...)
        }
    };
    
    const logging = {
        state: {},
        mutations: {},
        actions,
    };
    
    export default logging;
    
    叫它

    import { LOGGING_SEARCH } from '../constants/store.js'
    store.dispatch(LOGGING_SEARCH, 'query');
    
    store.dispatch('logging/search', 'query');
    
    namespased模块

    store/logging.js

    const actions = {
        search(state, query) {
            log(...)
        }
    };
    
    const logging = {
        namespased: true,
        state: {},
        mutations: {},
        actions,
    };
    
    export default logging;
    
    叫它

    import { LOGGING_SEARCH } from '../constants/store.js'
    store.dispatch(LOGGING_SEARCH, 'query');
    
    store.dispatch('logging/search', 'query');
    
    Namespased模块非常有用,特别是在

    方面,我看到了两种方法:

  • 使用常量
  • 使用名称传递模块
  • 常数

    创建文件:
    constants/store.js

    export const LOGGING_SEARCH = 'logging search';
    export const SEARCH = 'search';
    
    然后使用它,例如:

    import { LOGGING_SEARCH } from '../constants/store.js'
    const actions = {
        [LOGGING_SEARCH](state, query) {
            log(...)
        }
    };
    
    const logging = {
        state: {},
        mutations: {},
        actions,
    };
    
    export default logging;
    
    叫它

    import { LOGGING_SEARCH } from '../constants/store.js'
    store.dispatch(LOGGING_SEARCH, 'query');
    
    store.dispatch('logging/search', 'query');
    
    namespased模块

    store/logging.js

    const actions = {
        search(state, query) {
            log(...)
        }
    };
    
    const logging = {
        namespased: true,
        state: {},
        mutations: {},
        actions,
    };
    
    export default logging;
    
    叫它

    import { LOGGING_SEARCH } from '../constants/store.js'
    store.dispatch(LOGGING_SEARCH, 'query');
    
    store.dispatch('logging/search', 'query');
    

    Namespased模块非常有用,尤其是在

    中,您可以使用它来隔离具有相同成员的模块。嘿@MatJ!感谢您的承诺:)这里的问题是我不想有单独的操作,对于我来说,在两个不同的模块中处理一个
    search
    操作是很好的目标->我可以将实际请求与日志记录分离,等等。我只是想知道这是否是正常的做法:)哦!,这很好,这是您可以用来隔离具有相同成员的模块的预期行为。嘿@MatJ!感谢您的承诺:)这里的问题是我不想有单独的操作,对于我来说,在两个不同的模块中处理一个
    search
    操作是很好的目标->我可以将实际请求与日志记录分离,等等。我只是想知道这是否是正常的做法:)哦!,那很好,这是故意的行为嘿!感谢您的承诺:)这里的问题是我不想有单独的操作,对于我来说,在两个不同的模块中处理一个
    search
    操作是很好的目标->我可以将实际请求与日志记录分离,等等。我只是想知道这是否是正常的做法:)嘿!是的,它是好的,在某些情况下,它会有帮助。来自documentatin:“默认情况下,模块内的操作、突变和getter仍然在全局命名空间下注册-这允许多个模块对相同的突变/动作类型作出反应。”酷,这是我在研究文档时遗漏的,谢谢!嘿感谢您的承诺:)这里的问题是我不想有单独的操作,对于我来说,在两个不同的模块中处理一个
    search
    操作是很好的目标->我可以将实际请求与日志记录分离,等等。我只是想知道这是否是正常的做法:)嘿!是的,它是好的,在某些情况下,它会有帮助。来自documentatin:“默认情况下,模块内的操作、突变和getter仍然在全局命名空间下注册-这允许多个模块对相同的突变/动作类型作出反应。”酷,这是我在研究文档时遗漏的,谢谢!