Skip to content

创建一个低代码应用( Todo )

先导

在实现 Todo 待办事项这个功能之前, 先对页面布局信息进行个大概的了解。页面分为四个区域,从左到右分别为应用栏(1)应用管理栏(2)设计视图(3)配置栏(4)。 在页面上面的5号区域是页面的视图转换,可以切换页面成PC/H5/IPad。而6号区域是页面的配置。分别是页面的预览、刷新、设置和发布。 页面了解

应用栏

页面最左边的应用栏。从上到下分别是 页面管理区块管理组件库大纲树历史记录API管理依赖管理项目配置

  • 页面管理 相当于 Views, 新建页面也就是相当于 在 Views 创建一个 .vue 文件
  • 区块管理 相当于 Components 和公共组件库一样。
  • 大纲树 可以看到页面的 布局结构。
  • 历史记录 记录着 所有页面的记录,可以进行回退。可以看作 git
  • API管理 配置请求的处理。
  • 依赖管理 在应用开发中所需的依赖
  • 项目管理 管理着应用的信息

配置栏

配置栏 中 的展示分为 两种。

  1. 页面的配置
  2. 组件的配置

页面配置

页面的配置 分为四个标签页 设置、CSS、数据源、定义。

页面配置

  • 设置页 是进行页面的数据管理。
    1. 状态数据(state)相当于 vue2 中 的 data
    2. 计算属性,相当于 vue2 中 computed
    3. 组件方法相当于 methods
    4. 侦听器 相当于 watch
    5. 生命周期 相当于 vue 中的生命周期。
  • CSS 相当于 style
    vue
     <style lang="css" scoped></style>
  • 数据源 就是请求接口返回来的数据。
  • 定义
    1. 定义属性
    2. 定义事件
    3. 定义插槽
    4. 注入 inject 数据

定义属性、定义事件 常用于 区块。 类似下面的代码。

vue
<template>
 <component :item="itemData" @update="onUpdate"></component>
</template>

在 区块中 定义属性item 就是把 itemData数据 传到 区块的item属性中,在区块的页面配置的可以使用到。定义事件也是一样。

组件配置

组件是指 在 组件库中的所有组件。

组件的配置 也分为四个标签页:属性、样式、事件以及指令

  • 属性 组件自身的属性或者可以自定义属性
  • 样式 只对当前组件作用
  • 组件 组件自身的事件或鼠标事件以及键盘事件
  • 指令 和 vue 中的指令一致。

组件配置

实现效果展示

实现 如下图效果 页面

TodoList 分为三部分: 头部的输入框, 中间主体的列表以及底部。

页面的创建

页面管理 区域 点击右边加号按钮,出现弹窗。选择新增页面或新增目录,相当于在 Vue 项目中的 pages 创建页面。 新建页面

创建完成后,效果如下:

点击 中间的最大的区域 设计视图 可以在右边区域看到 TodoList 这个页面的所有配置 或者 可以直接点击页面的设置按钮 也可以看到页面的配置

新建页面完成

TodoList 分为三个部分,待办头部、待办项、待办底部。这三个部分分成三个区块进行开发。 首先完成待办头部的部分

待办头部区块

待办头部区块的创建

在左边的应用栏找到 区块管理 点击, 进入区块管理界面,在数据管理栏点击 + 按钮,打开新增区块弹窗。填写信息,创建区块。 新建头部区块

头部区块创建完成后可以看到下面的效果。

注意 在开发的时候,记得注意 第二步 所指的信息。 它展现的名称代表着现在在哪个页面或者区块 进行开发

新建头部区块完成

待办头部组件

待办头部 由一个输入框和一个按钮组成。

首页在 组件库 中 拖拽 组件到 待办区块设计视图

新建头部区块拖拽

在大纲树中查看 待办头部区块 的布局信息

新建头部区块拖拽完成

拖拽显示异常处理

新建头部区块拖拽异常

如果看到的是上面的效果,可以在大纲树中 直接 拖拽 组件 实现布局。

新建头部区块拖拽异常处理

待办头部数据

待办头部 实现的功能是 用户输入数据,点击创建按钮或回车 将数据提交到列表中

创建数据

所有 在 待办头部 的区块中 设置 title 属性

新建头部区块State

数据 与 组件 绑定

title 属性 和 区块中 的 ElInput组件的 value 进行双向绑定

新建头部区块StateModel

提交方法

待办头部数据配置中 创建 submit 方法

新建头部区块Methos

组件定义事件

在 submit 提交方法中 我们 触发 自定义事件

js
this.$emit('submit')

在头部完成后 要在 Todo 页面 实现 自定义事件的处理 。代码类似于下面

vue
  // 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 的自定义事件

todoHeader组件submit

中间黑色代码区域实现的就是下方 addTodo 的方法

vue
  // Todo 页面
 <template>
   // 待办头部区块
  <todo-header @submit='addTodo'></todo-header>
</template>

实现addTodo

把 自定义事件 submit 传过来的 title, 在 todo 的数据列表 list 中 增加

Todo定义数据

Todo定义数据

addTodo

addTodo

