自动保存的实现

文章自动保存

上线之后才发现我的博客没有自动保存功能,不过具体实现应该不复杂。

参考ckeditor5官方文档Getting and saving data - CKEditor 5 Documentation,config配置信息如下:

ClassicEditor
    .create( document.querySelector( '#editor' ), {
        plugins: [
            Autosave,

            // ... other plugins
        ],

        autosave: {
            save( editor ) {
            	waitingTime: 5000, // in ms
                return saveData( editor.getData() );
            }
        },

        // ... other configuration options
    } );

ckeditor5-Autosave插件会根据config配置信息,在文章发生更改或者waitingTime之后,运行autosave后的js方法。后边文章的保存、前端状态的更新等就有我们自己来实现。

ckeditor5处理逻辑清晰了,后续实现就并不困难。前端获取文章信息,并使用ajax向服务器发出请求。服务器接收请求后分两种情况:

  1. 未保存过此文章。则new article,并将 保存/发布 状态标记置为保存,然后向前端返回保存成功的HttpResponse;
  2. 已保存过此文章。则update article,然后向前端返回保存成功的HttpResponse;

前端使用ajax代替submit,后端整合new article和uptate article方法,形成save方法,这就是实现自动保存的大致思路。

题外话

还想到两个比较有意思的功能:

  1. 使用jQuery监听用户输入,实现 Ctrl+Enter 快捷发布以及Ctrl+S 快捷保存或其它快捷键;
  2. 使用js在 document.ready() 之后,更改ckeditor的工具栏,实现ckeditor自由布局,或者向工具栏中插入按钮或其它元素。


登录后回复

共有0条评论

目 录