no message
Former-commit-id: 5c8be8a85b0cba2a1e1e89ea72c8ac59087df61d [formerly e491df6b119dd8da11efb95abb874662933081a0] [formerly 5c8be8a85b0cba2a1e1e89ea72c8ac59087df61d [formerly e491df6b119dd8da11efb95abb874662933081a0] [formerly 5c8be8a85b0cba2a1e1e89ea72c8ac59087df61d [formerly e491df6b119dd8da11efb95abb874662933081a0] [formerly e491df6b119dd8da11efb95abb874662933081a0 [formerly 731aaa1eab6bea292c3246c1fcc6d154bcf6d2f2 [formerly 19ce0ba792ec5592397d7cf6686984be7a25e13f]]]]] Former-commit-id: 9f29fe6a9ba6d0a52a7f67e479d1f2cb7b1546b4 Former-commit-id: c6add3f6ad0f1d68250c6706dceafea380023838 Former-commit-id: 88152175823504d5841a89a5c1ae8a4b8a4714d4 [formerly 21979818846cf1375188a7528f95de56121f1d86] Former-commit-id: 7022a178ed883532fa196eb75f62fa06fe35330c Former-commit-id: 989add9a5aec12f7318f90473ccaab49eb6524f7 Former-commit-id: caed0f3751abb43abe3b531408f406c7bd4b23a1 Former-commit-id: 2b8f548a46d5a241f6602a240b27d56104ad66d2 Former-commit-id: ea94c865ded4988f3af665cc5d82d0bfa38228df
This commit is contained in:
parent
a41a927282
commit
fbc38520d4
|
|
@ -41,106 +41,72 @@ module.exports = {
|
|||
editLinkText: '在 GitHub 上编辑此页',
|
||||
lastUpdated: '最后更新',
|
||||
nav: [
|
||||
{ text: '指南', link: '/zh/guide/' },
|
||||
{ text: '插件', link: '/zh/plugins/' },
|
||||
{ text: '组件', link: '/zh/components/' },
|
||||
{ text: '文章', link: '/zh/article/' },
|
||||
{ text: '其它', link: '/zh/others/' },
|
||||
{ text: '预览', link: 'https://fairyever.gitee.io/d2-admin-preview/#/index' }
|
||||
{
|
||||
text: '学习',
|
||||
items: [
|
||||
{ text: '教程', link: '/zh/learn-guide/' },
|
||||
{ text: '相关知识', link: '/zh/learn-knowledge/' }
|
||||
]
|
||||
},
|
||||
{
|
||||
text: '系统',
|
||||
items: [
|
||||
{ text: '内置组件', link: '' },
|
||||
{ text: '插件', link: '' },
|
||||
{ text: 'vuex', link: '' },
|
||||
{ text: '菜单', link: '' },
|
||||
{ text: '路由', link: '' },
|
||||
{ text: '主题系统', link: '' },
|
||||
{ text: '数据持久化', link: '' },
|
||||
{ text: 'CSS 实用类', link: '' },
|
||||
{ text: 'JS Util', link: '' }
|
||||
]
|
||||
},
|
||||
{
|
||||
text: '生态',
|
||||
items: [
|
||||
{ text: 'D2 Admin start kit', link: '' },
|
||||
{ text: 'D2 Admin ICE', link: '' },
|
||||
{ text: 'D2 CRUD', link: '' },
|
||||
{ text: 'D2 Ribbons', link: '' }
|
||||
]
|
||||
},
|
||||
{
|
||||
text: '其它',
|
||||
items: [
|
||||
{ text: '文章归档', link: '' },
|
||||
{ text: '更新日志', link: '' },
|
||||
{ text: '参与者名单', link: '' },
|
||||
{
|
||||
text: '关注我们',
|
||||
items: [
|
||||
{ text: '掘金', link: '' },
|
||||
{ text: 'CSDN', link: '' },
|
||||
{ text: 'segmentfault', link: '' },
|
||||
{ text: '知乎', link: '' },
|
||||
{ text: '微信公众号', link: '' }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{ text: '常见问题', link: '' }
|
||||
],
|
||||
sidebar: {
|
||||
'/zh/guide/': sideBarGuide('指南'),
|
||||
'/zh/plugins/': sideBarPlugins('插件'),
|
||||
'/zh/components/': sideBarComponents('组件'),
|
||||
'/zh/article/': sideBarArticle('Cookbook', '版本更新'),
|
||||
'/zh/others/': sideBarOthers('其它')
|
||||
'/zh/learn-guide/': sideBarLearnGuide()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function sideBarGuide (title) {
|
||||
function sideBarLearnGuide () {
|
||||
return [
|
||||
{
|
||||
title,
|
||||
collapsable: false,
|
||||
children: [
|
||||
'',
|
||||
'getting-started',
|
||||
'question',
|
||||
'plagiarize',
|
||||
'change-log'
|
||||
'getting-started'
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
function sideBarPlugins () {
|
||||
return [
|
||||
'',
|
||||
'data-export',
|
||||
'data-import',
|
||||
'i18n',
|
||||
'mock',
|
||||
'vuex',
|
||||
'util'
|
||||
]
|
||||
}
|
||||
|
||||
function sideBarComponents (title) {
|
||||
return [
|
||||
{
|
||||
title,
|
||||
collapsable: false,
|
||||
children: [
|
||||
'',
|
||||
'charts',
|
||||
'charts-new',
|
||||
'container',
|
||||
'count-up',
|
||||
'highlight',
|
||||
'icon-select',
|
||||
'icon-svg',
|
||||
'icon',
|
||||
'markdown'
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
function sideBarArticle (titleCookBook, titleUpdate) {
|
||||
return [
|
||||
{
|
||||
title: titleCookBook,
|
||||
collapsable: false,
|
||||
children: [
|
||||
'cookbook/what-is-cookbook',
|
||||
'cookbook/combinable-questionnaire',
|
||||
]
|
||||
},
|
||||
{
|
||||
title: titleUpdate,
|
||||
collapsable: false,
|
||||
children: [
|
||||
'update/ice-1.1.2',
|
||||
'update/1.1.5',
|
||||
'update/1.1.4',
|
||||
'update/0.0.0'
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
function sideBarOthers (title) {
|
||||
return [
|
||||
{
|
||||
title,
|
||||
collapsable: false,
|
||||
children: [
|
||||
'',
|
||||
'css'
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
# 文章
|
||||
|
||||
请在侧边栏目录选择文章阅读
|
||||
|
|
@ -1 +0,0 @@
|
|||
7016ea14567961c24eb1fdee492e0c996099f752
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
# 什么是 Cookbook
|
||||
|
||||
计算机领域的 Cookbook 指的是实用经典案例的意思,是对一些普遍性问题的解决方案的总结和整理。
|
||||
|
|
@ -1,123 +0,0 @@
|
|||
# 公布项目
|
||||
|
||||

|
||||
|
||||
# 介绍
|
||||
|
||||
D2Admin 是一个开源的管理系统前端集成方案
|
||||
|
||||
[Github仓库](https://github.com/d2-projects/d2-admin) - [预览地址](https://fairyever.gitee.io/d2-admin-preview/#/index) - [中文文档](https://fairyever.gitee.io/d2-admin-doc/zh/)
|
||||
|
||||
D2Admin 是完全开源免费的管理系统集成方案,由 [FairyEver](https://github.com/FairyEver) 在工作之余完全由兴趣驱动完成,如果你也一样喜欢前端开发,欢迎加入我们的讨论/学习群,群内可以`提问答疑`,`分享学习资料`或者随便扯淡
|
||||
|
||||
**QQ群**
|
||||
|
||||
群号 806395827 欢迎大家
|
||||
|
||||
**微信群**
|
||||
|
||||
作者微信 liyang1711467488
|
||||
|
||||
> 微信群需要先加群主才可以拉进群
|
||||
|
||||
## 功能
|
||||
|
||||
* 首屏加载等待动画 避免首次加载白屏尴尬
|
||||
* 简约主题
|
||||
* 每个插件和组件都配有介绍文档
|
||||
* 图片资源 sketch 源文件( 可以在这个文件内重新生成所有图片资源 )
|
||||
* 登陆和注销
|
||||
* 根据路由自动生成菜单
|
||||
* 可折叠侧边栏
|
||||
* 方便的菜单设置
|
||||
* 多国语言支持
|
||||
* 富文本编辑器
|
||||
* Markdown 编辑器
|
||||
* 全屏功能
|
||||
* Fontawesome 图标库
|
||||
* 图标选择器(组件)
|
||||
* 自动引入下载的 SVG 图标
|
||||
* 前端假数据支持( mock )
|
||||
* 集成蚂蚁金服出品的 G2 图表
|
||||
* 图表自适应可拖拽大小的卡片容器(示例)
|
||||
* 简化剪贴板操作
|
||||
* 简化Cookie操作
|
||||
* 时间日期计算工具
|
||||
* 导入 Excel ( xlsx 格式 + csv 格式 )
|
||||
* 数据导出 Excel ( xlsx 格式 + csv 格式 )
|
||||
* 数据导出文本
|
||||
* 数字动画
|
||||
* 可拖拽调整大小的切分布局
|
||||
* 可拖拽调整大小和位置的网格布局
|
||||
* 提供三种方便的页面容器组件(正常卡片,隐形容器,填满页面)
|
||||
* 代码高亮显示
|
||||
* 加载并解析(或者直接指定资源) markdown 文件
|
||||
* GitHub 样式的 markdown 显示组件
|
||||
* markdown 内代码高亮
|
||||
* 为 markdown 扩展了百度云链接解析和优化显示
|
||||
* 右键菜单组件
|
||||
* 自定义滚动条和滚动控制
|
||||
* 内置4种主题
|
||||
* 公用样式抽离,方便的主题定制
|
||||
* 支持百万级数据量的表格组件
|
||||
* 打包后随意目录部署(已经做好兼容设置)
|
||||
|
||||
## TODO
|
||||
|
||||
D2Admin 仍然处于开发中,这里有一些计划:
|
||||
|
||||
* 分离出简化版本
|
||||
* 推出基于 [ice](https://alibaba.github.io/ice) 平台的版本
|
||||
* 增加右上角通知中心
|
||||
* 增加一些实例页面以提供业务页面布局建议
|
||||
* 更换图表库
|
||||
* 多 tab 页结构
|
||||
* 面包屑导航
|
||||
* 树型表格组件
|
||||
* `1.1.0 完成` 抽离项目里的文档,集中存放在文档站点
|
||||
* `1.1.0 完成` 对主界面进行一次完善,调整整体布局和颜色
|
||||
* `1.1.0 完成` 切换主题功能
|
||||
|
||||
欢迎你为 D2Admin 的开发作出贡献(代码编写/文档翻译)。
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
├─ build
|
||||
├─ config
|
||||
├─ docs // 文档
|
||||
├─ src
|
||||
│ ├─ assets // 资源
|
||||
│ │ ├─ icons
|
||||
│ │ ├─ image
|
||||
│ │ ├─ library
|
||||
│ │ └─ style
|
||||
│ ├─ components // 组件
|
||||
│ │ ├─ charts
|
||||
│ │ ├─ core
|
||||
│ │ └─ demo
|
||||
│ ├─ i18n // 多国语
|
||||
│ ├─ menu // 菜单
|
||||
│ ├─ mock // 模拟数据
|
||||
│ ├─ pages // 页面
|
||||
│ ├─ plugin // 插件
|
||||
│ ├─ router // 路由
|
||||
│ ├─ store // vuex
|
||||
│ ├─ utils
|
||||
│ ├─ App.vue
|
||||
│ └─ main.js
|
||||
├─ static // 静态资源
|
||||
├─ .babelrc
|
||||
├─ .editorconfig
|
||||
├─ .eslintignore
|
||||
├─ .eslintrc.js
|
||||
├─ .gitattributes
|
||||
├─ .gitignore
|
||||
├─ .postcssrc.js
|
||||
├─ LICENSE
|
||||
├─ README.md
|
||||
├─ deploy.sh
|
||||
├─ design.sketch // 设计文件
|
||||
├─ index.html
|
||||
└─ package.json
|
||||
```
|
||||
|
|
@ -1,219 +0,0 @@
|
|||
# 版本发布 1.1.4
|
||||
|
||||

|
||||
|
||||
D2Admin 是一个 **注重外观表现** 的管理系统 **PC端** 集成方案,现在正在紧张开发维护。
|
||||
|
||||
## 前言
|
||||
|
||||
距离 D2Admin 正式和大家见面(开源),已经过去一个多月了。
|
||||
|
||||

|
||||
|
||||
现在想想这一个月真是很忙碌,几乎所有的业余时间都用在了开源项目上,公司没事的时候在写,晚上回家每天都要写到一点左右,回家火车上都在忙着改代码...
|
||||
|
||||

|
||||
|
||||
上图:好友不幸骨折,守着他编码...(希望他早点康复)
|
||||
|
||||
有天我和朋友说,感觉真是开源个项目,把自己整个人都开源了,一个人又要设计又要写代码又要写文档还要回答问题,除了上班吃睡就都是它了!
|
||||
|
||||
但是就我个人而言,我感觉倒也是一种不错的体验。
|
||||
|
||||
通过这个开源产品,认识了很多朋友,有了自己的小交流群,平日没事了大家一起讨论讨论问题也挺不错。当然也新认识了一些大佬(膜拜),通过交流也有不小的收获。
|
||||
|
||||
## 介绍
|
||||
|
||||
废话不多说了,一介码农也没有什么文采,今天也是趁着发版的机会小发表一些想法,下面就介绍一下这一个月来究竟升级了什么吧,先放几张截图吧:
|
||||
|
||||
### 预览
|
||||
|
||||
经典主题:
|
||||
|
||||

|
||||
|
||||
集成组件和插件:
|
||||
|
||||

|
||||
|
||||
图标选择器:
|
||||
|
||||

|
||||
|
||||
版本检查:
|
||||
|
||||

|
||||
|
||||
灰度模式:
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
数据持久化:
|
||||
|
||||

|
||||
|
||||
图表:
|
||||
|
||||

|
||||
|
||||
主题:
|
||||
|
||||

|
||||
|
||||
响应大家需求,这次最大的升级:多标签页:
|
||||
|
||||

|
||||
|
||||
上面是我随便截了几张图片 如果你感兴趣的话可以去体验地址一趟 -> [体验地址](https://fairyever.gitee.io/d2-admin-preview/#/index) <-。
|
||||
|
||||
项目现在集成了不少的库和插件,第一次加载确实有些慢,以后有空了优化一下。
|
||||
|
||||
另外大家实际使用的时候建议使用 [简化版模板](https://github.com/d2-projects/d2-admin-start-kit)。
|
||||
|
||||
### 完整功能列表
|
||||
|
||||
* 首屏加载等待动画 避免首次加载白屏尴尬
|
||||
* 简约主题
|
||||
* 每个插件和组件都配有介绍文档
|
||||
* 图片资源 sketch 源文件( 可以在这个文件内重新生成所有图片资源 )
|
||||
* 登陆和注销
|
||||
* 根据路由自动生成菜单
|
||||
* 可折叠侧边栏
|
||||
* 方便的菜单设置
|
||||
* 多国语言支持
|
||||
* 富文本编辑器
|
||||
* Markdown 编辑器
|
||||
* 全屏功能
|
||||
* Fontawesome 图标库
|
||||
* 图标选择器(组件)
|
||||
* 自动引入下载的 SVG 图标
|
||||
* 前端假数据支持( mock )
|
||||
* 集成蚂蚁金服出品的 G2 图表
|
||||
* 图表自适应可拖拽大小的卡片容器(示例)
|
||||
* 简化剪贴板操作
|
||||
* 简化Cookie操作
|
||||
* 时间日期计算工具
|
||||
* 导入 Excel ( xlsx 格式 + csv 格式 )
|
||||
* 数据导出 Excel ( xlsx 格式 + csv 格式 )
|
||||
* 数据导出文本
|
||||
* 数字动画
|
||||
* 可拖拽调整大小的切分布局
|
||||
* 可拖拽调整大小和位置的网格布局
|
||||
* 提供三种方便的页面容器组件(正常卡片,隐形容器,填满页面)
|
||||
* 代码高亮显示
|
||||
* 加载并解析(或者直接指定资源) markdown 文件
|
||||
* GitHub 样式的 markdown 显示组件
|
||||
* markdown 内代码高亮
|
||||
* 为 markdown 扩展了百度云链接解析和优化显示
|
||||
* 右键菜单组件
|
||||
* 自定义滚动条和滚动控制
|
||||
* 内置5种主题
|
||||
* 公用样式抽离,方便的主题定制
|
||||
* 支持百万级数据量的表格组件
|
||||
* 打包后随意目录部署(已经做好兼容设置)
|
||||
* 支持临时菜单配置
|
||||
* 提供“试验台”功能 方便展示系统功能调用方法 `1.1.4 +`
|
||||
* 多标签页模式 `1.1.4 +`
|
||||
* 美化滚动条 `1.1.4 +`
|
||||
* 持久化存储 `1.1.4 +`
|
||||
|
||||
### 更新列表
|
||||
|
||||
这个列表在这里也可以查看 -> [中文文档 | 更新日志](https://fairyever.gitee.io/d2-admin-doc/zh/guide/change-log.html#v1-1-0)
|
||||
|
||||
#### 1.1.4
|
||||
|
||||
* [ 修改 ] 全局状态管理设计优化
|
||||
* [ 修改 ] 主题调优
|
||||
* [ 新增 ] playground 模块,方便测试和展示一些功能实现方式/调用方法
|
||||
* [ 新增 ] 灰度模式
|
||||
* [ 新增 ] 多页模式
|
||||
* [ 新增 ] 多页模式缓存
|
||||
* [ 新增 ] 多页模式快速关闭(关闭左侧 右侧 全部 其它)
|
||||
* [ 修改 ] 侧边栏滚动优化
|
||||
* [ 新增 ] `d2-container` 填充模式自定义滚动条
|
||||
* [ 新增 ] `d2-container` 组件卡片和隐形模式自定义滚动条
|
||||
* [ 新增 ] 现在页面标题可以根据路由做出对应变化了
|
||||
* [ 新增 ] 版本检查机制
|
||||
* [ 新增 ] `d2-container` 隐形模式支持 header 插槽
|
||||
* [ 新增 ] 版本检查可以设置为不显示提示框
|
||||
* [ 新增 ] 集成 json 查看组件
|
||||
* [ 新增 ] 添加了所有图表种类的演示页面
|
||||
* [ 修改 ] 修改布局方式,解决了在 Firefox 上 better-scroll 初始化拿不到正确高度的 bug
|
||||
* [ 新增 ] 右上角显示用户名,用户名持久存储
|
||||
|
||||
#### 1.1.3
|
||||
|
||||
* [ 修复 ] 侧边栏在折叠时不显示的 bug
|
||||
* [ 新增 ] v-charts 插件
|
||||
* [ 新增 ] 一些演示图表(后续打算把 v-charts 文档上有示例性的演示都展示一下)
|
||||
* [ 修改 ] D2Admin 经典主题颜色调整
|
||||
* [ 新增 ] violet 主题
|
||||
* [ 新增 ] 菜单图标
|
||||
* [ 修改 ] 新制作了 Fork me 图片
|
||||
|
||||
#### 1.1.2
|
||||
|
||||
* [ 修改 ] 删除了 G2 相关的依赖
|
||||
|
||||
#### 1.1.1
|
||||
|
||||
* [ 修改 ] 删除了 G2 相关的代码(移除图表库)
|
||||
* [ 优化 ] 侧边栏取值逻辑
|
||||
|
||||
#### 1.1.0
|
||||
|
||||
* [ 修改 ] 顶栏和侧边栏菜单新的结构生成方式,新的方案使用 数据 + 递归组件 实现无限制多级菜单
|
||||
* [ 修改 ] 路由注册回归最简单的写法
|
||||
* [ 修复 ] 首次加载 loading 样式类名和程序内类名冲突,新的加载类名使用 d2-app-loading 前缀
|
||||
* [ 修改 ] 所有类似 dd- 的样式前缀(包括自动注册图标的id前缀)统一改为 d2-
|
||||
* [ 修复 ] 修复 d2-highlight 组件和 d2-markdown 组件的样式冲突
|
||||
* [ 修改 ] 内置组件名称统一改为 d2- 前缀,统一使用横线连接 (kebab-case) 风格
|
||||
* [ 修改 ] 顶栏 logo 阴影删除
|
||||
* [ 新增 ] 主题系统
|
||||
* [ 新增 ] 三个主题,分别为 d2admin 经典,简约线条,流星
|
||||
* [ 修改 ] d2-markdown 组件 md 参数改名为 source
|
||||
* [ 修改 ] 删除了 d2-markdown 组件中图片的白色背景
|
||||
* [ 修改 ] 删除 timeago 插件,更换为更强大的 dayjs
|
||||
* [ 新增 ] Tomorrow Night Blue 主题
|
||||
* [ 修改 ] src/assets/style/public-class.scss 写法优化
|
||||
* [ 新增 ] [vue-bigdata-table](https://github.com/lison16/vue-bigdata-table)组件
|
||||
* [ 修复 ] 侧边栏内容超过一屏后显示错误
|
||||
* [ 新增 ] 自定义滚动条演示页面
|
||||
* [ 新增 ] 流星主题新增背景图片上层的半透明遮罩
|
||||
* [ 修复 ] 主题设置失效bug
|
||||
* [ 修复 ] router守卫验证登陆部分代码修改
|
||||
* [ 修复 ] d2-container 组件改为同步注册(之前的异步注册会有 mounted 生命周期问题,即 slot 内的页面在 mounted 生命周期内拿不到 dom)
|
||||
* [ 修复 ] d2-container 组件重构 flex 布局
|
||||
* [ 新增 ] 404 page
|
||||
* [ 新增 ] 顶栏联系方式
|
||||
* [ 新增 ] 右键菜单组件
|
||||
* [ 新增 ] 菜单配置支持空菜单(项目开发的时候有可能需要先把菜单做好查看效果)
|
||||
* [ 优化 ] 页面左侧菜单滚动条优化
|
||||
* [ 修复 ] CSS 边距工具类都加上了 `!important` 来保证在覆盖样式时生效
|
||||
* [ 修复 ] IE11 兼容性修复
|
||||
|
||||
写这篇文章的时候心情竟然出奇地平静,终于发新版了,总算松了一口气...
|
||||
|
||||
### 下阶段的计划:
|
||||
|
||||
* ice 版本
|
||||
* bug 修复
|
||||
|
||||
## 项目地址
|
||||
|
||||
| 地址 | 描述 |
|
||||
| --- | --- |
|
||||
| [团队主页](https://github.com/d2-projects) | D2Admin 所属的团队主页 |
|
||||
| [中文文档](http://d2admin.fairyever.com/zh/) | 中文文档 |
|
||||
| [完整版 预览地址](https://fairyever.gitee.io/d2-admin-preview/#/index) | 完整版 预览地址 |
|
||||
| [完整版 github](https://github.com/d2-projects/d2-admin) | 完整版 Github 仓库 |
|
||||
| [完整版 码云](https://gitee.com/fairyever/d2-admin) | 完整版 码云镜像仓库 |
|
||||
| [简化版 预览地址](https://fairyever.gitee.io/d2-admin-start-kit-preview/#/index) | 简化版 预览地址 |
|
||||
| [简化版 github](https://github.com/d2-projects/d2-admin-start-kit) | 简化版 Github 仓库 |
|
||||
| [简化版 码云](https://gitee.com/fairyever/d2-admin-start-kit) | 简化版 码云镜像仓库 |
|
||||
|
||||
在最后,如果你看完了,并且觉得还不错,希望可以到 [项目主页](https://github.com/d2-projects/d2-admin) 上点一个 **star** 作为你对这个项目的认可与支持,谢谢。
|
||||
|
||||
|
|
@ -1 +0,0 @@
|
|||
05ccbdf3de53a90253dd94be5732f56d8b7235e9
|
||||
|
|
@ -1,226 +0,0 @@
|
|||
# D2Admin ICE 发布
|
||||
|
||||
# 可视化搭建前端工程 - 阿里飞冰了解一下
|
||||
|
||||
飞冰官方网站 [https://alibaba.github.io/ice](https://alibaba.github.io/ice)
|
||||
|
||||
每次新做一个项目,无论大小都要干这些事:
|
||||
|
||||
* 框架选型
|
||||
* 初始化脚手架(比如使用 **create-react-app** 或者 **vue-cli**)
|
||||
* 也可能你选择了开源脚手架,克隆仓库
|
||||
* 四处找轮子
|
||||
* 安装各种依赖
|
||||
* 新建页面,写逻辑
|
||||
* 设计菜单
|
||||
* 设计路由
|
||||
* 新建页面的时候去复制旧的页面修改
|
||||
* 把新的页面注册路由,注册菜单
|
||||
* 做完了这个页面做下个,新建文件,复制代码,注册路由...
|
||||
|
||||
**烦不烦?要优雅!**
|
||||
|
||||
今天介绍阿里的开源产品:[飞冰](https://alibaba.github.io/ice)
|
||||
|
||||
## 飞冰是什么
|
||||
|
||||

|
||||
|
||||
"海量可复用物料,通过 GUI 工具极速构建中后台应用"。
|
||||
|
||||
这句 slogan 还是非常准确的:
|
||||
|
||||
飞冰是一套综合解决方案,用来极速构建中后台应用(其实也可以做非中后台应用)。
|
||||
|
||||
可以做到极速是通过『海量可复用物料』和『GUI 开发工具』实现的。
|
||||
|
||||
使用飞冰的开发工作流是这样的:
|
||||
|
||||
`下载 GUI 工具并安装` => `可视化的选择我们提供的初始模板创建项目` => `可视化的创建页面并选择我们提供的 100+ 高质量可复用区块` => `生成代码进行二次开发` => `开发完成之后点击打包编译出 HTML、JS、CSS 文件` => `部署使用`
|
||||
|
||||
在整个流程中,你可以完全通过 GUI 工具点击操作,无需安装配置 Node 环境等前端开发工具,也无需配置 webpack 等构建脚本,我们已经按照淘宝前端最佳实践全部内置。此外,绝大部分的业务需求,我们都已经开发出对应的物料,可以通过 GUI 进行可视化的拼装,尽可能避免你去编写额外的业务逻辑。
|
||||
|
||||
### 物料源
|
||||
|
||||
下面是一张很长的图片,为了体积考虑这张图比较模糊,但是可以感受一下 ICE 的区块数量:
|
||||
|
||||
> 原始网页链接 [https://alibaba.github.io/ice/block](https://alibaba.github.io/ice/block)
|
||||
|
||||

|
||||
|
||||
目前为止 ICE 已经支持 react vue Angular 三大主流框架的物料资源
|
||||
|
||||

|
||||
|
||||
打比方我现在项目需要富文本编辑器,可以看到区块里提供了三款编辑器可供选择
|
||||
|
||||

|
||||
|
||||
所有的这些,都是使用 GUI 就可以加入到项目中使用的,下面将会展示如何从安装 iceworks 客户端到在项目中新建页面。
|
||||
|
||||
## 如何使用
|
||||
|
||||
### 安装
|
||||
|
||||
> 为了真实演示,特意删掉了以前安装的 app
|
||||
|
||||
演示系统为 macOS,iceworks 支持 Windows 版本。
|
||||
|
||||
iceworks 下载地址 [https://alibaba.github.io/ice/iceworks](https://alibaba.github.io/ice/iceworks)
|
||||
|
||||

|
||||
|
||||
稍微等待了一会儿,下载完成。安装后得到了这样一个 App:
|
||||
|
||||

|
||||
|
||||
### 上手
|
||||
|
||||
安装后打开看到一个很简单的界面:
|
||||
|
||||

|
||||
|
||||
切换到模板标签可以看到飞冰目前提供的脚手架列表:
|
||||
|
||||

|
||||
|
||||
区块标签可以看到区块列表
|
||||
|
||||

|
||||
|
||||
插件
|
||||
|
||||

|
||||
|
||||
设置
|
||||
|
||||

|
||||
|
||||
这就是表面上所有的功能,下面我们来建一个项目体验一下
|
||||
|
||||
### 新建 vue 项目
|
||||
|
||||
飞冰是从 react 开始做的,现在 vue 和 Angular 物料源还比较少,我们切换到 vue 选项卡里...
|
||||
|
||||

|
||||
|
||||
**是不是混进了什么奇怪的东西!**
|
||||
|
||||

|
||||
|
||||
没错,D2Admin 出了 ICE 版!
|
||||
|
||||
在我和阿里的开发者**一个月**的对接之后,D2Admin ICE 诞生了,作为飞冰平台上第一个**非官方 vue 脚手架**,D2Admin ICE 承担的希望还是很大的!下面使用这个脚手架做演示,展示如何**不写代码**建页面,**不写代码**出图表!
|
||||
|
||||
选择 D2Admin ICE 作为起始模板后会让我们填写项目保存地址:
|
||||
|
||||

|
||||
|
||||
填写完成后开始下载模板,下载后会提示我是否要立刻安装依赖:
|
||||
|
||||

|
||||
|
||||
为了避免动态图过大我没有录安装过程:
|
||||
|
||||

|
||||
|
||||
在写上面的时候已经提示我依赖安装完成了(很人性化有没有):
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
ennn...没毛病。
|
||||
|
||||
### 启动项目
|
||||
|
||||
点击 `启动调试服务` 会在本地打开调试服务,vue 项目默认执行的是 `npm start`:
|
||||
|
||||

|
||||
|
||||
打开显示的链接,可以看到项目已经稳稳地跑起来了:
|
||||
|
||||

|
||||
|
||||
D2Admin ICE 实质上是 [d2-admin-start-kit](https://github.com/d2-projects/d2-admin-start-kit) 的特别版本,为适应 ICE 的逻辑修改了一部分代码,可以看到模板十分干净,没有了任何完整版的示例 demo:
|
||||
|
||||

|
||||
|
||||
关闭 ICE 内集成的终端后可以看到项目面板,可以显示出现在有哪些页面,安装了哪些依赖等:
|
||||
|
||||

|
||||
|
||||
### 新建页面
|
||||
|
||||
点击 `新建页面` 会打开新建页面界面:
|
||||
|
||||

|
||||
|
||||
随便选择一个区块新建一个页面(中间的等待时间是 iceworks 在从 npm 下载区块代码)
|
||||
|
||||

|
||||
|
||||
选择区块:
|
||||
|
||||

|
||||
|
||||
效果:
|
||||
|
||||

|
||||
|
||||
下面尝试一下选择多个区块:
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
自动生成了菜单:
|
||||
|
||||

|
||||
|
||||
页面效果:
|
||||
|
||||

|
||||
|
||||
检查一下自动生成的代码目录:
|
||||
|
||||

|
||||
|
||||
自动生成的页面组件:
|
||||
|
||||

|
||||
|
||||
自动生成的样式文件:
|
||||
|
||||

|
||||
|
||||
该有的都有了,不该有的也有了,连生命周期钩子都帮你写了一遍!
|
||||
|
||||
## 结语
|
||||
|
||||
演示一遍下来后,我生成了两个页面,没有写一行代码,剩下的操作就是修修改改,把多个页面都需要的组件提取一下,做做修改工作。
|
||||
|
||||
D2Admin 团队也会在以后的时间里尽力和 ICE 团队合作开发 vue 公用区块,加速 ICE 的 vue 生态建设,也希望众多的 vuer 都可以参与进来,平台有了,社区繁荣起来才是对大家都有利的事情。
|
||||
|
||||
D2Admin ICE 将会保持和 D2Admin Start Kit 一致更新,如果你看到完整版的 D2Admin 实在喜欢,从完整版做减法也未尝不可 :)
|
||||
|
||||
## D2 Projects
|
||||
|
||||
| 地址 | 描述 |
|
||||
| --- | --- |
|
||||
| [团队主页](https://github.com/d2-projects) | D2Admin 所属的团队主页 |
|
||||
| [中文文档](http://d2admin.fairyever.com/zh/) | 中文文档 |
|
||||
| [D2Admin 完整版 预览地址](https://fairyever.gitee.io/d2-admin-preview/#/index) | 完整版 预览地址 |
|
||||
| [D2Admin 完整版 github](https://github.com/d2-projects/d2-admin) | 完整版 Github 仓库 |
|
||||
| [D2Admin 完整版 码云](https://gitee.com/fairyever/d2-admin) | 完整版 码云镜像仓库 |
|
||||
| [D2Admin 简化版 预览地址](https://fairyever.gitee.io/d2-admin-start-kit-preview/#/index) | 简化版 预览地址 |
|
||||
| [D2Admin 简化版 github](https://github.com/d2-projects/d2-admin-start-kit) | 简化版 Github 仓库 |
|
||||
| [D2Admin 简化版 码云](https://gitee.com/fairyever/d2-admin-start-kit) | 简化版 码云镜像仓库 |
|
||||
|
||||
开源项目组官方公众号
|
||||
|
||||
<img src="http://fairyever.qiniudn.com/20180801111123.jpg" style="width: 200px;"/>
|
||||
|
||||
[本文在项目文档中收录位置](http://d2admin.fairyever.com/zh/article/update/ice-1.1.2.html)
|
||||
|
||||
在最后,如果你看完了,并且觉得还不错,希望可以到 [项目主页](https://github.com/d2-projects/d2-admin) 上点一个 **star** 作为你对这个项目的认可与支持,谢谢。
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
# 组件概述
|
||||
|
||||
d2-admin(以下简称 d2admin)封装(或者集成第三方)了一些组件,方便开发者进行开发,具体组件文档请从左侧列表进入
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
# 图表 [ v-charts ] 新
|
||||
|
||||
::: tip
|
||||
`1.1.0` 版本使用的是 `G2` 图表库,`1.1.3` 开始使用 `v-charts`
|
||||
:::
|
||||
|
||||
## 介绍
|
||||
|
||||
在使用 echarts 生成图表时,经常需要做繁琐的数据类型转化、修改复杂的配置项,v-charts 的出现正是为了解决这个痛点。基于 Vue2.0 和 echarts 封装的 v-charts 图表组件,只需要统一提供一种对前后端都友好的数据格式设置简单的配置项,便可轻松生成常见的图表。
|
||||
|
||||
[v-charts 文档](https://v-charts.js.org/#/)
|
||||
|
||||
处于对用户使用方便的角度考虑,从 `1.1.3` 开始使用 v-charts。项目中已经安装并注册完毕 v-charts,你可以直接使用
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
# 图表 [ G2 ] 旧
|
||||
|
||||
::: tip
|
||||
此文档仅对 `1.1.0` 及其以下版本有效,`1.1.1` 开始变更了图表库
|
||||
:::
|
||||
|
||||
## 介绍
|
||||
|
||||
D2Admin 集成了由蚂蚁金服出品的 **G2** 图表库
|
||||
|
||||
## 实现方式
|
||||
|
||||
`src/components/charts/register.js` 为注册图表组件的文件
|
||||
|
||||
`src/components/charts/G2` 为图表组件存放位置
|
||||
|
||||
`src/components/charts/G2/mixins/G2.js` 是图表最主要的文件,这是一个所有的图表组件都会使用的 mixin,这个 mixin 主要有以下用途
|
||||
|
||||
- 将 G2 和 DataSet 绑定到 data 上,方便组件使用,省去重复 `import G2 from '@antv/g2'` 等
|
||||
- 将 [G2 Chart类](http://antv.alipay.com/zh-cn/g2/3.x/api/chart.html#_Chart) 的属性全部暴露为 Vue 组件参数,这些参数会在初始化图表时用到
|
||||
- 提供了额外的设置参数,比如自动高度,自动初始化,初始化延时
|
||||
- 关闭 G2 的体验改进计划打点请求
|
||||
- data 上的 chart 对象
|
||||
- 自动初始化(或者不初始化)图表
|
||||
- `creatChart` 方法,根据参数设置生成 data 上的 chart 对象
|
||||
- `resize` 方法
|
||||
|
||||
在图表组件中使用这个 mixin 示例
|
||||
|
||||
``` vue
|
||||
<template>
|
||||
<!-- 如果需要开启自动高度功能 需要在这里设置 style="height: 100%;" -->
|
||||
<div ref="chart" style="height: 100%;"></div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// 引入公用 mixin
|
||||
import G2 from '@/components/charts/G2/mixins/G2.js'
|
||||
export default {
|
||||
mixins: [
|
||||
G2
|
||||
],
|
||||
methods: {
|
||||
// 初始化图表
|
||||
init () {
|
||||
// mixin 中提供 creatChart 方法,这部分每个图表都一样
|
||||
this.creatChart()
|
||||
// 本组件的特殊设置 这部分每个图表不一样 你只需要改这部分内容
|
||||
this.chart.source(this.data)
|
||||
this.chart.coord().transpose()
|
||||
this.chart.interval().position('x*y')
|
||||
// 最后一步 渲染图表 这部分每个图表都一样
|
||||
this.chart.render()
|
||||
},
|
||||
// 数据源改变 重新渲染新的数据
|
||||
changeData () {
|
||||
this.chart.changeData(this.data)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
```
|
||||
|
||||
上面的代码段展示了如何使用 mixin 快速制作一个图表组件,只需根据某个图表的个性化需要,在组件中重新定义 `init` 和 `changeData` 方法即可
|
||||
|
||||
你可以修改这个 mixin 去实现更多的功能,同时影响所有的图表组件
|
||||
|
||||
::: tip
|
||||
这只仅仅是作者个人对于图表封装的一个实现思路
|
||||
:::
|
||||
|
||||
## 为什么没有选择其他产品
|
||||
|
||||
G2 完全可以胜任一般的后台界面报表图表需求,而且官网文档清晰友好
|
||||
|
||||
如果你需要更酷炫的图表,也完全可以剔除集成的库,换用 百度的[echarts](http://echarts.baidu.com/) 或者超级强大的 [d3.js](https://d3js.org/)
|
||||
|
|
@ -1 +0,0 @@
|
|||
be315dc4b20db4a72f9543b102c601365693b67d
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
# 数字动画
|
||||
|
||||
## 参数
|
||||
|
||||
| 参数名 | 介绍 | 必选 | 值类型 | 可选值 | 默认值 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| start | 起始值 | 非 | Number | | 0 |
|
||||
| end | 结束值 | 是 | Number | | 0 |
|
||||
| decimals | 小数位数 | 非 | Number | | 0 |
|
||||
| duration | 持续时间 | 非 | Number | | 2 |
|
||||
| options | 设置项 | 非 | Object | | 空对象 |
|
||||
| callback | 回调函数 | 非 | Function | | 空函数 |
|
||||
|
||||
## 示例
|
||||
|
||||
``` vue
|
||||
// 基本使用方法
|
||||
<d2-count-up :end="100"/>
|
||||
|
||||
// 设置始末值
|
||||
<d2-count-up :start="14" :end="100"/>
|
||||
|
||||
// 设置动画时间
|
||||
<d2-count-up :end="100" :decimals="2"/>
|
||||
```
|
||||
|
||||
组件会在页面上渲染 `<span>` 标签
|
||||
|
||||
组件根据 [countUp.js](https://github.com/inorganik/countUp.js) 封装,`options` 参数详见原始插件文档
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
# 代码高亮
|
||||
|
||||
## 参数
|
||||
|
||||
| 参数名 | 介绍 | 必选 | 值类型 | 可选值 | 默认值 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| code | 代码字符串 | 非 | String | | console.log('you lost code prop') |
|
||||
| format-html | 是否格式化 HTML | 非 | Boolean | | false |
|
||||
|
||||
::: tip
|
||||
format 建议只在内容为 HTML 的时候打开,如果内容不是 HTML,设置为 true 会有负面效果
|
||||
:::
|
||||
|
||||
## 示例
|
||||
|
||||
``` vue
|
||||
<d2-highlight code="alert('Hello')"/>
|
||||
```
|
||||
|
||||
::: tip
|
||||
本框架只是提供代码高亮的简单实现,如需实现更高级的设置请修改组件代码
|
||||
:::
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
# 图标 - 选择器
|
||||
|
||||
## 参数
|
||||
|
||||
| 参数名 | 介绍 | 必选 | 值类型 | 可选值 | 默认值 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| value | 绑定的值,可以使用 v-model | 非 | String | | |
|
||||
| placeholder | 占位符,显示在未选择之前的按钮和输入框中 | 非 | String | | 请选择 |
|
||||
| placement | 界面探出方向 | 非 | String | 同 Popover 组件 placement 参数 | right |
|
||||
| clearable | 是否允许清空 | 非 | Boolean | | true |
|
||||
| userInput | 是否允许用户自由输入 | 非 | Boolean | | false |
|
||||
| autoClose | 是否在选择后自动关闭 | 非 | Boolean | | true |
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
# 图标 - SVG
|
||||
|
||||
## 参数
|
||||
|
||||
| 参数名 | 介绍 | 必选 | 值类型 | 可选值 | 默认值 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| name | 图标名称 | 非 | String | src/assets/icons/svg 中 .svg 文件名 | 空 |
|
||||
|
||||
## 使用方法
|
||||
|
||||
首先将下载的 .svg 图标放入 `src/assets/icons/svg` 文件夹下
|
||||
|
||||
然后使用组件
|
||||
|
||||
``` vue
|
||||
<d2-icon-svg name="刚才的svg文件名"/>
|
||||
```
|
||||
|
||||
## 获取已经注册的所有图标
|
||||
|
||||
你已经发现了,只需要将图标文件放入项目中就会自动注册
|
||||
|
||||
这是因为已经对 `webpack` 和 `svg-sprite-loader` 进行了相关设置,`src/assets/icons/svg` 文件夹中的图标会自动注册到项目中,文件全部打包成 svg-sprite,名称注册到 `Vue.$IconSvg` 属性中
|
||||
|
||||
所以如果你需要检查项目中已经注册的所有图标,可以通过如下方式
|
||||
|
||||
``` js
|
||||
// 在 vue 单文件组件中
|
||||
console.log(this.$IconSvg)
|
||||
```
|
||||
|
||||
## 参考
|
||||
|
||||
演示图标来源 [iconfont.cn @龙正昆《常用的50个4px双色图标库》](http://iconfont.cn/collections/detail?spm=a313x.7781069.1998910419.d9df05512&cid=4878)
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
# 图标
|
||||
|
||||
## 参数
|
||||
|
||||
| 参数名 | 介绍 | 必选 | 值类型 | 可选值 | 默认值 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| name | 图标名称 | 非 | String | font-awesome 所有图标名 | font-awesome |
|
||||
|
||||
## 使用方法
|
||||
|
||||
基本
|
||||
|
||||
``` vue
|
||||
// 这样用没有毛病 但是也没什么用
|
||||
<d2-icon/>
|
||||
|
||||
// 指定图标名称
|
||||
<d2-icon name="github"/>
|
||||
|
||||
// 设置行内样式
|
||||
<d2-icon name="github" style="font-size: 100px;"/>
|
||||
|
||||
// 设置 class
|
||||
<d2-icon name="github" class="icon-class-demo"/>
|
||||
```
|
||||
|
||||
这个组件只是简化了写法而已
|
||||
|
||||
``` vue
|
||||
<d2-icon name="github"/>
|
||||
// 等同于
|
||||
<i class="fa fa-github" aria-hidden="true"></i>
|
||||
```
|
||||
|
||||
## 参考
|
||||
|
||||
图标索引
|
||||
|
||||
[Font Awesome 中文网](http://www.fontawesome.com.cn/faicons/)
|
||||
|
||||
[fontawesome.com](https://fontawesome.com/icons?d=gallery)
|
||||
|
|
@ -1 +0,0 @@
|
|||
3a5bb0f2628d9251bbe7474c0535258784cf770b
|
||||
|
|
@ -1,88 +0,0 @@
|
|||
# markdown 渲染器
|
||||
|
||||
## 参数
|
||||
|
||||
| 参数名 | 介绍 | 必选 | 值类型 | 可选值 | 默认值 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| url | markdown文件地址 | 非 | String | | 无 |
|
||||
| source | markdown内容 | 非 | String | | 无 |
|
||||
| highlight | 代码高亮 | 非 | Boolean | | false |
|
||||
| baidupan | 百度网盘分享链接显示优化 | 非 | Boolean | | true |
|
||||
|
||||
## 使用方法
|
||||
|
||||
加载一个.md文件
|
||||
|
||||
``` vue
|
||||
<d2-markdown url="/static/md/xxxx.md"/>
|
||||
```
|
||||
|
||||
加载资源
|
||||
|
||||
```vue
|
||||
<template>
|
||||
<d2-markdown :source="doc"/>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const doc = `
|
||||
# Header
|
||||
|
||||
## title
|
||||
|
||||
text`.trim()
|
||||
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
doc
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
```
|
||||
|
||||
D2Admin 已经帮你配置好 webpack,你可以使用以下方式加载 markdown 文件
|
||||
|
||||
```vue
|
||||
<template>
|
||||
<d2-markdown :source="doc"/>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import doc from './md/doc.md'
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
doc
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
```
|
||||
|
||||
## 百度网盘分享链接优化
|
||||
|
||||
当书写类似下面的分享链接时
|
||||
|
||||
::: tip
|
||||
需要 `baidupan = true`
|
||||
:::
|
||||
|
||||
```
|
||||
普通分享链接
|
||||
|
||||
> https://pan.baidu.com/s/1kW6uUwB
|
||||
|
||||
私密分享链接
|
||||
|
||||
> 链接: https://pan.baidu.com/s/1ggFW21l 密码: 877y
|
||||
```
|
||||
|
||||
markdown 中引用部分的文本由于被识别为百度云的分享链接,所以不会被当做 `blockquote` 渲染(非百度云链接的引用行不会改变),会以一种特别的块来显示,效果见下
|
||||
|
||||

|
||||
|
||||
::: tip
|
||||
了解 D2Admin 是如何在 markdown 中匹配百度云链接的? [查看源码](https://github.com/d2-projects/d2-admin/blob/master/src/components/core/d2-markdown/index.vue)
|
||||
:::
|
||||
|
|
@ -1,129 +0,0 @@
|
|||
# 更新日志
|
||||
|
||||
## v1.1.8
|
||||
|
||||
* [ 新增 ] 增加了错误收集和日志收集功能
|
||||
* [ 新增 ] 增加了一个表格示例页面
|
||||
* [ 修改 ] bug 修复
|
||||
|
||||
## v1.1.7
|
||||
|
||||
* [ 修改 ] 多标签页右键菜单 bug 修复
|
||||
|
||||
## v1.1.6
|
||||
|
||||
* [ 新增 ] 新增加了多页控制组件 tab 按钮上的右键操作菜单,现在你可以在 D2Admin 中像使用浏览器一样操作多标签页
|
||||
|
||||
## v1.1.5
|
||||
|
||||
* [ 修改 ] vue-cli3 项目重构,目录调整
|
||||
* [ 修改 ] 全局状态管理设计优化
|
||||
* [ 修改 ] 多标签页操作全部转移至 vuex
|
||||
* [ 修改 ] 修复了多标签页无法清除缓存的 bug
|
||||
* [ 修改 ] bug fixed [#38](https://github.com/d2-projects/d2-admin/issues/38)
|
||||
* [ 修改 ] bug fixed [#41](https://github.com/d2-projects/d2-admin/issues/41)
|
||||
* [ 修改 ] 侧边栏和顶栏菜单数据控制转移到 vuex 集中管理
|
||||
* [ 修改 ] 页面最小宽度设置
|
||||
* [ 新增 ] d2-highlight 组件新增 format-html 参数
|
||||
* [ 新增 ] 自动获取用户浏览器 UA
|
||||
* [ 新增 ] playground 新增浏览器信息查看界面
|
||||
* [ 修改 ] 登陆注销逻辑移至 vuex
|
||||
* [ 新增 ] 登陆页面新增快速选择用户示例
|
||||
* [ 新增 ] 侧边栏切换控制辑移至 vuex
|
||||
* [ 新增 ] 判断手机浏览自动跳转至提示页面
|
||||
* [ 修改 ] 侧边栏弹出菜单尺寸缩小以容纳更多菜单
|
||||
* [ 修改 ] d2-container 组件重构,每种模式现都支持 scroll 属性以及 header footer 插槽
|
||||
* [ 修改 ] 修复全屏按钮退出全屏状态不更新的 bug
|
||||
* [ 修改 ] 修复多标签页缓存逻辑 bug
|
||||
* [ 新增 ] 持久化存储根据系统版本区分数据,防止因更新导致数据错乱
|
||||
* [ 新增 ] 注销画面灰度效果
|
||||
* [ 新增 ] .d2-card 样式类,可以让 el-card 具有跟随主题变化的样式
|
||||
* [ 新增 ] ElementUI 表格组件全部示例移植
|
||||
* [ 新增 ] 全局状态管理 playground
|
||||
* [ 新增 ] 用户私有持久化数据 playground
|
||||
* [ 新增 ] 侧边栏和顶栏菜单设置 playground
|
||||
* [ 新增 ] d2-container 组件 card 模式下 footer 样式优化
|
||||
* [ 修改 ] 侧边栏折叠模式下弹出菜单尺寸缩小
|
||||
* [ 修改 ] 默认取消了侧边栏的自定义滚动条显示
|
||||
* [ 新增 ] cookie 读写包装
|
||||
* [ 新增 ] 持久化存储读写包装,提供快速操作当前用户数据的 mutation
|
||||
* [ 新增 ] 持久化存储读写包装,提供快速操作所有用户共享数据的 mutation
|
||||
* [ 新增 ] 侧边栏折叠状态现在会根据用户区分记录,刷新页面保留之前的状态
|
||||
|
||||
## v1.1.4
|
||||
|
||||
* [ 修改 ] 全局状态管理设计优化
|
||||
* [ 修改 ] 主题调优
|
||||
* [ 新增 ] playground 模块,方便测试和展示一些功能实现方式/调用方法
|
||||
* [ 新增 ] 灰度模式
|
||||
* [ 新增 ] 多页模式
|
||||
* [ 新增 ] 多页模式缓存
|
||||
* [ 新增 ] 多页模式快速关闭(关闭左侧 右侧 全部 其它)
|
||||
* [ 修改 ] 侧边栏滚动优化
|
||||
* [ 新增 ] `d2-container` 填充模式自定义滚动条
|
||||
* [ 新增 ] `d2-container` 组件卡片和隐形模式自定义滚动条
|
||||
* [ 新增 ] 现在页面标题可以根据路由做出对应变化了
|
||||
* [ 新增 ] 版本检查机制
|
||||
* [ 新增 ] `d2-container` 隐形模式支持 header 插槽
|
||||
* [ 新增 ] 版本检查可以设置为不显示提示框
|
||||
* [ 新增 ] 集成 json 查看组件
|
||||
* [ 新增 ] 添加了所有图表种类的演示页面
|
||||
* [ 修改 ] 修改布局方式,解决了在 Firefox 上 better-scroll 初始化拿不到正确高度的 bug
|
||||
* [ 新增 ] 右上角显示用户名,用户名持久存储
|
||||
|
||||
## v1.1.3
|
||||
|
||||
* [ 修复 ] 侧边栏在折叠时不显示的 bug
|
||||
* [ 新增 ] v-charts 插件
|
||||
* [ 新增 ] 一些演示图表(后续打算把 v-charts 文档上有示例性的演示都展示一下)
|
||||
* [ 修改 ] D2Admin 经典主题颜色调整
|
||||
* [ 新增 ] violet 主题
|
||||
* [ 新增 ] 菜单图标
|
||||
* [ 修改 ] 新制作了 Fork me 图片
|
||||
|
||||
## v1.1.2
|
||||
|
||||
* [ 修改 ] 删除了 G2 相关的依赖
|
||||
|
||||
## v1.1.1
|
||||
|
||||
* [ 修改 ] 删除了 G2 相关的代码(移除图表库)
|
||||
* [ 优化 ] 侧边栏取值逻辑
|
||||
|
||||
## v1.1.0
|
||||
|
||||
* [ 修改 ] 顶栏和侧边栏菜单新的结构生成方式,新的方案使用 数据 + 递归组件 实现无限制多级菜单
|
||||
* [ 修改 ] 路由注册回归最简单的写法
|
||||
* [ 修复 ] 首次加载 loading 样式类名和程序内类名冲突,新的加载类名使用 d2-app-loading 前缀
|
||||
* [ 修改 ] 所有类似 dd- 的样式前缀(包括自动注册图标的id前缀)统一改为 d2-
|
||||
* [ 修复 ] 修复 d2-highlight 组件和 d2-markdown 组件的样式冲突
|
||||
* [ 修改 ] 内置组件名称统一改为 d2- 前缀,统一使用横线连接 (kebab-case) 风格
|
||||
* [ 修改 ] 顶栏 logo 阴影删除
|
||||
* [ 新增 ] 主题系统
|
||||
* [ 新增 ] 三个主题,分别为 d2admin 经典,简约线条,流星
|
||||
* [ 修改 ] d2-markdown 组件 md 参数改名为 source
|
||||
* [ 修改 ] 删除了 d2-markdown 组件中图片的白色背景
|
||||
* [ 修改 ] 删除 timeago 插件,更换为更强大的 dayjs
|
||||
* [ 新增 ] Tomorrow Night Blue 主题
|
||||
* [ 修改 ] src/assets/style/public-class.scss 写法优化
|
||||
* [ 新增 ] [vue-bigdata-table](https://github.com/lison16/vue-bigdata-table)组件
|
||||
* [ 修复 ] 侧边栏内容超过一屏后显示错误
|
||||
* [ 新增 ] 自定义滚动条演示页面
|
||||
* [ 新增 ] 流星主题新增背景图片上层的半透明遮罩
|
||||
* [ 修复 ] 主题设置失效bug
|
||||
* [ 修复 ] router守卫验证登陆部分代码修改
|
||||
* [ 修复 ] d2-container 组件改为同步注册(之前的异步注册会有 mounted 生命周期问题,即 slot 内的页面在 mounted 生命周期内拿不到 dom)
|
||||
* [ 修复 ] d2-container 组件重构 flex 布局
|
||||
* [ 新增 ] 404 page
|
||||
* [ 新增 ] 顶栏联系方式
|
||||
* [ 新增 ] 右键菜单组件
|
||||
* [ 新增 ] 菜单配置支持空菜单(项目开发的时候有可能需要先把菜单做好查看效果)
|
||||
* [ 优化 ] 页面左侧菜单滚动条优化
|
||||
* [ 修复 ] CSS 边距工具类都加上了 `!important` 来保证在覆盖样式时生效
|
||||
* [ 修复 ] IE11 兼容性修复
|
||||
|
||||
## v1.0.0
|
||||
|
||||
[https://github.com/d2-projects/d2-admin/releases/tag/v1.0.0](https://github.com/d2-projects/d2-admin/releases/tag/v1.0.0)
|
||||
|
||||
这是第一个版本,还有一点小问题,但是已经可用
|
||||
|
|
@ -1 +0,0 @@
|
|||
f7a47389e6c0773e9d218227678ebb8850ea87e8
|
||||
|
|
@ -1 +0,0 @@
|
|||
27e431bd9e4752dd51fe827a1281d606bd7bdf07
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
---
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# 借鉴 D2Admin 的项目
|
||||
|
||||
以下开源项目中借鉴了 D2Admin 代码。
|
||||
|
||||
本页面不明确指出哪些是借鉴哪些是抄袭,由读者自行判断。
|
||||
|
||||
本页面作用是指明哪些东西是 D2Admin 原创的,避免大家看到和其它项目有类似设计时发生误会以为 D2 抄袭他人(误会发生过)。
|
||||
|
||||
::: tip
|
||||
图片右键在新标签页打开查看大图
|
||||
:::
|
||||
|
||||
**此页面截图都会标注日期,只新增,不删除,只代表当时日期的状态**
|
||||
|
||||
## nx-admin
|
||||
|
||||
[https://github.com/mgbq/nx-admin](https://github.com/mgbq/nx-admin)
|
||||
|
||||
### 2018年7月29日
|
||||
|
||||
* 项目首页已经放置 D2Admin 链接
|
||||
|
||||
| D2Admin | nx-admin |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|
||||
## avue
|
||||
|
||||
[https://github.com/nmxiaowei/avue](https://github.com/nmxiaowei/avue)
|
||||
|
||||
### 2018年7月29日
|
||||
|
||||
* 项目首页已经放置 D2Admin 链接
|
||||
|
||||
| D2Admin | avue |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|
|
@ -1 +0,0 @@
|
|||
532775ff4f2aa6aa090e14f5d53c5d59bd7d960e
|
||||
|
|
@ -23,23 +23,13 @@ D2Admin 是一个开源的管理系统前端集成方案
|
|||
[码云仓库](https://gitee.com/fairyever/d2-admin-start-kit) |
|
||||
[预览地址](https://fairyever.gitee.io/d2-admin-start-kit-preview/#/index)
|
||||
|
||||

|
||||
|
||||
D2Admin 完整版集成了很多的插件和组件,首次加载会占用很多的时间,所以加入了首屏加载动画。
|
||||
|
||||
如果您欣赏 D2Admin 的设计风格,希望基于它开发您的管理系统,**建议使用 [d2-admin-start-kit 简化模板](https://github.com/d2-projects/d2-admin-start-kit)**,简化版模板保留了所有的系统功能,包括登陆注销,主题切换,图标,数据持久化等。其它不必要的组件和插件您可以参照 D2Admin 完整版自行加入。
|
||||
|
||||
如果您执意在完整版基础上开发,请您在发布之前一定要删除没有用到的代码,比如项目没有用到图表、示例、插件组件。
|
||||
|
||||
D2Admin 是完全开源免费的管理系统集成方案,由 [FairyEver](https://github.com/FairyEver) 工作之余完完成(希望您看到这里,可以移步 [Github](https://github.com/d2-projects/d2-admin) 点个 star 支持我),如果你也一样喜欢前端开发,欢迎加入我们的讨论/学习群,群内可以`提问答疑`,`分享学习资料`。
|
||||
|
||||

|
||||
|
||||
::: tip Thanks
|
||||
D2Admin 创建于2018年1月14日零点51分,四个月后在2018年5月26日正式发布,39天时间 star 突破 1k ,在此对所有的 D2Admin 支持者表示感谢,项目将会保持更新,如果你有想法、建议、或者问题欢迎加群讨论
|
||||
|
||||
—— 2018年7月5日
|
||||
:::
|
||||
D2Admin 是完全开源免费的管理系统集成方案,由 [FairyEver](https://github.com/FairyEver) 工作之余完完成(希望您看到这里,可以移步 [Github](https://github.com/d2-projects/d2-admin) 点个 star 支持我)。
|
||||
|
||||
## 功能
|
||||
|
||||
|
|
@ -153,4 +143,14 @@ npm run dev
|
|||
npm run build
|
||||
```
|
||||
|
||||
> 如果上述步骤出现错误,建议您升级 node 版本 > 8,如果有其它疑问请参考[常见问题](/zh/guide/question.html)
|
||||
> 如果上述步骤出现错误,建议您升级 node 版本 > 8,如果有其它疑问请参考[常见问题](/zh/guide/question.html)
|
||||
|
||||
## Thanks
|
||||
|
||||
D2Admin 创建于2018年1月14日零点51分,四个月后在2018年5月26日正式发布,39天时间 star 突破 1k ,在此对所有的 D2Admin 支持者表示感谢,项目将会保持更新,如果你有想法、建议、或者问题欢迎加群讨论
|
||||
|
||||
—— 2018年7月5日
|
||||
|
||||
star 破 2k
|
||||
|
||||
—— 2018年8月7日
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
sidebar: auto
|
||||
---
|
||||
|
||||
# 相关知识
|
||||
|
||||
介绍开发所需要的知识
|
||||
|
||||
## CSS
|
||||
|
||||
## SCSS
|
||||
|
||||
## JavaScript
|
||||
|
||||
## webpack
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
# 其它
|
||||
|
||||
这里主要是介绍一些其它的信息
|
||||
|
|
@ -1,103 +0,0 @@
|
|||
# CSS 工具类
|
||||
|
||||
## 样式
|
||||
|
||||
| 类名 | 效果 |
|
||||
| --- | --- |
|
||||
| `.d2-card` | 将该 class 添加至 el-card 组件上使其有跟随主题变化的样式 |
|
||||
|
||||
`.d2-card` 示例
|
||||
|
||||
``` vue
|
||||
<el-card shadow="never" class="d2-card">
|
||||
<template slot="header">header</template>
|
||||
body
|
||||
</el-card>
|
||||
<!-- 快看 我的边框和 header 边框会随着主题切换样式! -->
|
||||
```
|
||||
|
||||
## 文字
|
||||
|
||||
| 类名 | 效果 |
|
||||
| --- | --- |
|
||||
| `.d2-text-center` | 文字水平居中 |
|
||||
|
||||
## 浮动
|
||||
|
||||
| 类名 | 效果 |
|
||||
| --- | --- |
|
||||
| `.d2-fl` | 左浮动 |
|
||||
| `.d2-fr` | 右浮动 |
|
||||
| `.d2-clearfix` | 清除浮动 |
|
||||
|
||||
## 边距
|
||||
|
||||
| 类名 | 效果 |
|
||||
| --- | --- |
|
||||
| `.d2-m-0` | 外边距 0px |
|
||||
| `.d2-mt-0` | 上外边距 0px |
|
||||
| `.d2-mr-0` | 右外边距 0px |
|
||||
| `.d2-mb-0` | 下外边距 0px |
|
||||
| `.d2-ml-0` | 左外边距 0px |
|
||||
| `.d2-p-0` | 内边距 0px |
|
||||
| `.d2-pt-0` | 上内边距 0px |
|
||||
| `.d2-pr-0` | 右内边距 0px |
|
||||
| `.d2-pb-0` | 下内边距 0px |
|
||||
| `.d2-pl-0` | 左内边距 0px |
|
||||
| `.d2-m-5` | 外边距 5px |
|
||||
| `.d2-mt-5` | 上外边距 5px |
|
||||
| `.d2-mr-5` | 右外边距 5px |
|
||||
| `.d2-mb-5` | 下外边距 5px |
|
||||
| `.d2-ml-5` | 左外边距 5px |
|
||||
| `.d2-p-5` | 内边距 5px |
|
||||
| `.d2-pt-5` | 上内边距 5px |
|
||||
| `.d2-pr-5` | 右内边距 5px |
|
||||
| `.d2-pb-5` | 下内边距 5px |
|
||||
| `.d2-pl-5` | 左内边距 5px |
|
||||
| `.d2-m-10` | 外边距 10px |
|
||||
| `.d2-mt-10` | 上外边距 10px |
|
||||
| `.d2-mr-10` | 右外边距 10px |
|
||||
| `.d2-mb-10` | 下外边距 10px |
|
||||
| `.d2-ml-10` | 左外边距 10px |
|
||||
| `.d2-p-10` | 内边距 10px |
|
||||
| `.d2-pt-10` | 上内边距 10px |
|
||||
| `.d2-pr-10` | 右内边距 10px |
|
||||
| `.d2-pb-10` | 下内边距 10px |
|
||||
| `.d2-pl-10` | 左内边距 10px |
|
||||
| `.d2-m-15` | 外边距 15px |
|
||||
| `.d2-mt-15` | 上外边距 15px |
|
||||
| `.d2-mr-15` | 右外边距 15px |
|
||||
| `.d2-mb-15` | 下外边距 15px |
|
||||
| `.d2-ml-15` | 左外边距 15px |
|
||||
| `.d2-p-15` | 内边距 15px |
|
||||
| `.d2-pt-15` | 上内边距 15px |
|
||||
| `.d2-pr-15` | 右内边距 15px |
|
||||
| `.d2-pb-15` | 下内边距 15px |
|
||||
| `.d2-pl-15` | 左内边距 15px |
|
||||
| `.d2-m-20` | 外边距 20px |
|
||||
| `.d2-mt-20` | 上外边距 20px |
|
||||
| `.d2-mr-20` | 右外边距 20px |
|
||||
| `.d2-mb-20` | 下外边距 20px |
|
||||
| `.d2-ml-20` | 左外边距 20px |
|
||||
| `.d2-p-20` | 内边距 20px |
|
||||
| `.d2-pt-20` | 上内边距 20px |
|
||||
| `.d2-pr-20` | 右内边距 20px |
|
||||
| `.d2-pb-20` | 下内边距 20px |
|
||||
| `.d2-pl-20` | 左内边距 20px |
|
||||
|
||||
## 边距简写
|
||||
|
||||
20px 设定为通用边距 可以如下简写
|
||||
|
||||
| 类名 | 效果 |
|
||||
| --- | --- |
|
||||
| `.d2-m` | 外边距 20px |
|
||||
| `.d2-mt` | 上外边距 20px |
|
||||
| `.d2-mr` | 右外边距 20px |
|
||||
| `.d2-mb` | 下外边距 20px |
|
||||
| `.d2-ml` | 左外边距 20px |
|
||||
| `.d2-p` | 内边距 20px |
|
||||
| `.d2-pt` | 上内边距 20px |
|
||||
| `.d2-pr` | 右内边距 20px |
|
||||
| `.d2-pb` | 下内边距 20px |
|
||||
| `.d2-pl` | 左内边距 20px |
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
# 插件概述
|
||||
|
||||
d2-admin(以下简称 d2admin)封装(或者集成第三方)了一些插件,方便开发者进行开发,具体组件文档请从左侧列表进入
|
||||
|
||||
::: tip
|
||||
这里只列出一部分需要特别说明的插件,大部分集成的插件都可以在网络上找到官方文档
|
||||
:::
|
||||
|
|
@ -1,148 +0,0 @@
|
|||
# 表格导出
|
||||
|
||||
本框架集成了数据导出功能,并包装成插件
|
||||
|
||||
## 注册插件
|
||||
|
||||
``` js
|
||||
import pluginExport from '@/plugin/export'
|
||||
Vue.use(pluginExport)
|
||||
```
|
||||
|
||||
之后就可以在组件中使用 `this.$export` 来调用导出功能
|
||||
|
||||
::: tip
|
||||
d2admin 已经帮你注册好,可以直接使用,无需写上面的代码
|
||||
:::
|
||||
|
||||
## 导出 csv
|
||||
|
||||
此方法将数据以 `csv` 格式导出,并且返回一个 `Promise` 对象
|
||||
|
||||
使用
|
||||
|
||||
``` js
|
||||
this.$export.csv({
|
||||
columns,
|
||||
data
|
||||
})
|
||||
.then(() => {
|
||||
// ...可选回调
|
||||
})
|
||||
```
|
||||
|
||||
参数
|
||||
|
||||
| 参数名 | 介绍 | 必选 | 值类型 | 可选值 | 默认值 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| columns | 列 | 非 | Array | | 空数组 |
|
||||
| data | 行数据 | 非 | Array | | 空数组 |
|
||||
| title | 文件名 | 非 | String | | table |
|
||||
| noHeader | 不导出表头 | 非 | Boolean | | false |
|
||||
| separator | 数据分隔符 | 非 | String | | , |
|
||||
| quoted | 每项数据是否加引号 | 非 | Boolean | | false |
|
||||
|
||||
示例
|
||||
|
||||
``` js
|
||||
const columns = [
|
||||
{
|
||||
label: '姓名',
|
||||
prop: 'name'
|
||||
},
|
||||
{
|
||||
label: '年龄',
|
||||
prop: 'age'
|
||||
}
|
||||
]
|
||||
const data = [
|
||||
{
|
||||
name: 'lucy',
|
||||
age: 24
|
||||
},
|
||||
{
|
||||
name: 'bob',
|
||||
age: 26
|
||||
}
|
||||
]
|
||||
this.$export.csv({
|
||||
columns,
|
||||
data
|
||||
})
|
||||
```
|
||||
|
||||
## 导出 xlsx
|
||||
|
||||
此方法将数据以 `xlsx` 格式导出,并且返回一个 `Promise` 对象
|
||||
|
||||
使用
|
||||
|
||||
``` js
|
||||
this.$export.excel({
|
||||
columns,
|
||||
data
|
||||
})
|
||||
.then(() => {
|
||||
// ...可选回调
|
||||
})
|
||||
```
|
||||
|
||||
参数
|
||||
|
||||
| 参数名 | 介绍 | 必选 | 值类型 | 可选值 | 默认值 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| columns | 列 | 非 | Array | | 空数组 |
|
||||
| data | 行数据 | 非 | Array | | 空数组 |
|
||||
| title | 文件名 | 非 | String | | table |
|
||||
|
||||
示例
|
||||
|
||||
``` js
|
||||
const columns = [
|
||||
{
|
||||
label: '姓名',
|
||||
prop: 'name'
|
||||
},
|
||||
{
|
||||
label: '年龄',
|
||||
prop: 'age'
|
||||
}
|
||||
]
|
||||
const data = [
|
||||
{
|
||||
name: 'lucy',
|
||||
age: 24
|
||||
},
|
||||
{
|
||||
name: 'bob',
|
||||
age: 26
|
||||
}
|
||||
]
|
||||
this.$export.excel({
|
||||
columns,
|
||||
data
|
||||
})
|
||||
```
|
||||
|
||||
## 导出 txt
|
||||
|
||||
此方法将数据以 `txt` 格式导出,并且返回一个 `Promise` 对象
|
||||
|
||||
使用
|
||||
|
||||
``` js
|
||||
this.$export.txt({
|
||||
text: '文本内容',
|
||||
title: '文件名'
|
||||
})
|
||||
.then(() => {
|
||||
// ...可选回调
|
||||
})
|
||||
```
|
||||
|
||||
参数
|
||||
|
||||
| 参数名 | 介绍 | 必选 | 值类型 | 可选值 | 默认值 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| text | 文件内容 | 非 | String | | 空 |
|
||||
| title | 文件名 | 非 | String | | 文本 |
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
# 表格导入
|
||||
|
||||
本框架集成了数据导入功能,并包装成插件
|
||||
|
||||
## 注册插件
|
||||
|
||||
``` js
|
||||
import pluginImport from '@/plugin/import'
|
||||
Vue.use(pluginImport)
|
||||
```
|
||||
|
||||
之后就可以在组件中使用 `this.$import` 来调用导出功能
|
||||
|
||||
::: tip
|
||||
d2admin 已经帮你注册好,可以直接使用,无需写上面的代码
|
||||
:::
|
||||
|
||||
## 导入 csv
|
||||
|
||||
导入csv文件,并且返回一个 `Promise` 对象
|
||||
|
||||
``` js
|
||||
// 在选择文件后调用
|
||||
handleUpload (file) {
|
||||
this.$import.csv(file)
|
||||
.then(res => {
|
||||
this.table.columns = Object.keys(res.data[0]).map(e => ({
|
||||
label: e,
|
||||
prop: e
|
||||
}))
|
||||
this.table.data = res.data
|
||||
})
|
||||
// 阻止默认的上传
|
||||
return false
|
||||
}
|
||||
```
|
||||
|
||||
## 导入 xlsx
|
||||
|
||||
导入xlsx文件,并且返回一个 `Promise` 对象
|
||||
|
||||
**注意 导入的表格文件第一行应为表头**
|
||||
|
||||
参考下述示例使用
|
||||
|
||||
``` js
|
||||
// 在选择文件后调用
|
||||
handleUpload (file) {
|
||||
this.$import.xlsx(file)
|
||||
.then(({header, results}) => {
|
||||
// header 为表头
|
||||
// results 为内容
|
||||
this.table.columns = header.map(e => {
|
||||
return {
|
||||
label: e,
|
||||
prop: e
|
||||
}
|
||||
})
|
||||
this.table.data = results
|
||||
})
|
||||
// 阻止默认的上传
|
||||
return false
|
||||
}
|
||||
```
|
||||
|
|
@ -1,124 +0,0 @@
|
|||
# 多国语
|
||||
|
||||
多国语插件
|
||||
|
||||
::: tip
|
||||
此文档仅限于演示如何在 `D2Admin` 中使用多国语言设置
|
||||
:::
|
||||
|
||||
公用的语言设置建议放在 `src/i18n` 下
|
||||
|
||||
i18n 文件夹结构如下所示
|
||||
|
||||
```
|
||||
|__index.js // 主文件
|
||||
|__lang // 语言配置文件夹
|
||||
| |__cn // 中文
|
||||
| | |__index.js // 中文 公用配置
|
||||
| |__ja // 日语
|
||||
| | |__index.js // 日语 公用配置
|
||||
| |__en // 英语
|
||||
| | |__index.js // 英语 公用配置
|
||||
```
|
||||
|
||||
在 `src/i18n/index.js` 中导入同级lang文件夹内的语言设置,并导出一个新的 `VueI18n` 实例供 `main.js` 使用
|
||||
|
||||
``` js
|
||||
import i18n from './i18n'
|
||||
new Vue({
|
||||
el: '#app',
|
||||
store,
|
||||
i18n, // 使用 i18n
|
||||
router,
|
||||
template: '<App/>',
|
||||
components: { App }
|
||||
})
|
||||
```
|
||||
|
||||
## 使用
|
||||
|
||||
使用 `$t('路径')`
|
||||
|
||||
``` vue
|
||||
<PageHeader
|
||||
slot="header"
|
||||
:title="`${$t('pub.pageHeader.demo')} 1`"
|
||||
url="http://kazupon.github.io/vue-i18n/en/">
|
||||
</PageHeader>
|
||||
```
|
||||
|
||||
## 局部配置
|
||||
|
||||
有时候我们只希望在某个文件中配置这个组件的多国语言,如果所有的语言设置都放在 `d2-admin/src/i18n` 中会造成混乱,不易维护
|
||||
|
||||
`D2Admin` 已经替你安装好了 `vue-i18n-loader`,可以方便地在单文件组件中使用
|
||||
|
||||
示例
|
||||
|
||||
``` vue
|
||||
<i18n src="./lang.json"></i18n>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<el-tag>{{$t('hello')}}</el-tag>
|
||||
<p>{{$t('check.title')}}</p>
|
||||
<el-checkbox-group v-model="check">
|
||||
<el-checkbox label="a">{{$t('check.label.Beijing')}}</el-checkbox>
|
||||
<el-checkbox label="b">{{$t('check.label.Tokyo')}}</el-checkbox>
|
||||
<el-checkbox label="c">{{$t('check.label.NewYork')}}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
check: ['a', 'b']
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
```
|
||||
|
||||
在同一文件夹下的 `lang.json`
|
||||
|
||||
``` json
|
||||
{
|
||||
"cn": {
|
||||
"hello": "你好",
|
||||
"check": {
|
||||
"title": "请选择",
|
||||
"label": {
|
||||
"Beijing": "北京",
|
||||
"Tokyo": "东京",
|
||||
"NewYork": "纽约"
|
||||
}
|
||||
}
|
||||
},
|
||||
"en": {
|
||||
"hello": "hello",
|
||||
"check": {
|
||||
"title": "Please choose",
|
||||
"label": {
|
||||
"Beijing": "Beijing",
|
||||
"Tokyo": "Tokyo",
|
||||
"NewYork": "NewYork"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ja": {
|
||||
"hello": "こんにちは",
|
||||
"check": {
|
||||
"title": "選択してください",
|
||||
"label": {
|
||||
"Beijing": "北京",
|
||||
"Tokyo": "東京",
|
||||
"NewYork": "ニューヨーク"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
详细教程请查看官方文档,见此页右上角的链接
|
||||
|
|
@ -1,221 +0,0 @@
|
|||
# 模拟数据
|
||||
|
||||
在 `src/mock/demo/001.js` 配置拦截返回的数据
|
||||
|
||||
## 使用
|
||||
|
||||
``` js
|
||||
import Mock from 'mockjs'
|
||||
|
||||
Mock.mock('/api/demo/001', {
|
||||
'list|4-10': [{
|
||||
'id|+1': 1,
|
||||
'name': '@CNAME',
|
||||
'star|1-5': '★',
|
||||
'delFlag|1': [0, 1],
|
||||
'creatDate': '@DATE',
|
||||
'address': '@CITY',
|
||||
'zip': '@ZIP'
|
||||
}]
|
||||
})
|
||||
```
|
||||
|
||||
请求数据
|
||||
|
||||
``` js
|
||||
ajax () {
|
||||
this.$axios.get('/api/demo/001')
|
||||
.then(res => {
|
||||
this.table.columns = Object.keys(res.data.list[0]).map(e => ({
|
||||
label: e,
|
||||
prop: e
|
||||
}))
|
||||
this.table.data = res.data.list
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
## mock 语法规范
|
||||
|
||||
Mock.js 的语法规范包括两部分:
|
||||
|
||||
1. 数据模板定义规范(Data Template Definition,DTD)
|
||||
2. 数据占位符定义规范(Data Placeholder Definition,DPD)
|
||||
|
||||
### 数据模板定义规范 DTD
|
||||
|
||||
**数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:**
|
||||
|
||||
``` js
|
||||
// 属性名 name
|
||||
// 生成规则 rule
|
||||
// 属性值 value
|
||||
'name|rule': value
|
||||
```
|
||||
|
||||
**注意:**
|
||||
|
||||
* _属性名_ 和 _生成规则_ 之间用竖线 `|` 分隔。
|
||||
* _生成规则_ 是可选的。
|
||||
* _生成规则_ 有 7 种格式:
|
||||
1. `'name|min-max': value`
|
||||
1. `'name|count': value`
|
||||
1. `'name|min-max.dmin-dmax': value`
|
||||
1. `'name|min-max.dcount': value`
|
||||
1. `'name|count.dmin-dmax': value`
|
||||
1. `'name|count.dcount': value`
|
||||
1. `'name|+step': value`
|
||||
* **_生成规则_ 的 含义 需要依赖 _属性值的类型_ 才能确定。**
|
||||
* _属性值_ 中可以含有 `@占位符`。
|
||||
* _属性值_ 还指定了最终值的初始值和类型。
|
||||
|
||||
<!-- 感谢 @麦少 同学对 Mock.js 语法的整理和分析,才有了这版相对清晰的语法文档。 -->
|
||||
|
||||
**生成规则和示例:**
|
||||
|
||||
#### 1. 属性值是字符串 **String**
|
||||
|
||||
1. `'name|min-max': string`
|
||||
|
||||
通过重复 `string` 生成一个字符串,重复次数大于等于 `min`,小于等于 `max`。
|
||||
|
||||
2. `'name|count': string`
|
||||
|
||||
通过重复 `string` 生成一个字符串,重复次数等于 `count`。
|
||||
|
||||
#### 2. 属性值是数字 **Number**
|
||||
|
||||
1. `'name|+1': number`
|
||||
|
||||
属性值自动加 1,初始值为 `number`。
|
||||
|
||||
2. `'name|min-max': number`
|
||||
|
||||
生成一个大于等于 `min`、小于等于 `max` 的整数,属性值 `number` 只是用来确定类型。
|
||||
|
||||
3. `'name|min-max.dmin-dmax': number`
|
||||
|
||||
生成一个浮点数,整数部分大于等于 `min`、小于等于 `max`,小数部分保留 `dmin` 到 `dmax` 位。
|
||||
|
||||
``` js
|
||||
Mock.mock({
|
||||
'number1|1-100.1-10': 1,
|
||||
'number2|123.1-10': 1,
|
||||
'number3|123.3': 1,
|
||||
'number4|123.10': 1.123
|
||||
})
|
||||
// =>
|
||||
{
|
||||
"number1": 12.92,
|
||||
"number2": 123.51,
|
||||
"number3": 123.777,
|
||||
"number4": 123.1231091814
|
||||
}
|
||||
```
|
||||
|
||||
#### 3. 属性值是布尔型 **Boolean**
|
||||
|
||||
1. `'name|1': boolean`
|
||||
|
||||
随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2。
|
||||
|
||||
2. `'name|min-max': value`
|
||||
|
||||
随机生成一个布尔值,值为 `value` 的概率是 `min / (min + max)`,值为 `!value` 的概率是 `max / (min + max)`。
|
||||
|
||||
#### 4. 属性值是对象 **Object**
|
||||
|
||||
1. `'name|count': object`
|
||||
|
||||
从属性值 `object` 中随机选取 `count` 个属性。
|
||||
|
||||
2. `'name|min-max': object`
|
||||
|
||||
从属性值 `object` 中随机选取 `min` 到 `max` 个属性。
|
||||
|
||||
#### 5. 属性值是数组 **Array**
|
||||
|
||||
1. `'name|1': array`
|
||||
|
||||
从属性值 `array` 中随机选取 1 个元素,作为最终值。
|
||||
|
||||
2. `'name|+1': array`
|
||||
|
||||
从属性值 `array` 中顺序选取 1 个元素,作为最终值。
|
||||
|
||||
3. `'name|min-max': array`
|
||||
|
||||
通过重复属性值 `array` 生成一个新数组,重复次数大于等于 `min`,小于等于 `max`。
|
||||
|
||||
4. `'name|count': array`
|
||||
|
||||
通过重复属性值 `array` 生成一个新数组,重复次数为 `count`。
|
||||
|
||||
#### 6. 属性值是函数 **Function**
|
||||
|
||||
1. `'name': function`
|
||||
|
||||
执行函数 `function`,取其返回值作为最终的属性值,函数的上下文为属性 `'name'` 所在的对象。
|
||||
|
||||
#### 7. 属性值是正则表达式 **RegExp**
|
||||
|
||||
1. `'name': regexp`
|
||||
|
||||
根据正则表达式 `regexp` 反向生成可以匹配它的字符串。用于生成自定义格式的字符串。
|
||||
|
||||
``` js
|
||||
Mock.mock({
|
||||
'regexp1': /[a-z][A-Z][0-9]/,
|
||||
'regexp2': /\w\W\s\S\d\D/,
|
||||
'regexp3': /\d{5,10}/
|
||||
})
|
||||
// =>
|
||||
{
|
||||
"regexp1": "pJ7",
|
||||
"regexp2": "F)\fp1G",
|
||||
"regexp3": "561659409"
|
||||
}
|
||||
```
|
||||
|
||||
### 数据占位符定义规范 DPD
|
||||
|
||||
_占位符_ 只是在属性值字符串中占个位置,并不出现在最终的属性值中。
|
||||
|
||||
_占位符_ 的格式为:
|
||||
|
||||
```
|
||||
@占位符
|
||||
@占位符(参数 [, 参数])
|
||||
```
|
||||
|
||||
**注意:**
|
||||
|
||||
1. 用 `@` 来标识其后的字符串是 _占位符_。
|
||||
2. _占位符_ 引用的是 `Mock.Random` 中的方法。
|
||||
3. 通过 `Mock.Random.extend()` 来扩展自定义占位符。
|
||||
4. _占位符_ 也可以引用 _数据模板_ 中的属性。
|
||||
5. _占位符_ 会优先引用 _数据模板_ 中的属性。
|
||||
6. _占位符_ 支持 _相对路径_ 和 _绝对路径_。
|
||||
|
||||
``` js
|
||||
Mock.mock({
|
||||
name: {
|
||||
first: '@FIRST',
|
||||
middle: '@FIRST',
|
||||
last: '@LAST',
|
||||
full: '@first @middle @last'
|
||||
}
|
||||
})
|
||||
// =>
|
||||
{
|
||||
"name": {
|
||||
"first": "Charles",
|
||||
"middle": "Brenda",
|
||||
"last": "Lopez",
|
||||
"full": "Charles Brenda Lopez"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,187 +0,0 @@
|
|||
# Util 实用工具
|
||||
|
||||
::: tip
|
||||
此文档已经不对应最新版本的代码,文档会在稍后完善
|
||||
:::
|
||||
|
||||
D2Admin 的 util 模块位置:`d2-admin/src/libs/util.js`
|
||||
|
||||
下面列举您在开发中很有可能会用到的 util 模块方法。这并不是模块的全部内容,如果您有兴趣可以亲自浏览模块代码。
|
||||
|
||||
## util.cookies.set
|
||||
|
||||
**介绍:**
|
||||
|
||||
存储 cookie 值
|
||||
|
||||
**参数**
|
||||
|
||||
| 参数名 | 介绍 | 必选 | 值类型 | 可选值 | 默认值 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| name | 名称 | 必选 | String | | |
|
||||
| value | 值 | 必选 | String | | |
|
||||
| setting | 设置 | 必选 | Object | [js-cookie](https://github.com/js-cookie/js-cookie#readme) | `{ expires: 1 }` |
|
||||
|
||||
**使用示例:**
|
||||
|
||||
``` js
|
||||
util.cookies.set({
|
||||
name: 'name',
|
||||
value: 'value',
|
||||
setting: {
|
||||
expires: 365
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
**为什么不直接使用 cookie:**
|
||||
|
||||
util.cookies 内部使用 js-cookie 进行操作,并且在 cookie 名称上多做了一层逻辑封装,例如
|
||||
|
||||
``` js
|
||||
util.cookies.set({
|
||||
name: 'name',
|
||||
value: 'value',
|
||||
setting: {
|
||||
expires: 365
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
实际存储的 cookie 是
|
||||
|
||||
`d2admin-${version}-name` : `value`
|
||||
|
||||
使用
|
||||
|
||||
``` js
|
||||
util.cookies.get('name')
|
||||
```
|
||||
|
||||
实际取的也是 `d2admin-${version}-name`
|
||||
|
||||
最后你的 cookie 信息实际上可能类似这样(举例):
|
||||
|
||||
* `d2admin-1.1.5-name` : `FairyEver`
|
||||
* `d2admin-1.1.5-uuid` : `h8dsafy98du9f6yadsyf`
|
||||
* `d2admin-1.1.5-token` : `dys87f89dsafy89adsh`
|
||||
|
||||
这样做的好处是可以保证如果您的 D2Admin 升级到了新版本,打开时使用的数据一定是重新初始化的,而您在使用 cookie 时无论赋值还是取值,都觉察不出这层包装
|
||||
|
||||
::: tip
|
||||
不止 cookie 这样,db 的存储逻辑也会自动根据版本区分
|
||||
:::
|
||||
|
||||
## util.cookies.get
|
||||
|
||||
**介绍:**
|
||||
|
||||
拿到 cookie 值
|
||||
|
||||
**参数**
|
||||
|
||||
| 参数名 | 介绍 | 必选 | 值类型 | 可选值 | 默认值 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| name | 名称 | 必选 | String | | |
|
||||
|
||||
**使用示例:**
|
||||
|
||||
``` js
|
||||
const data = util.cookies.get('name')
|
||||
```
|
||||
|
||||
## util.cookies.getAll
|
||||
|
||||
**介绍:**
|
||||
|
||||
拿到 cookie 全部的值
|
||||
|
||||
**参数**
|
||||
|
||||
无
|
||||
|
||||
**使用示例:**
|
||||
|
||||
``` js
|
||||
const data = util.cookies.getAll()
|
||||
```
|
||||
|
||||
## util.cookies.remove
|
||||
|
||||
**介绍:**
|
||||
|
||||
删除 cookie
|
||||
|
||||
**参数**
|
||||
|
||||
| 参数名 | 介绍 | 必选 | 值类型 | 可选值 | 默认值 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| name | 名称 | 必选 | String | | |
|
||||
|
||||
**使用示例:**
|
||||
|
||||
``` js
|
||||
util.cookies.remove('name')
|
||||
```
|
||||
|
||||
## util.title
|
||||
|
||||
**介绍:**
|
||||
|
||||
更新标题
|
||||
|
||||
**参数**
|
||||
|
||||
| 参数名 | 介绍 | 必选 | 值类型 | 可选值 | 默认值 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| titleText | title 名称 | 必选 | String | | |
|
||||
|
||||
**使用示例:**
|
||||
|
||||
``` js
|
||||
util.title('NewTitle')
|
||||
```
|
||||
|
||||
结果:**`${process.env.VUE_APP_TITLE}` | NewTitle**
|
||||
|
||||
::: tip
|
||||
`process.env.VUE_APP_TITLE` 在 `d2-admin/.env` 和 `d2-admin/.env.development` 中设置
|
||||
:::
|
||||
|
||||
## util.ua
|
||||
|
||||
**介绍:**
|
||||
|
||||
获取所有的 UA 信息
|
||||
|
||||
**参数**
|
||||
|
||||
无
|
||||
|
||||
**使用示例:**
|
||||
|
||||
``` js
|
||||
const ua = util.ua()
|
||||
```
|
||||
|
||||
结果示例
|
||||
|
||||
``` js
|
||||
{
|
||||
browser: {
|
||||
name: "Chrome",
|
||||
version: "67.0.3396.99",
|
||||
major: "67"
|
||||
},
|
||||
engine: {
|
||||
name: "WebKit",
|
||||
version: "537.36"
|
||||
},
|
||||
os: {
|
||||
name: "Mac OS",
|
||||
version: "10.13.4"
|
||||
},
|
||||
device: {},
|
||||
cpu: {}
|
||||
}
|
||||
```
|
||||
|
|
@ -1 +0,0 @@
|
|||
250e779feddcc8e47751f1920ce3a49e0997740e
|
||||
Loading…
Reference in New Issue