方法与自定义事件绑定

Todo 页面的 方法addTodo 与 待办头部 自定义事件绑定submit 绑定

addTodo

待办项区块

在 区块管理中 创建 TodoItem 待办项 区块,待办项 实现的是 列表的遍历渲染。 newTodoItem

待办事项页面布局-样式

待办项 分为两个部分 左边 待办事项(列表中的title), 右边的 switch是否完成 和删除按钮 待办项的布局结构如下: newTodoItemDone

列表遍历

将 待办项 区块 拖到 Todo 待办事项 页面中

在 Todo 页面 实现 对 TodoHeader区块的遍历 遍历List

由于 Todo 页面 配置的 list 数据 默认 是 [] 空数组,TodoHeader区块 会消失 可以 在 Page 页面 增加测试数据 使TodoHeader区块 出现

遍历数据与组件绑定

vue
<template v-for="item in list">
  <todo-item :item="item" :key=item.id></todo-item>
</template>

在 vue 项目中 实现 v-for 的效果可以这么写。

同样,在这个的开发中也是这个实现的

  1. 在 todo-item 区块 设置 item 属性 在 待办项 区块 中 的页面配置 中 创建 item 属性 实现了:item自定义item绑定数据
  2. 组件的item 属性 与 遍历的 item 进行绑定 :item='item' ==> 组件item :item 等于 遍历的item item自定义item绑定数据

key 绑定

key

item 数据 与 组件信息绑定

待办项 区块 左边标题 和 item的 title 绑定

title绑定

待办项 区块 右边滑块 和 item的 done 绑定。 model绑定

title样式

当 滑块 Switch 状态变成 true 已完成 title 展示效果中间加横线 class绑定 在 组件中填 css style

注意

滑块的value与 item.done直接进行绑定,这种做法是错误的。在 Vue 中 props 中的数据是不能直接修改的。此时的item.done 传进来的方式相当于 props

done绑定错误

要把 数据 保存下来先, 再进行修改。

done绑定

滑块的value与 item.done直接进行双向绑定 model绑定

注意: 双向绑定是赋值,不能?. 可选链的方式。

滑块状态改变

滑块改变时,待办项是否已完成状态也需要修改。switch 滑块状态change时, 触发 update 方法

在 待办项 区块中 设置 组件方法 update。 然后再 switch 的事件中 设置 change 事件

vue
<template>
  <el-switch v-model="done" @change="update"></el-switch>
</template>

<script>
export default {
  data() {
    return {
      done: '',
    };
  },
  methods: {
    update() {},
  },
};
</script>

设置 组件方法 update, 触发了自定义事件。emit('change') update

switch 的事件中 设置 change 事件, change, 执行 update 方法 change

滑块change自定义事件

vue
<template>
  <todo-item @change="updateTodo"></todo-item>
</template>

组件内部 (待办项区块) 中 switch 状态改变 触发 emit('change')了。 接下来 在组件(待办项区块)上 监听 change 事件

change自定义

回到 Todo 待办事项 页面 中 点击 todoItem待办项 查看 这个区块的组件配置。在事件中 有个 组件事件,这里展示的就是组件的自定义事件。

changePage自定义

监听 组件 change 改变, 执行 updateTodo 方法。

Todo 页面 创建 updateTodo 方法 updateTodo

组件自定义事件 与 updateTodo 绑定

newPageCustomChangeBind

删除按钮点击

删除按钮点击 触发自定义事件 removenewItemCustomMethodClick

1.第一步

在 组件(区块)上 定义 remove 方法

newItemCustomMethodRemove

2.第二步

在 父组件 (页面) 上 找到该 组件(区块), 在组件(区块)的事件上 创建 页面的方法

newPageRemoveMethod

将页面 方法和 组件 Remove 事件绑定

newPageCustomRemoveBind

js
  <todo-item @remove="removeTodo"></todo-item>
  // 第一步 实现的是 @remove
  // 第二部 实现的是 创建removeTodo方法 和 @remove="removeTodo" 绑定

区块底部

创建待办底部区块然后在组件库中拖拽自己想要的组件,这里用了 内置组件div,最后把待办底部区块拖拽到 Todo 页面上。

实现底部展示 需要计算出总共有多少项,有多少项是待办的。

首页要知道 待办列表的长度。那么把 Todo 中的 list 数据传给 todoFooter 待办底部。 类似于 props

  1. todoFooter 待办底部 创建自定义属性 items 用来接收 Todo 页面传进来的 list 数据 newFooterCustomState
  2. Todo 页面 中 把 list 数据 传给 todoFooter 待办底部的自定义属性 itemsnewPageItems

计算

计算出总共有多少项 newFooterTotal 有多少项是待办的 newFooterDone 合并展示出来 newFooterSummary

最后将和并展示的数据绑定

newFooterBind

展示效果

当 待办项 为空时,可以用 el-empty 展示空白数据,拖动 el-empty 组件到页面上,当待办项 长度为0时出现

newPageEmpty

Todo 功能基本实现了, 为了更好的展示效果,样式之类的自己修改。

Released under the MIT License.