1、vuex 动态模块配置

import Vue from 'vue'
import Vuex from 'vuex'
import store from '@/store'; // 使用Vuex插件,即使插件被调用多次,插件也只会安装一次
Vue.use(Vuex); // state存储数据的状态
const state = { // 数据状态
name: 'mfg'
} // getters获取数据状态 const getters = { // 可以使用store.getters.myName获取数据
myName: state => {
return state.name
}
} // mutations更改数据状态的唯一方法
const mutations = { // 每个mutations都有一个事件类型type和回调函数。下面代码type为editName,回调函数即完成数据更改。
// agr为参数
editName(state, arg) {
state.name = arg;
}
} // actions提交的是mutation,处理的异步操作
const actions = { // 传递的参数为arg
editNameAction({ commit, state }, arg) {
commit('editName', arg)
}
} // registerModule,在 store 创建之后,注册模块
// 模块动态注册功能可以让其他vue插件使用注册好的新模块
store.registerModule('myNameSpace', { // 命名空间,模块具有更高的封装度和复用性
namespaced: true,
state,
mutations,
getters,
actions
})

或者组件注册:

<script>
import storeIndex from '../protect/store'
import store from '@/store' export default {
name: 'intelligence',
beforeMount() {
//组件注册store的命名空间
store.registerModule('intelligence', storeIndex)
},
destroyed() {
//组件销毁store的命名空间
store.unregisterModule('intelligence')
}
}
</script> /protect/store文件:
export default {
namespaced: true,
modules: {
common,
workflow,
configfile,
sysdetail,
unitdetail
}
}

2、vue单文件demo

<template>
<div>
<!-- 使用mapState获取数据状态 -->
<p>{{name}}</p>
<!-- 使用mapGetters获取数据状态 -->
<p>{{myName}}</p>
<!-- 使用mapMutations更改数据状态 -->
<el-button @click="edit('abc')">修改名字</el-button>
<!-- 使用mapActions更改数据状态 -->
<el-button @click="edit2('def')">修改名字2</el-button>
</div>
</template>
<script> import sti from 'commons/sti';
import './store'; // 辅助函数mapMutations, mapActions, mapGetters, mapState
import { mapMutations, mapActions, mapGetters, mapState } from 'vuex'; export default sti.page({
computed: { // 使用对象展开运算符将此对象混入到外部对象中
// 第一个参数为模块上下文myNameSpace
...mapState('myNameSpace', {
name: state => state.name
}), // 使用对象展开运算符将此对象混入到外部对象中
// 第一个参数为模块上下文myNameSpace
...mapGetters('myNameSpace', ['myName'])
}, data() {
return {}
}, methods: { // 第一个参数为模块上下文myNameSpace
...mapMutations('myNameSpace', ['editName']), // 第一个参数为模块上下文myNameSpace ...mapActions('myNameSpace', ['editNameAction']), // 也可以这样写
// ...mapActions(['myNameSpace/editNameAction']),
edit(arg) { // 更新数据状态
this.editName(arg);
},
edit2(arg) { // 更新数据状态
this.editNameAction(arg);
}
}, mounted() {}
});
</script>

在mutations中可以将type设置为常量

const mutations = {

  [types.THEME_UPDATE](state, theme) {
state.appTheme = theme
}
}
const actions = {

  updateTheme: ({commit}, theme) => {
commit(types.THEME_UPDATE, theme)
}
}

3、严格模式

const store = new Vuex.Store({
// ...
strict: process.env.NODE_ENV !== 'production'
})

在严格模式下,无论何时发生了状态变更且不是由 mutation 函数引起的,将会抛出错误。这能保证所有的状态变更都能被调试工具跟踪到。

