创建一个低代码应用( Todo )
先导
在实现 Todo 待办事项这个功能之前, 先对页面布局信息进行个大概的了解。页面分为四个区域
,从左到右分别为应用栏(1)
,应用管理栏(2)
,设计视图(3)
和配置栏(4)
。 在页面上面的5号区域是页面的视图转换
,可以切换页面成PC/H5/IPad。而6号区域是页面的配置
。分别是页面的预览、刷新、设置和发布。 。
应用栏
页面最左边的应用栏。从上到下分别是 页面管理
、区块管理
、组件库
、大纲树
、历史记录
、API管理
、依赖管理
、项目配置
。
页面管理
相当于 Views, 新建页面也就是相当于 在 Views 创建一个 .vue 文件区块管理
相当于 Components 和公共组件库一样。大纲树
可以看到页面的 布局结构。历史记录
记录着 所有页面的记录,可以进行回退。可以看作 gitAPI管理
配置请求的处理。依赖管理
在应用开发中所需的依赖项目管理
管理着应用的信息
配置栏
配置栏 中 的展示分为 两种。
- 页面的配置
- 组件的配置
页面配置
页面的配置 分为四个标签页 设置、CSS、数据源、定义。
- 设置页 是进行页面的数据管理。
状态数据(state)
相当于 vue2 中 的data
;计算属性
,相当于 vue2 中computed
;组件方法
相当于methods
;侦听器
相当于watch
;生命周期
相当于 vue 中的生命周期。
- CSS 相当于 stylevue
<style lang="css" scoped></style>
- 数据源 就是请求接口返回来的数据。
- 定义
- 定义属性
- 定义事件
- 定义插槽
- 注入
inject
数据
定义属性、定义事件 常用于
区块
。 类似下面的代码。
<template>
<component :item="itemData" @update="onUpdate"></component>
</template>
在 区块中 定义属性
item
就是把itemData
数据 传到 区块的item属性
中,在区块的页面配置
的可以使用到。定义事件也是一样。
组件配置
组件是指 在 组件库中的所有组件。
组件的配置 也分为四个标签页:属性、样式、事件以及指令
- 属性 组件自身的属性或者可以自定义属性
- 样式 只对当前组件作用
- 组件 组件自身的事件或鼠标事件以及键盘事件
- 指令 和 vue 中的指令一致。
实现效果展示
实现 如下图效果
TodoList
分为三部分: 头部的输入框, 中间主体的列表以及底部。
页面的创建
在 页面管理
区域 点击右边加号按钮,出现弹窗。选择新增页面或新增目录,相当于在 Vue 项目中的 pages 创建页面。
创建完成后,效果如下:
点击 中间的最大的区域 设计视图 可以在右边区域看到
TodoList
这个页面的所有配置 或者 可以直接点击页面的设置按钮
也可以看到页面的配置
TodoList
分为三个部分,待办头部、待办项、待办底部。这三个部分分成三个区块进行开发。 首先完成待办头部的部分
待办头部区块
待办头部区块的创建
在左边的应用栏找到 区块管理
点击, 进入区块管理界面,在数据管理栏点击 +
按钮,打开新增区块弹窗。填写信息,创建区块。
头部区块创建完成后可以看到下面的效果。
注意 在开发的时候,记得注意 第二步 所指的信息。 它展现的名称代表着现在在哪个页面或者区块 进行开发
待办头部组件
待办头部 由一个输入框和一个按钮组成。
首页在 组件库
中 拖拽 组件到 待办区块
的设计视图
中
在大纲树中查看 待办头部区块 的布局信息
拖拽显示异常处理
如果看到的是上面的效果,可以在大纲树
中 直接 拖拽 组件 实现布局。
待办头部数据
待办头部 实现的功能是 用户输入数据,点击创建按钮或回车 将数据提交到列表中
创建数据
所有 在 待办头部
的区块中 设置 title
属性
数据 与 组件 绑定
将 title
属性 和 区块中 的 ElInput
组件的 value
进行双向绑定
提交方法
在 待办头部
的数据配置
中 创建 submit
方法
组件定义事件
在 submit 提交方法中 我们 触发
自定义事件
this.$emit('submit')
在头部完成后 要在 Todo
页面 实现 自定义事件的处理 。代码类似于下面
// Todo 页面
<template>
// 待办头部区块
<todo-header @submit='addTodo'></todo-header>
</template>
回车提交事件
当用户在 ElInput 输入框输入数据后 回车 执行 submit 方法
按钮点击事件
在 待办头部
的 ElButton
的 数据配置
中 实现 click
方法
待办头部完成
提交方法成功后再 列表中 增加一条数据。在提交方法中 我们触发了 自定义事件 submit
。 接下来回到 Todo 待办事项页面
实现 submit 的自定义事件
、
把 待办头部组件 todoHeader 从 区块管理中 拖拽到 Todo 待办事项页面
在 大纲树 中 可以看到 todoHeader 区块已经拖进 Todo 页面了。
Todo 页面 处理 自定义事件
在 待办头部 todoHeader 区块中,我们触发了 自定义事件 submit
。 接下来在 Todo 待办事项页面
实现 submit 的自定义事件
。
中间黑色代码区域实现的就是下方 addTodo 的方法
// Todo 页面
<template>
// 待办头部区块
<todo-header @submit='addTodo'></todo-header>
</template>
实现addTodo
把 自定义事件 submit 传过来的 title, 在 todo 的数据列表 list 中 增加
Todo定义数据
addTodo
方法与自定义事件绑定
Todo 页面的 方法addTodo 与 待办头部 自定义事件绑定submit 绑定
待办项区块
在 区块管理中 创建 TodoItem 待办项
区块,待办项 实现的是 列表的遍历渲染。
待办事项页面布局-样式
待办项 分为两个部分 左边 待办事项(列表中的title), 右边的 switch是否完成 和删除按钮 待办项的布局结构如下:
列表遍历
将 待办项 区块 拖到 Todo 待办事项 页面中
在 Todo 页面 实现 对 TodoHeader区块的遍历
由于 Todo 页面 配置的 list 数据 默认 是 [] 空数组,TodoHeader区块 会消失 可以 在 Page 页面 增加测试数据 使TodoHeader区块 出现
遍历数据与组件绑定
<template v-for="item in list">
<todo-item :item="item" :key=item.id></todo-item>
</template>
在 vue 项目中 实现 v-for 的效果可以这么写。
同样,在这个的开发中也是这个实现的
- 在 todo-item 区块 设置 item 属性 在 待办项 区块 中 的页面配置 中 创建 item 属性 实现了
:item
- 将
组件的item
属性 与 遍历的 item 进行绑定:item='item'
==> 组件item:item
等于 遍历的itemitem
key 绑定
item 数据 与 组件信息绑定
待办项 区块 左边标题 和 item的 title
绑定
待办项 区块 右边滑块 和 item的 done
绑定。
title样式
当 滑块 Switch 状态变成 true 已完成 title 展示效果中间加横线 在 组件中填 css
注意
滑块的value与 item.done直接进行绑定,这种做法是错误的。在 Vue 中 props 中的数据是不能直接修改的。此时的item.done 传进来的方式相当于 props
要把 数据 保存下来先, 再进行修改。
滑块的value与 item.done直接进行双向绑定
注意: 双向绑定是赋值,
不能
用?.
可选链的方式。
滑块状态改变
滑块改变时,待办项是否已完成状态也需要修改。switch 滑块状态change
时, 触发 update
方法
在 待办项 区块中 设置 组件方法 update。 然后再 switch 的事件中 设置 change 事件
<template>
<el-switch v-model="done" @change="update"></el-switch>
</template>
<script>
export default {
data() {
return {
done: '',
};
},
methods: {
update() {},
},
};
</script>
设置 组件方法 update, 触发了自定义事件。emit('change')
switch 的事件中 设置 change 事件, change, 执行 update 方法
滑块change自定义事件
<template>
<todo-item @change="updateTodo"></todo-item>
</template>
组件内部 (待办项区块) 中 switch 状态改变 触发 emit('change')了。 接下来 在组件(待办项区块)上 监听 change
事件
回到 Todo
待办事项 页面 中 点击 todoItem待办项
查看 这个区块的组件配置。在事件中 有个 组件事件
,这里展示的就是组件的自定义事件。
监听 组件 change
改变, 执行 updateTodo 方法。
Todo 页面
创建 updateTodo 方法
组件自定义事件 与 updateTodo 绑定
删除按钮点击
删除按钮点击 触发自定义事件 remove
1.第一步
在 组件(区块)上 定义 remove 方法
2.第二步
在 父组件 (页面) 上 找到该 组件(区块), 在组件(区块)的事件上 创建 页面的方法
将页面 方法和 组件 Remove 事件绑定
<todo-item @remove="removeTodo"></todo-item>
// 第一步 实现的是 @remove
// 第二部 实现的是 创建removeTodo方法 和 @remove="removeTodo" 绑定
区块底部
创建待办底部区块
然后在组件库
中拖拽自己想要的组件,这里用了 内置组件div
,最后把待办底部区块拖拽到 Todo
页面上。
实现底部展示 需要计算出总共有多少项,有多少项是待办的。
首页要知道 待办列表的长度。那么把 Todo 中的 list 数据传给 todoFooter
待办底部。 类似于 props
- 在
todoFooter
待办底部 创建自定义属性items
用来接收Todo
页面传进来的list
数据 - 在
Todo
页面 中 把list
数据 传给todoFooter
待办底部的自定义属性items
计算
计算出总共有多少项 有多少项是待办的 合并展示出来
最后将和并展示的数据绑定
展示效果
当 待办项 为空时,可以用 el-empty 展示空白数据,拖动 el-empty 组件到页面上,当待办项 长度为0时出现
Todo 功能基本实现了, 为了更好的展示效果,样式之类的自己修改。