javaScript 里面的模块化

一.两种方式

1.CommonJS 

2.ES6

1.CommonJS 

    常用于后端编写规范。

特征:

     1.模块是运行时加载。

     2.require()是同步加载模块。

     3.只能是模块里面值的拷贝。

  2.ES6

    常用于前端编写(VUE REACT)

特征:

     1.ES6 模块的import命令是异步加载。

     2.ES6 模块是编译时输出接口。

     3.可以直接输出模块里面变量的引用。(可以,具体看写法)

    3. 两个暴露出来的对象都被全部模块共享!

  ( CommonJS 共享一个对象,export default {..} 共享这个对象)

在使用模块化的 Vuex 中,获取模块里面的值需要使用模块命名空间(module namespace)。 在定义模块时,可以通过 `namespaced: true` 开启模块命名空间,这样在获取模块内部的状态、getters、mutations、actions 时,就需要加上模块的命名空间。 举个例子,假设我们有一个 `user` 模块,其中定义了一个 `state`: ```javascript // user.js export default { namespaced: true, state: { name: '小明', age: 18 } } ``` 如果要在另一个模块中获取 `user` 模块的 `name` 值,可以这样写: ```javascript // other.js export default { computed: { userName() { return this.$store.state.user.name } } } ``` 但是在使用模块命名空间后,就需要添加模块命名空间前缀: ```javascript // user.js export default { namespaced: true, state: { name: '小明', age: 18 } } // other.js export default { computed: { userName() { return this.$store.state.user.name // 错误,需要加上模块命名空间前缀 // return this.$store.state['user'].name // 正确的方式 } } } ``` 如果需要在 getters、mutations、actions 中访问模块内部的状态和其他函数,也需要加上模块命名空间前缀,例如: ```javascript // user.js export default { namespaced: true, state: { name: '小明', age: 18 }, getters: { getNameAndAge(state) { return `${state.name} - ${state.age}` } }, mutations: { setName(state, newName) { state.name = newName } }, actions: { changeName({ commit }, newName) { commit('setName', newName) } } } // other.js export default { computed: { nameAndAge() { return this.$store.getters['user/getNameAndAge'] // 获取 user 模块的 getters } }, methods: { changeName(newName) { this.$store.commit('user/setName', newName) // 调用 user 模块的 mutation this.$store.dispatch('user/changeName', newName) // 调用 user 模块的 action } } } ``` 以上就是在模块化 Vuex 中获取模块里面的值的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值