VUE框架CLI组件化VueX模块化拆分模块并添加命名空间------VUE框架

import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

// 怎么拆分模块,VUEX建议一个功能一个模块
// 拆分成两个模块
// A业务和B业务
// a模块
const a = {
    // 开启命名空间
    namespaced : true,
    actions : {
        doA1(){
            console.log("action A1");
        }
    },
    mutations : {
        doA2(){
            console.log("mutation A2");
        }
    },
    state : {
        A : 1
    },
    getters : {
        computedA(){
            return 1;
        }
    }
};
// 两个模块一人一个对象
const b = {
    // 开启命名空间
    namespaced : true,
    actions : {
        doB1(){
            console.log("action B1");
        }
    },
    mutations : {
        doB2(){
            console.log("mutation B2");
        }
    },
    state : {
        B : 1
    },
    getters : {
        computedB(){
            return 1;
        }
    }
};

const c = {
    // 开启命名空间
    namespaced : true,
    actions : {
        doA1(){
            console.log("C的doA");
        }
    }
}

export default new Vuex.Store({
    // 模块配置
    modules : {
        // 模块名 : 模块
        ModuleA : a,
        ModuleB : b,
        ModuleC : c
    }
});

import Vue from "vue";

import Vuex from "vuex";

Vue.use(Vuex);

// 怎么拆分模块,VUEX建议一个功能一个模块

// 拆分成两个模块

// A业务和B业务

// a模块

const a = {

    // 开启命名空间

    namespaced : true,

    actions : {

        doA1(){

            console.log("action A1");

        }

    },

    mutations : {

        doA2(){

            console.log("mutation A2");

        }

    },

    state : {

        A : 1

    },

    getters : {

        computedA(){

            return 1;

        }

    }

};

// 两个模块一人一个对象

const b = {

    // 开启命名空间

    namespaced : true,

    actions : {

        doB1(){

            console.log("action B1");

        }

    },

    mutations : {

        doB2(){

            console.log("mutation B2");

        }

    },

    state : {

        B : 1

    },

    getters : {

        computedB(){

            return 1;

        }

    }

};

const c = {

    // 开启命名空间

    namespaced : true,

    actions : {

        doA1(){

            console.log("C的doA");

        }

    }

}

export default new Vuex.Store({

    // 模块配置

    modules : {

        // 模块名 : 模块

        ModuleA : a,

        ModuleB : b,

        ModuleC : c

    }

});

<template>
    <div>
        <h1>我是A</h1>
        <button @click="doA1()">actions</button>
        <button @click="doA2()">mutations</button>
        <h3>state : {{ $store.state.ModuleA.A }}</h3>
        <!-- 有特殊符号,需要加上中括号才行 -->
        <h3>getters : {{ $store.getters["ModuleA/computedA"] }}</h3>
    </div>
</template>

<script>
    export default {
        name : "A",
        methods : {
            doA1(){
                // 开启命名空间之后需要指明
                this.$store.dispatch("ModuleA/doA1");
            },
            doA2(){
                // 开启命名空间之后需要指明
                this.$store.commit("ModuleA/doA2");
            }
        }
    }
</script>

<style>

</style>

<template>

    <div>

        <h1>我是A</h1>

        <button @click="doA1()">actions</button>

        <button @click="doA2()">mutations</button>

        <h3>state : {{ $store.state.ModuleA.A }}</h3>

        <!-- 有特殊符号,需要加上中括号才行 -->

        <h3>getters : {{ $store.getters["ModuleA/computedA"] }}</h3>

    </div>

</template>

<script>

    export default {

        name : "A",

        methods : {

            doA1(){

                // 开启命名空间之后需要指明

                this.$store.dispatch("ModuleA/doA1");

            },

            doA2(){

                // 开启命名空间之后需要指明

                this.$store.commit("ModuleA/doA2");

            }

        }

    }

</script>

<style>

</style>

<template>
    <div>
        <h1>我是B</h1>
        <button @click="doB1()">actions</button>
        <button @click="doB2()">mutations</button>
        <h3>state : {{ $store.state.ModuleB.B }}</h3>
        <!-- 有特殊符号,需要加上中括号才行 -->
        <h3>getters : {{ $store.getters["ModuleB/computedB"] }}</h3>
    </div>
</template>

<script>
    export default {
        name : "B",
        methods : {
            doB1(){
                // 开启命名空间之后需要指明
                this.$store.dispatch("ModuleB/doB1");
            },
            doB2(){
                // 开启命名空间之后需要指明
                this.$store.commit("ModuleB/doB2");
            }
        }
    }
</script>

<style>

</style>

