1. 01===>
  2. module的理解:将一个大的系统进行拆分 拆分成若干个细的模块
  3. 给个模块都有自己的 state mutations 等属性
  4. 这样可以在自己的小模块中进行修改 方便维护
  5.  
  6. module的简单使用
  7. (1)创建main.js(首页)在store.js同级中 2store.js中引入 3modules的形式注册
  8. store.js中写
  9. {
  10. // Vuex 仓库文件(入口)
  11. import Vue from 'vue' import Vuex from 'vuex' //全局注册Vue.use(Vuex)
  12.  
  13. // 引入子模块(add)
  14. import shopcar from "./ShopCar"
  15. import main from "./main"
  16.  
  17. // 创建一个状态厂库 并且将它暴露出去 export default
  18. const store=new Vuex.Store({
  19. modules:{
  20. // key:(模块名) value(对应模块的配置)
  21. shopcar, //它相当于把shopcar.js暴露的那个对象放置在这里
  22. main
  23. }
  24. })
  25.  
  26. // 取各个模块的值
  27. console.log(store.state.shopcar.name) //这样可以拿到可拿到 购物出的的name值为 “我的值是购物车”
  28. console.log(store) //下面为输出的值
  29. /*
  30. state: Object
  31. main: Object
  32. shopcar: Object
  33. */
  34. export default store
  35. }
  36.  
  37. 然后创建main.js(首页)
  38. {
  39. export default{
  40. state: {
  41. val: "主文件需要的值",
  42. name: "我的值是主文件"
  43. },
  44. mutations:{
  45.  
  46. },
  47. }
  48. }
  1. 02====》如何在商家页面Merchant.vue 获取到 modules模块中--shangjia.jsstate的数据
  2.  
  3. ps===>在main.js文件中 key值是不能够改名字的 value是引入进来的那个文件名
  4. key:vaulue相同的话可以简写
  5.  
  6. main.js
  7. {
  8. //引入store实例
  9. import storeaa from "./store/store";
  10.  
  11. new Vue({
  12. router,
  13. store: storeaa, //这里是key:value的形式 这里是不能够改变的哦 key 的固定的值是store value的值可以跟引入的实例对象一致即可
  14. // 这这里注册store后,全局可以共享 store了
  15. render: h => h(App)
  16. }).$mount("#app");
  17.  
  18. }
  19.  
  20. store.js
  21. {
  22. import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex)
  23.  
  24. // 引入子模块 (千万别忘记了)
  25. import shopcar from "./ShopCar"
  26. import main from "./main"
  27. import shangjia from './shangjia'
  28.  
  29. // 创建一个状态厂库 并且将它暴露出去 export default
  30. const store=new Vuex.Store({
  31. modules:{
  32. // key:(模块名) value(对应模块的配置)
  33. shopcar, //它相当于把shopcar.js暴露的那个对象放置在这里
  34. main,
  35. shangjia
  36. }
  37.  
  38. })
  39. export default store
  40. }
  41.  
  42. shangjia.js modules中管理商家模块的数据
  43. {
  44. export default {
  45. state:{
  46. val:"我是商家页面数据",
  47. name:"哈哈哈商家"
  48. }
  49. }
  50. }
  51.  
  52. Merchant.vue获取shangjia.jsstate的数据
  53. {
  54. <template>
  55. <div>
  56. <p>{{ test }}</p>
  57. </div>
  58. </template>
  59.  
  60. export default {
  61. data(){
  62. return{
  63. test:"",
  64. }
  65. },
  66.  
  67. created() {
  68. this.test=this.$store.state.shangjia.val;
  69. },
  70. }
  71.  
  72. }
  1. 03===》 利用computed:{}计算属性提高性能 2不变
  2. 利用computed只要母体数据不发生改变 它就不会发生改变
  3.  
  4. 添加 Merchant.vue
  5. {
  6. 将值渲染出来
  7. <h2>为了提升性能 {{test1}}</h2>
  8.  
  9. computed: {
  10. test1() {
  11. return this.$store.state.shangjia.name; //返回 “哈哈哈商家”
  12. }
  13. },
  14.  
  15. }
  1. 04===>将所有的数据放在store.jsdata
  2. 两个页面的代码一模一样 A页面点击加1 B页面数字同样发生改变
  3.  
  4. ps===>在利用modules模块来管理数据的时候 你需要在store.js 引入相应的子模块 如例2
  5. 如果将所有的数据 都放在store.js data中饭就不需要 引入相应的子模块
  6.  
  7. ps===> 只要你去修改state中的值 你就考虑写mutations
  8.  
  9. A.vue页面 B.vue页面
  10. {
  11. <template>
  12. <div>
  13. <button @click="clickDec">-</button>
  14. <span> {{ num }} </span>
  15. <button @click="addNum">+</button>
  16. </div>
  17. </template>
  18.  
  19. export default {
  20. data() {
  21. return {
  22. test: ""
  23. };
  24. },
  25. methods:{
  26. addNum(){
  27. // 提交一个mutations ,改变state中的值 相调用mutations中的addNum函数
  28. this.$store.commit("addNum")
  29. },
  30.  
  31. clickDec(){
  32. this.$store.commit("clickDec")
  33. }
  34. },
  35.  
  36. computed:{
  37. num(){
  38. return this.$store.state.num
  39. }
  40. },
  41. };
  42. }
  43.  
  44. store.js
  45. {
  46. import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex)
  47.  
  48. // 创建一个状态厂库 并且将它暴露出去 export default
  49. const store=new Vuex.Store({
  50. state(){
  51. return{
  52. test:"我输测试数据",
  53. num:0
  54. }
  55. },
  56.  
  57. mutations:{
  58. addNum(state){
  59. state.num++;
  60. },
  61. clickDec(state) {
  62. state.num--;
  63. },
  64. }
  65.  
  66. })
  67. export default store
  68.  
  69. }
  1. 5====》对例4进行优化 this.$store.commit("chang",1) 传参 判断出入的值正数还是负数 负数不能小于0
  2.  
  3. A页面 B页面 简化了代码
  4. {
  5. <button @click="clickDec">-</button>
  6. <span> {{ num }} </span>
  7. <button @click="addNum">+</button>
  8.  
  9. methods:{
  10. addNum(){
  11. // 提交一个mutations ,改变state中的值 用了第一种方式
  12. this.$store.commit("chang",1)
  13. },
  14.  
  15. clickDec(){ //如果小于0 不执行改函数
  16. if(this.$store.state.num==0){ //不能将这一条语句放在 最后 将没有意义
  17. return;
  18. }
  19. this.$store.commit("chang",-1)
  20. // console.log(this.$store.state.num)
  21. }
  22. },
  23. }
  24.  
  25. store.js 简化了
  26. {
  27. mutations: {
  28. chang(state, zhi) {
  29. state.num += zhi;
  30. }
  31. }
  32. }

