7) 文章管理&vue2富文本百度编辑器(UEditor)支持
一个内容系统自然离不开富文本编辑器的支持,这里选择了老牌的百度编辑器(UEditor)作为用户内容输入的控件。个人多年下来也习惯它的风格与功能也认为UEditor是非常棒的富文本编辑器。虽然目前已经很少再更新了,但也不妨碍我们使用。
下载UEditor包后 在public
将UEditor放到这个目录

vue里面还需要下章vue-ueditor-wrap组件 https://github.com/HaoChuan9421/vue-ueditor-wrap/tree/2.x 【一个“包装”了 UEditor 的 Vue 组件,支持通过 v-model 来绑定富文本编辑器的内容,让 UEditor 的使用简单到像 Input 框一样。】
Installation
服务端将使用 UEditor.Core 对 UEditor 文件上传支持【https://github.com/fangjun953322/UEditor.Core】
在YiAim.Cms.HttpApi
安装UEditor.Core
包依赖 将UEditor项目里面的config.json复制到YiAim.Cms.Web
里面并重命名为uEditorConfig.json
同时将文件设为可复制 在YiAim.Cms.HttpApi
的CmsHttpApiModule.cs 注入UEditor的服务
将blog里面的curd方法补全同时确保api能正常访问,这里将文章分类设为可空(本人项目需求)
需要注意的是添加、修改文章的时候要用事务,确保文章、标签、文章标签关联的数据能一起保存 这里使用abp自动生成的crud时,对于添加文章来说很明显是不能满足我们的业务需求的,所有这里选择了重写,按照满足业务需求的方式进行实现,同时采用 ABP框架的工作单元(UOW) 实现事务控制 【https://docs.abp.io/zh-Hans/abp/6.0/Unit-Of-Work】
Category.cs 改为
进行数据迁移,重新生成表结构。这是blog表已经移除了外键关联
IBlogService.cs
BlogService.cs
访问swagger 可以看到blog与UEditor的api都是正常的

回到vue里面,在 src\api\blogs\blog.js里面补全blog接口请求
blog.js
在 src\views\cms\blog文件夹里面,创建index.vue 列表页、edit.vue编辑页、create.vue创建页,不管是创建还是编辑本质都是from表单,所有把用户输入的表单抽出成为一个公共组件,新建components文件夹里面,新建ArticleFromDetail.vue
index.vue
create.vue
edit.vue
ArticleFromDetail.vue 文件里面为了防止代码过多、方便管理,我们将js、css 都单独抽离出来
articleEdit.js 放在 src\assets\js里面
articleEdit.css 放在 src\styles里面
由于前端代码太多,这里只贴几个关键的代码
来看一下目前实现的效果

到此,本章就基本完成文章管理&富文本百度编辑器(UEditor)的使用,文章的修改、删除之类的功能就不再贴出源码,有需要的可以拉取源码看一看。内容管理系统里面还差一个上传文件(图片)的功能。下章就完成图片上传、裁剪的相关功能。