deepmerge
深度合并对象采用deepmerge
模块。
const deepMerge = require('deepmerge')
const _config = require('./config')
const {setting} = require('./default')
const config = deepMerge(setting, _config)
module.exports = config
合并时,相同的字段 后者_config会覆盖前者setting的字段值。
clonedeep
用于创建值的深层副本,它以递归方式克隆该值。更改原始值后,值的深层副本没有改变,因为_.cloneDeep()递归地深深复制了该值。
深度克隆采用lodash.clonedeep
import deepClone from 'lodash.clonedeep'
menuData(state, getters, rootState) {
if (state.filterMenu) {
const {permissions, roles} = rootState.account
return filterMenu(deepClone(state.menuData), permissions, roles)
}
return state.menuData
},
js-cookie
js-cookie是一个简单的,轻量级的处理cookies的js API,用来处理cookie相关的插件
/**
* 设置认证信息
* @param auth {Object}
* @param authType {AUTH_TYPE} 认证类型,默认:{AUTH_TYPE.BEARER}
*/
function setAuthorization(auth, authType = AUTH_TYPE.BEARER) {
switch (authType) {
case AUTH_TYPE.BEARER:
Cookie.set(xsrfHeaderName, 'Bearer ' + auth.token, {expires: auth.expireAt})
break
case AUTH_TYPE.BASIC:
case AUTH_TYPE.AUTH1:
case AUTH_TYPE.AUTH2:
default:
break
}
}
/**
* 检查认证信息
* @param authType
* @returns {boolean}
*/
function checkAuthorization(authType = AUTH_TYPE.BEARER) {
switch (authType) {
case AUTH_TYPE.BEARER:
if (Cookie.get(xsrfHeaderName)) {
return true
}
break
case AUTH_TYPE.BASIC:
case AUTH_TYPE.AUTH1:
case AUTH_TYPE.AUTH2:
default:
break
}
return false
}
require('').default
- ES6 模块导出、导入。如
export
|import
|export default
- Node.js模块导出、导入,如
module.exports
|require
node在处理ES6模块导入export default
时,导出的模块格式是{"default": config}
// config.js
// 使用 export default 导出
export default options
// 使用 require.default 导入
require('./config').default
// node处理es6导入格式如下
{
"default": config
}
在组件或者其它模块引入router模块,可以有以下2种方式:
import *** from ***
- CommonJS的模块导入方式require引入router模块,需要使用
.default
来获取实际的组件选项。
require('./config').default
provide和inject
vue 组件的数据通信方式有vuex、$parent与$children
、prop、$emit与$on
、$attrs与$lisenters
、eventBus、ref、provide与inject。