二、解决方案
本项目的难点主要有以下几点:
前端
富文本编辑器的开发
网络上常见的输入框、记事本类软件及其相关教程大多只能简单地输入文字和插入图片,而具体文字的样式都依赖于开发者在展示的时候自己手动排版,抑制了用户的主观能动性。
本项目参考uni-app官方提供的hello uni-app 项目中的editor组件示例,并结合博客园等网站的评论区和开发者自身的使用需求,采用阿里巴巴iconfont字体图标库中的素材制作排版工具栏,uni-app的editor组件实现富文本的“所见即所得”式的编辑和预览。
-
富文本编辑器的前端实现
- template
- style
-
富文本编辑器的后端实现
使用editor组件提供的api
editorCtx
实现对编辑框中的文本的格式设置首先通过
uni.createSelectorQuery()
获取editorCtx
然后为每个标签设置
data-name
当点击这个标签时触发
format
函数,该函数先获取到形参中的name
和value
,再使用editorCtx
的format
方法设置格式
笔记本管理界面
开发者想实现点击Notes文字时从左边弹出笔记本管理工具栏,并且点击工具栏外的其他地方该工具栏都会缩回去。
解决方案是采用uni-app扩展组件中的uni-drawer
,通过修改其源码自定义该组件的宽度和遮罩层的颜色,实现了该功能。
后端
设计
该项目有两张数据表
分别是
notes数据表
notes
│
├─id 笔记的id
├─classid 笔记的分类
├─content 笔记的内容
├─description 笔记的摘要
├─posttime 笔记的最后修改时间
├─text 笔记的纯文本
└─title 笔记的题目
notebooks数据表
notebooks
│
├─id 笔记本的id
├─classid 笔记本中笔记的分类
└─name 笔记本的名字
操作
本项目通过uniCloud.callFunction(Object)
调用云函数实现数据库的增删改查
以"获取笔记数据并按照最后修改时间排序"介绍:
笔记分三种情况,如果是从"全部笔记"页面请求数据,则传入classid=-1
,直接获取所有数据并用orderBy
方法根据最后修改时间降序排列;如果是从"未分类笔记"页面请求数据,则传入classid=0
,用where
方法和or
操作符筛选并获取所需数据;如果是从已分类的笔记本中获取数据,则传入classid>=1
,同样用where
方法筛选并获取对应分类的笔记。