vue vuex 大型项目demo示例的更多相关文章

  1. vuejs学习——vue+vuex+vue-router项目搭建(三)

    前言 vuejs学习——vue+vuex+vue-router项目搭建(一) vuejs学习——vue+vuex+vue-router项目搭建(二) 为什么用vuex:组件之间的作用域独立,而组件之间 ...

  2. vuejs学习——vue+vuex+vue-router项目搭建(二)

    前言 最近比较忙,所有第二章发布晚了,不好意思各位. vuejs学习——vue+vuex+vue-router项目搭建(一) 中我们搭建好了vue项目,我相信大家已经体验了vue其中的奥妙了,接下来我 ...

  3. Vue/Egg大型项目开发(一)搭建项目

    项目Github地址:前端(https://github.com/14glwu/stuer)后端(https://github.com/14glwu/stuer-server) 项目线上预览:http ...

  4. vuejs学习——vue+vuex+vue-router项目搭建(一)

    前言 快年底了却有新公司邀请了我,所以打算把上家公司的学到一下技术做一些总结和分享. 现在vuejs都2.0了,我相信也有很多朋友和我一样实际项目还是选择vue1.0的或者给新手一些参考,不管在选择哪 ...

  5. 【vue】MongoDB+Nodejs+express+Vue后台管理项目Demo

    ¶项目分析 一个完整的网站服务架构,包括:   1.web frame ---这里应用express框架   2.web server ---这里应用nodejs   3.Database ---这里 ...

  6. 后端狗的Vue学习历程(一) - demo示例与基本逻辑语法

    目录 demo的三部分结构 判断:v-if.v-else-if.v-else 循环:v-for 事件绑定 v-on:eventType 内容输入的双向绑定v-model 源码:Github demo的 ...

  7. Vue/Egg大型项目开发(二)数据库设计

    项目Github地址:前端(https://github.com/14glwu/stuer)后端(https://github.com/14glwu/stuer-server) 项目线上预览:http ...

  8. 【分享】Vue 资源典藏(UI组件、开发框架、服务端、辅助工具、应用实例、Demo示例)

    Vue 资源典藏,包括:UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和 ...

  9. Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例

    Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和WeUI的组件库 ...

随机推荐

  1. Mindjet Mindmanager复制文件打不开

    概述 使用Mindjet软件画思维导图,保存后得到一个后缀为mmap的文件.复制到一个新的位置,却发现新的文件打不开,导致Mindjet崩溃.这里提供一个解决方案. 解决方案 复制的文件打不开 先打开 ...

  2. 最近公共祖先LCA(前置知识)

    1.前言 最近公共祖先(Least Common Ancestors),简称LCA,是由Tarjan教授(对,又是他)提出的一种在有根树中,找出某两个结点u和v最近的公共祖先问题. 2.什么是最近公共 ...

  3. 【并查集】【DFS】搭桥

    [codevs1002]搭桥 Description 有一矩形区域的城市中建筑了若干建筑物,如果某两个单元格有一个点相联系,则它们属于同一座建筑物.现在想在这些建筑物之间搭建一些桥梁,其中桥梁只能沿着 ...

  4. python基础之面向过程编程,模块

    面向过程编程 面向过程的核心是过程,指的是解决问题的步骤,即先干什么再干什么,就好像设计一条流水线. 优点:复杂的问题流程化,进而简单化 缺点:可扩展性差,修改流水线的任意一个阶段,都会牵一发而动全身 ...

  5. 手机在线更新系统MySQL数据库服务器参数优化mycnf,16G内存8核CPU,

    业务场景: 后台支持手机在线更新系统,db服务器内存16G,8核,dell的pc服务器. qps: 200个左右 tps: 1个左右 一分钟50几个 sort_buffer_size = 32M 大了 ...

  6. HDU 4630 No Pain No Game(2013多校3 1010题 离线处理+树状数组求最值)

    No Pain No Game Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  7. CentOS上安装分布式文件系统FastDFS & 配置和问题解决

    原文:https://my.oschina.net/wangmengjun/blog/1142982 什么是FastDFS? FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件 ...

  8. 前端工业化工具Grunt初体验

    今天来学学Grunt~~目的是为了自动化!自动压缩...自动修复...自动合并等... 提示:Grunt基于Node.js,安装之前要先安装Node.js 1.安装 grunt-cli npm ins ...

  9. MySql_安装及简单命令

    一.下载MySql http://dev.mysql.com/downloads/file/?id=461390 版本位5.7.11.0.msi,32位的,但是该版本在64位机器上也可以使用 二.安装 ...

  10. java 从网络Url中下载文件

    转自:http://blog.csdn.net/xb12369/article/details/40543649 /** * 从网络Url中下载文件 * @param urlStr * @param ...