UNPKG

vue-simple

Version:

Use Vue in the simplest and easiest way, contain more than one of plugins and other to do that, i hope you will like it.

138 lines (113 loc) 5.86 kB
# vue-simple > Use Vue in the simplest and easiest way, contain more than one of plugins and other to do that, i hope you will like it. ## 安装方法 直接使用 npm 安装: ``` npm i vue-simple -S ``` ## 文件选择器指令 该指令被封装成插件形式提供,使用方法如下: ``` import Vue from 'vue'; import { readfile, FileSelector } from 'vue-simple'; Vue.use(FileSelector); ``` 开启`<div>`接受拖放文件支持: ``` <div class="dataset" :class="{enter:isDragEnter}" v-file-selector="{type:'drag',multiple:true,accept: 'image/*'}" @file-changed="fileChangedFromBinder" @drag-enter="dragenter" @drag-leave="dragleave"> 文件选择测试 </div> ``` 让普通按钮具备文件选择功能: ``` <button v-file-selector="{accept: 'image/*'}" @file-changed="fileChangedFromBinder">点击上传</button> fileChangedFromBinder(files) { // 应用所选择的文件 this.setFiles(files); } ``` ## "缓存作用域"的使用`storage`的基础上设计`“root”``“app作用域”`,主要目的在于避免多个应用使用相同的`“key”`进行存取,会造成数据覆盖问题。 使用方法非常简单,只需要在使用存取业务之前,先为整个app设置一个唯一的识别码(推荐使用该应用的域名): ``` import { setUnique } from 'vue-simple'; /* setUnique('#A@*#FF@P#C)&^'); // 正确 setUnique('sliver box'); // 错误:不能包含空白字符 setUnique('abc'); // 错误:长度必须大于等于6位 setUnique('abc123'); // 警告:过于简单,推荐包含字母、数字、符号 */ setUnique('abc.com'); // 正确 // 可以设置为 null 或 'root' 回到顶级“root”作用域: setUnique(); // 正确 setUnique(null); // 正确 setUnique(''); // 正确 setUnique('root'); // 正确 ``` ## HTTP错误信息的拦截处理 一般使用 `axios``response` 拦截处理该 HTTP 错误信息: ``` import { Http } from 'vue-simple'; error(error) { const errInfo = Http.errorInfo(error); MessageBox.alert(errInfo, '提示', { type: 'warning', showClose: false }); // 若需要将此错误继续抛出给 $api.post().catch() 进行捕获,则将 error 进行 return // 此处可以返回任何数据给 catch() 进行捕获,若不显示 return,则错误处理和请求都在此处终止 // $api.post() 将不需要再另行处理发生错误时的逻辑,此逻辑已经被封装到 vue-simple 的 API 模块中 return error; } ````vue-simple`包含一套自定义的`HttpErrorInfo`配置: ``` const HttpErrorInfo = { default: '发生未知错误', network: '网络异常或服务器连接失败', aborted: '请求被中止', timeout: '请求服务器响应超时,请求已经被中断', // 3xx: 重定向,需要进一步的操作以完成请求 301: '请求的资源已被永久的移动到新URI', 302: '请求的资源临时被移动,请重新发送请求', ... 404: 'Not Found,所请求页面不存在', ... } ``` 也可以通过以下方法实现自定义覆盖: ``` import { HttpErrorInfo } from 'vue-simple'; HttpErrorInfo.merge({404:'page not found.'}); ``` ## Vue 插件 - **Api 通信模块** 基于`axios`库,实现通信模块的封装,业务数据存放于`request body`,而请求参数存放于`headers``url params` - **Interceptor 拦截器** `Axios` 拦截器代理器,快捷管理`axios``request``response`的拦截功能 ## Vuex 插件 - **PersistedState** 数据持久化方案支持,支持`“localStorage、sessionStorage、memory”`三种缓存引擎(通过`force`参数,可实现本地数据缓存与state之间的存储和恢复需求) ## Update Record - v1.2.15 合并内部版本 - v1.2.8 修正和完善 Base64 工具方法 - v1.2.7 Api 增加 cancel() 方法,用以取消未返回的请求。通过“Vue.$api.cancel()”调用,比如在 token 失效时取消后续依赖 token 的请求,阻止频繁弹错误消息 - v1.2.6 增加 base64 检测函数(isBase64DataURL),用于检测参数是否为 Base64 图片编码 - v1.2.5 增强 base64 相关工具函数支持,优化细节和完善错误提示 - v1.2.4 增加加载远程图片(loadImageBase64)为 Base64,并提供下载功能(downloadImageBase64) - v1.2.3 优化细节,修正关于工具引用问题 - v1.2.2 增加文件上传组件支持 `packages/upload`,支持文件选择和拖放文件 - v1.2.1 优化 PersistedState 存取机制,设计“缓存作用域”概念,将各个应用之间的缓存数据进行独立以避免数据混乱或者冲突问题 - v1.2.0 优化 Axios.request 错误捕获处理逻辑,内置 HttpErrorInfo 错误信息集合。增加大量工具 http、utils、hash、object - v1.1.20 优化相关细节 - v1.1.19 完善对应 types 声明文件包,优化细节 - v1.1.18 优化相关细节,增加前端触发文件下载功能,借助 blob 对象来实现 - v1.1.17 增加`PersistedRestore.restore`方法用于主动恢复已经存在的缓存数据到 vuex 中 - v1.1.16 优化相关细节 - v1.1.15 为 `get、post、delete、put` 添加第三个 `conf` 参数,便于单次请求覆盖默认参数。另外增加对 `post` 请求 `Blob` 数据由前端触发文件下载的支持 - v1.1.14 增加`PersistedClear.remove`方法用于主动清除缓存数据 - v1.1.13 增加`PersistedConfig`注册时过期参数`expire`(单位:秒)支持,支持各引擎以周期性的自动请求新的数据 - v1.1.12 `PersistedAction` 增加 `force` 选项支持,设置是否强制重新请求,以便于重写新的数据(主要应用于本地数据包装的存储和恢复,如搜索结果缓存等) - v1.1.11 优化 `request body` 处理逻辑,只对 `application/json` 进行处理 - v1.1.5 增加 `packages/PersistedState` 数据持久化解决方案,优化 API 模块