什么是 IDE?
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。
我们这里指的 IDE 其实是指富文本编辑器。
富文本编辑器的分类
相信很多人都使用过多种富文本编辑器
富文本编辑器常用于编辑博客、用户交互,富文本编辑器分为两种:
所见即所得、非所见即所得。当然,两种富文本编辑器的实现原理是不相同的。
所见即所得富文本编辑器
这种编辑器的实现原理很简单,用 textarea 元素就可以实现,假如要实现粗体、斜体、下划线、颜色字、图片的效果,只需在字的中间加上自定义标签即可。
例如:
[b]富文本编辑器[b] ,[img]src=”http://www.google.com.hk/intl/zh-CN/images/logo_cn.png”
[img]当然这些规则你得自己通过 js 进行定制,当 POST 提交后,再把这些标签转换为 html 标签。
非所见即所得富文本编辑器
前面提到的效果,我们无法在 textarea 中见到立竿见影的效果(所见即所得),而文本域本身也只是支持一些字符的输入,并不支持显示 html。
富文本编辑器实现原理
如何做到编辑像文本域,又能够即时所见呢?答案就是使用 iframe 作为内容编辑区域。iframe 本身也是一个嵌套页面,它如何能够被编辑呢?这里有一些关键的属性,它们可以做到让 iframe 可以被编辑。
1 | <!DOCTYPE HTML> |
代码关键点:
- designMode属性为 “on”
- contentEditable属性为 “true”,让 iframe 可编辑
效果如下图:
原型展示
实训平台在线 IDE 效果原型:
功能介绍
Vue-Quill-Editor
🍡Quill editor component for Vue, support SPA and SSR.
- 基于 Quill
- 适用于 Vue 的富文本编辑器
- 支持服务端渲染
- 支持单页应用。
开发环境
- Chrome
- Cmder
- Electron: 9.3.3
- Chrome: 83.0.4103.122
- Node.js: 12.14.1
- V8: 8.3.110.13-electron.0
- OS: Darwin x64 20.1.0
开发流程
- 下载 vue-quill-editor
npm install vue-quill-editor –save
- 下载 quill(vue-quill-editor 所需依赖)
npm install quill –save
-
1 | <template> |
- 自定义 toolbar
1 | s{ |
- 存储编码
1 | function escapeStringHTML(str) { |
技术点和解决方案
兼容
- ie10+
- chrome 22+
- safari 35+
- firefox 8+
性能
- 全局引入
1 | import Vue from "vue"; |
- 局部引入
1 | import "quill/dist/quill.core.css"; |
- 按需加载
1 | npm i --save babel-plugin-import |
服务器渲染
根据环境配置 SSR:
1 | if (process.browser) { |
直接上代码:
1 | <template> |
总结
I'm so cute. Please give me money.
- Post link: https://blog.gaocaipeng.com/2020/09/14/dv1nuc/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.