基于vue和flex的自定义布局,点击查看demo。
S
前缀为Sunflower
简写,我们团队的命名空间。
- 使用
vue-cli@2.9.3
初始化项目;
vue init webpack vue-layout-diy
-
根据个人/团队代码规范,配置
eslint
; -
安装
vuex
; -
完成基于
flex
布局的组件SGrid
SGridItem
; -
引入
Element
,完成SEmpty
默认显示块;
异步组件配合代码分离时:
若使用插件的形式,
s-empty
在dev
模式下渲染正常,在buid
模式下无法渲染。ISSUE#1
在main.js
中通过Vue.component
直接注册则正常。
为了方便在GithubPage
展示效果,将build后dist
中的结果拷贝至demo
目录,并修改资源路径。
由于demo
并非部署在Web
服务器根目录下,所以分离的异步js文件找不到。ISSUE#2需要修改
config/index.js
中的build.assetsPublicPath
为./
,.gitignore
中取消忽略dist
目录,将dist
目录作为demo
页。
-
Vuex
中定义默认数据结构,再次封装SGrid
SGridItem
为SLayout
,实现初始化布局; -
实现拆分块功能;
- 方向随机1:1拆分;
- 设置拆分方向和比例;
- 注意
dialog-split
中.sync修饰符
的用法; dialog-split
传递prop: show
时,注意单向数据流的问题:在
DialogSplit
中,若定义一个本地的data
属性并将prop: show
用做其初始值,那么这个data
永远是false
,Dialog
永远不会被打开,所以需要用这个prop
的值来定义一个计算属性visible
,此时visible
将会跟prop: show
的值保持同步。在el-dialog
的prop: visible
中,我们不能使用修饰符.async
,因为这个修饰符会给el-dialog
添加update:visible
事件监听,关闭el-dialog
会触发此事件,也就是会强制修改刚才添加的计算属性visible
,这是绝对不允许的。在el-dialog
的close
事件中,我们触发了dialog-split
的update:show
事件,更新了data: show
的值,那么DialogSplit
的计算属性visible
也会相应更新。
- 注意
-
添加示例业务组件,完成选择内容功能。