02vuex-modules的更多相关文章

  1. Play modules

    A Play application can be assembled from several application modules. This allows you to reuse appli ...

  2. YII的Modules模块化

    转载来源: http://blog.csdn.net/mengxiangbaidu/article/details/7041296 http://blog.csdn.net/colzer/articl ...

  3. 在Angular1.X中使用CSS Modules

    在Angular1.5中,增加了一个Component方法,并且定义了组件的若干生命周期hook,在代码规范中也是推崇组件化开发,但是很遗憾的是,CSS模块化组件化的问题并没有得到解决,大部分项目的打 ...

  4. 如何在Mac系统里面更新 Ansible 的 Extra Modules

    最近遇到一个问题 seport is not a legal parameter in an Ansible task or handler 原因是我本地 Ansible 的 Extra Module ...

  5. Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules

    在eclipse里面配置tomcat时候遇到的问题: Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web mo ...

  6. 安装ESXi5.5遇到Relocating modules and starting up the kernel的处理

    在一些Dell较旧的服务器上安装ESXi 5.x时, 会遇到卡在Relocating modules and starting up the kernel过不去的问题. 比如我装的这台CS24VSS. ...

  7. PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: POC http://localhost/p ...

  8. PHPCMS \phpsso_server\phpcms\modules\phpsso\index.php、\api\get_menu.php Authkey Leakage

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 安装phpcms的时候会强制安装它的通行证 Relevant Link: ...

  9. ecshop /includes/modules/payment/alipay.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 ECSHOP支付插件存在SQL注入漏洞,此漏洞存在于/includes/ ...

  10. TypeScript Modules(模块)

    本文概述了TypeScript中如何使用模块以各种方式来组织代码.我们将涵括内部和外部的模块,并且讨论他们在适合在何时使用和怎么使用.我们也会学习一些如何使用外部模块的高级技巧,并且解决一些当我们使用 ...

随机推荐

  1. TypeScript 学习笔记(四)

    函数: 1.函数是一组一起执行一个任务的语句 2.我们可以把一段可复用的代码放到一起组成函数,从而提高效率 3.函数声明(通过关键字 function 来声明)告诉编译器函数的名称.返回类型和参数 4 ...

  2. Linux:DHCP服务器的搭建

    了解DHCP协议工作原理 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)提供了动态配置IP地址的功能.在DHCP网络中,客户端不再需要自行输入网络 ...

  3. oracle数据库自动生成数据库表结构文档(亲测有效)

    import java.awt.Color; import java.io.FileOutputStream; import java.sql.Connection; import java.sql. ...

  4. Scrapy_redis主机连接虚拟机的数据库时显示积极拒绝,无法连接

    1.端口转发 在虚拟机设置各个数据库对应的端口转发 2.修改数据库配置文件 默认只有本机的IP才可以访问,其它IP就连不上了,修改bind ip  为0.0.0.0 3.重启服务(或者直接重启虚拟机) ...

  5. C/C++ 变量的本质分析

    1. 程序通过变量来申请和命名内存空间. int a=0; //申请一个大小为int型的内存空间,这个内存空间取名叫a,申请的内存空间里存储0 2. 可以通过变量名访问变量的内存空间. 3. 修改变量 ...

  6. git 代码管理

  7. http返回头中content-length与Transfer-Encoding: chunked的问题释疑

    先说说问题出现的背景:        公司服务器与手机客户端交互,客户端请求一个动态生成的XML文件,在用firebug查看http响应头的时候,有时候发现有content-length属性,有时候没 ...

  8. linux umask计算方法

    1. umask用于设定默认的新建文件或目录的权限 查看umask当前值命令: umask -p 计算创建出的file权限方法: 如果umask值的每位数都是偶数,使用666按位减umask的值即可 ...

  9. H5混合应用之webview元素定位工具

    一.工具选择 webview元素定位有三种方式: 使用driver.page_source方法,将获取到的页面内容写入到一个html文件中,然后使用浏览器打开html文件,使用F12调试用具进行元素定 ...

  10. java获取下一天的日期

    我们来看看Java怎么获取下一天的日期: 哈哈哈,开玩笑啦,这个只是个段子. "哪怕悲伤有1000种,快乐有1种就够了."