【Vue】Nuxt最佳实践之常用库封装(二)

Nuxt
站在巨人的肩膀上,以下代码借鉴于 cmn-utils 公共函数&请求封装,感谢作者 LANIF-UI 的开源贡献,有兴趣的小伙伴可以参考基于React+Dva的CMS后台管理系统 dva-boot

使用CRA(create-react-app v2) 构建的react dva 2 脚手架 支持动态路由、接口数据模拟、按功能分层、并且包含诸多实用的小组件

目录结构

  1. 常用工具类封装
    1.1 持久化存储方案
    1.2 事件巴士(Event Bus)
    1.3 常用的工具类函数
    1.4 如何批量导出
  2. 部署说明
    2.1 静态部署(generate)
    2.2 动态部署pm2简易实现
    2.3 自定义集群(ecosystem)
  3. 团队协同
    3.1 代码管理 Git
    3.2 组件规范
    3.3 说明文档
    3.4 code review(CR)

常用工具类封装

一个功能丰富和友好的方式来利用localStorage和sessionStorage (JSON、命名空间、扩展等)。

具体实现方式,npm i store2 vuex-persistedstate -S,实现思路,封装基本的增删改查至Store类,并结合 vuex-persistedstate 实现 vuex 持久化存储, 并单独新建一个js文件对外导出(避免多次实例化),即 单例模式

getStore = (key, alt) => this.store.get(key, alt) ES7 提案,暂未纳入标准语法,把函数直接作为一个arrow function的属性来定义,初始化的时候就绑定好了 this 指针

推荐阅读: ES6、ES7、ES8、ES9、ES10新特性一览

附我最认同的一句话,代码首先是给人看的,其次是在机器上运行,所以写好注释很重要哦~

import store from 'store2';
import {
    isObject, isFunction } from '../util';

export default class Store {
   
  constructor(namespace) {
   
    this.store = namespace ? store.namespace(namespace) : store;
    this.session = this.store.session;
    this.local = this.store.local;
  }

  /**
   * 反回一个新的store
   */
  create = (namespace) => new Store(namespace)

  /**
   * 将 value 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容
   * Examples:
   *
   *   .setStore('name', 'abc')
   *   .setStore({ name: 'abc', age: 18 }) // 一次存多个
   * @param {string | object} key 
   * @param {any} value 
   */
  setStore = (key, value) => {
   
    if (isObject(key)) {
   
      this.store.setAll(key);
    } else {
   
      this.store.set(key, value);
    }
    return this;
  }

  /**
   * 从本地缓存中异步获取指定 key 对应的内容, 如指定alt当没找到时反回alt
   * @param {string} key 
   * @return {Promise}
   */
  getStoreAsync = (key, alt) => Promise.resolve(this.store.get(key, alt))
  /**
   * 从本地缓存中同步获取指定 key 对应的内容, 如指定alt当没找到时反回alt
   * @param {string} key 
   * @param {any} alt
   */
  getStore 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值