vue2.0实现富⽂本编辑器功能
前端富⽂本编译器使⽤总结:
UEditor:百度前端的开源项⽬,功能强⼤,基于 jQuery,但已经没有再维护,⽽且限定了后端代码,修改起来⽐较费劲
bootstrap-wysiwyg:微型,易⽤,⼩⽽美,只是 Bootstrap +
kindEditor:功能强⼤,代码简洁,需要配置后台,⽽且好久没见更新了
wangEditor:轻量、简洁、易⽤,但是升级到 3.x 之后,不便于定制化开发。不过作者很勤奋,⼴义上和我是⼀家⼈,打个call
quill:本⾝功能不多,不过可以⾃⾏扩展,api 也很好懂,如果能看懂英⽂的话...
summernote:没深⼊研究,UI挺漂亮,也是⼀款⼩⽽美的编辑器,可是我需要⼤的
在这⾥着重说⼀下这个 tinymce这个插件,
优势有三:
1. GitHub 上星星很多,功能也齐全;
2. 唯⼀⼀个从 word 粘贴过来还能保持绝⼤部分格式的编辑器;
3. 不需要后端⼈员扫码改接⼝,前后端分离;
上代码(vue中使⽤)
1.引⼊
npm install @tinymce/tinymce-vue -S
2.在 node_modules中到 tinymce/skins ⽬录,然后将 skins ⽬录拷贝到 static ⽬录下
// 如果是使⽤ vue-cli 3.x 构建的 typescript 项⽬,就放到 public ⽬录下,⽂中所有 static ⽬录相关都这样处理
4.然后将这个语⾔包放到 static ⽬录下,为了结构清晰,我包了⼀层 tinymce ⽬录
5.import
import tinymce from 'tinymce/tinymce'
import 'tinymce/themes/modern/theme'
import Editor from '@tinymce/tinymce-vue'
tinymce-vue 是⼀个组件,需要在 components 中注册,然后直接使⽤
<editor id="tinymce" v-model="tinymceHTML" :init="tinymceInit"></editor>
编辑器需要⼀个 skin 才能正常⼯作,所以要设置⼀个 skin_url 指向之前复制出来的 skin ⽂件
data () {
return {
tinymceHtml: '请输⼊内容',
init: {
language_url: '/static/tinymce/zh_CN.js',
language: 'zh_CN',
asp富文本编辑器
skin_url: '/static/tinymce/skins/lightgray',
height: 300,
plugins: 'link lists image code table colorpicker textcolor wordcount contextmenu',
toolbar: 'bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat', branding: false
}
}
},
6.同时在 mounted 中也需要初始化⼀次:
mounted(){
tinymce.init({}) // 特别注意这个空对象的存在,如果这个初始化空对象不存在依旧会报错
}
完整代码如下:
<template>
<div class='tinymce'>
<h1>tinymce</h1>
<!-- 富⽂本编辑组件 -->
<editor id='tinymce' v-model='tinymceHtml' :init='init'></editor>
<div v-html='tinymceHtml'></div>
</div>
</template>
<script>
import tinymce from 'tinymce/tinymce'
import 'tinymce/themes/modern/theme'
import Editor from '@tinymce/tinymce-vue'
import 'tinymce/plugins/image'
import 'tinymce/plugins/link'
import 'tinymce/plugins/code'
import 'tinymce/plugins/table'
import 'tinymce/plugins/lists'
import 'tinymce/plugins/contextmenu'
import 'tinymce/plugins/wordcount'
import 'tinymce/plugins/colorpicker'
import 'tinymce/plugins/textcolor'
export default {
name: 'tinymce',
data () {
return {
tinymceHtml: '请输⼊内容',
init: {
language_url: '/static/tinymce/zh_CN.js',
language: 'zh_CN',
skin_url: '/static/tinymce/skins/lightgray',
height: 300,
plugins: 'link lists image code table colorpicker textcolor wordcount contextmenu',
toolbar: 'bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat', branding: false
}
}
},
mounted () {
tinymce.init({})
},
components: {Editor}
}
</script>
其中的带plugins为扩展性操作,如果不需要,可以不引⼊。
效果如下图:
总结
以上所述是⼩编给⼤家介绍的vue2.0 实现富⽂本编辑器功能,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀
持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论