简介

Pell 是一款超轻量级的 web 文本编辑器,提供文本编辑能力,包括加粗,加斜,下划线,列表,插入链接等。

Pell 可高度自定义,整个编辑器的样式可方便地随意调节,编辑器的所有的图标和操作也都可以自定义。你完全可以通过简单地修改将其变成一个属于自己的编辑器。

Pell 的 min 版本大小只有 3.54 kB , gizp 之后只有 1.38 kB,真可谓超轻量,并且不依赖任何框架和库。

github: https://github.com/jaredreich/pell

live demo: https://jaredreich.com/pell 试一试 pell 的惊艳表现吧。

原理和使用

实现一个编辑器可以先了解 domcument.execCommand: https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand 这个 API,Pell 使用了这个 API 对文本进行处理,因此也决定了 Pell 只支持 IE9+。

Pell 其实是实现了一个最基本的编辑器,可以说小巧够用,也可以说简陋。。。监听 ActionBar 的按钮点击然后执行 execCommand 相应的命令罢了。

Pell 可以通过修改其样式文件来修改编辑器的样式,默认的 sass 也就几行。ActionBar 上的按钮样式可以通过创建时自定义实现。一个小文本编辑器可以使用如下代码自定义创建。

//执行和初始化的方法
import { exec, init } from 'pell'

const editor = init({
  //绑定的 dom
  element: document.getElementById('pell'),
  //内容发生变化时触发
  onChange: html => {
    document.getElementById('html-output').textContent = html
  },
  //默认以 P 标签分隔
  defaultParagraphSeparator: 'p',
  styleWithCSS: true,
  //自定义顶部 ActionBar
  actions: [
    //表示使用默认
    'bold',
    'underline',
    //自定义
    {
      name: 'italic',
      result: () => exec('italic')
    },
    //自定义 icon 等
    {
      name: 'custom',
      icon: '<b><u><i>C</i></u></b>',
      title: 'Custom Action',
      result: () => console.log('YOLO')
    },
    {
      name: 'image',
      result: () => {
        const url = window.prompt('Enter the image URL')
        if (url) exec('insertImage', url)
      }
    },
    {
      name: 'link',
      result: () => {
        const url = window.prompt('Enter the link URL')
        if (url) exec('createLink', url)
      }
    }
  ],
  //编辑器的自定义样式
  classes: {
    actionbar: 'pell-actionbar-custom-name',
    button: 'pell-button-custom-name',
    content: 'pell-content-custom-name',
    selected: 'pell-button-selected-custom-name'
  }
})

//默认文本
editor.content.innerHTML = '<b><u><i>Initial content!</i></u></b>'

Pell 实现的东西很简单,原理也不是很难,有时候我们有想法就应该去做,即使是 demo 或许也能够成功哦。

作者

Jared Reich  是一位来自加拿大阿尔伯塔的开发工程师

twitter:https://twitter.com/_jaredreich