<template>

    <div>

        <h1>我是B</h1>

        <button @click="doB1()">actions</button>

        <button @click="doB2()">mutations</button>

        <h3>state : {{ $store.state.ModuleB.B }}</h3>

        <!-- 有特殊符号,需要加上中括号才行 -->

        <h3>getters : {{ $store.getters["ModuleB/computedB"] }}</h3>

    </div>

</template>

<script>

    export default {

        name : "B",

        methods : {

            doB1(){

                // 开启命名空间之后需要指明

                this.$store.dispatch("ModuleB/doB1");

            },

            doB2(){

                // 开启命名空间之后需要指明

                this.$store.commit("ModuleB/doB2");

            }

        }

    }

</script>

<style>

</style>

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: - Vue.js 是一个轻量级的框架,易于学习和使用。 - Vue.js 提供了响应式的数据绑定和组件的开发方式,使得开发更加高效和灵活。 - Vue.js 支持模板语法和 JSX 语法,可以根据项目需求选择适合的语法。 - Vue.js 提供了丰富的指令和组件,可以快速构建复杂的交互界面。 - Vue.js 有完善的文档和社区支持,可以快速解决问题和获取帮助。 ### 回答2: Vue框架的优点主要有以下几点: 1. 渐进式框架Vue可以作为一个简单的渐进式框架使用,可以只使用其中的部分功能,逐步引入更多的高级特性和工具。这使得Vue非常易于上手和学习,同时也能够满足开发需求的不同阶段。 2. 双向数据绑定:Vue采用了双向数据绑定的机制,通过建立模板和数据之间的关联,实现了数据的自动更新。这种机制使得开发者不再需要手动操作DOM,简了开发的复杂度,提高了工作效率。 3. 组件开发:Vue将页面拆分为多个独立的组件,每个组件都包含自己的模板、逻辑和样式。组件可以相互嵌套和复用,使得开发更加模块化,便于管理和维护。同时,组件开发也提高了代码的复用性,减少了重复劳动。 4. 虚拟DOM:Vue使用虚拟DOM来更新界面,通过将组件的变先渲染在虚拟DOM上,再通过Diff算法计算出需要更新的部分,最后才更新真实的DOM。这个过程可以避免频繁操作DOM,减少了页面更新的开销,提高了性能。 5. 生态系统丰富:Vue拥有一个丰富的插件和工具生态系统,包括VuexVue Router、Vue Loader等,可以满足各种不同的开发需求。开发者可以根据自己的需求灵活选择使用这些插件,使得开发更加高效和便捷。 6. 社区活跃:Vue拥有一个庞大而活跃的开发者社区,不断有新的特性和解决方案被提出和分享。这个社区的活跃度使得开发者可以快速获取帮助和解决问题,同时也可以获得源源不断的新的优和改进。 总的来说,Vue框架具有简单易用、高效灵活和丰富的生态系统等优点,为开发者提供了良好的开发体验和更加优雅的代码编写方式。 ### 回答3: 1. 易于上手和学习:Vue框架的学习曲线相对较低,文档详尽且易于理解,使得新手能够快速上手开发。同时,Vue还有官方提供的教程和示例代码,便于初学者的学习和实践。 2. 渐进式框架Vue采用渐进式开发方式,开发者可以根据项目需求选择使用的功能。无论是小型项目还是大型复杂项目,Vue都可以满足开发者的需求,并且可以与现有项目进行无缝整合。 3. 响应式数据绑定:Vue使用了基于ES5的数据劫持机制,通过数据的双向绑定,当数据发生变时,视图会自动更新。这使得开发者无需手动操作DOM,大大简了开发过程。 4. 组件开发:Vue框架将应用程序划分为各个独立的组件,每个组件都具有自己的逻辑、模板和样式。这种组件开发的方式使得代码复用性高,提高了开发效率和可维护性。 5. 虚拟DOM:Vue使用了虚拟DOM技术,将页面抽象成一个虚拟的DOM树。当数据发生变时,Vue会通过比较新旧虚拟DOM树,只对发生变的部分进行实际的DOM操作,从而提高页面渲染效率。 6. 生态系统丰富:Vue拥有丰富的插件、组件库和开发工具,为开发者提供了丰富的选择。例如,Vue Router用于处理应用的路由,Vuex用于管理应用的状态,Vue CLI用于快速搭建项目等等。这些工具和插件可以极大地提升开发效率。 7. 社区活跃:Vue拥有庞大和活跃的社区,开发者可以在社区中获取到大量的资源和支持。无论是问题解答、文档翻译、插件开发,社区都能提供及时帮助,使得开发过程更加顺利。 总之,Vue框架具有简单易学、灵活、高效等众多优点,使得它成为前端开发的首选框架之一。无论是小型项目还是大型复杂项目,都能够得到很好的支持和发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旧约Alatus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值