当前位置:Gxlcms > JavaScript > Vue+Webpack完美整合富文本编辑器TinyMce的方法

Vue+Webpack完美整合富文本编辑器TinyMce的方法

时间:2021-07-01 10:21:17 帮助过:3人阅读

选择一个合适的富文本编辑器对于一个前端项目至关重要,这次我基于Vue来开发我项目中的前端部分,经过权衡选择了tinymce。其在UI,功能都很适合,tinymce官方文档:点击打开链接;

引入tinymce 我选用的版本4.7.4

  1. npm install tinymce -S

将tinymce创建为Vue的组件,便于日后复用,创建组件editor.vue

  1. <template>
  2. <textarea :id="id" :value="value"></textarea>
  3. </template>
  4. <script>
  5. // Import TinyMCE
  6. import tinymce from 'tinymce/tinymce';
  7. import 'tinymce/themes/modern/theme';
  8. import 'tinymce/plugins/paste';
  9. import 'tinymce/plugins/link';
  10. const INIT = 0;
  11. const CHANGED = 2;
  12. var EDITOR = null;
  13. export default {
  14. props: {
  15. value: {
  16. type: String,
  17. required: true
  18. },
  19. setting: {}
  20. },
  21. watch: {
  22. value: function (val) {
  23. console.log('init ' + val)
  24. if (this.status == INIT || tinymce.activeEditor.getContent() != val){
  25. tinymce.activeEditor.setContent(val);
  26. }
  27. this.status = CHANGED
  28. }
  29. },
  30. data: function () {
  31. return {
  32. status: INIT,
  33. id: 'editor-'+new Date().getMilliseconds(),
  34. }
  35. },
  36. methods: {
  37. },
  38. mounted: function () {
  39. const _this = this;
  40. const setting =
  41. {
  42. selector:'#'+_this.id,
  43. language:"zh_CN",
  44. init_instance_callback:function(editor) {
  45. EDITOR = editor;
  46. console.log("Editor: " + editor.id + " is now initialized.");
  47. editor.on('input change undo redo', () => {
  48. var content = editor.getContent()
  49. _this.$emit('input', content);
  50. });
  51. },
  52. plugins:[]
  53. };
  54. Object.assign(setting,_this.setting)
  55. tinymce.init(setting);
  56. },
  57. beforeDestroy: function () {
  58. tinymce.get(this.id).destroy();
  59. }
  60. }
  61. </script>

在钩子mounted 进行了tinymce的初始化工作,调用 tinymce.init(setting),setting为配置信息这样我们便初步配置完成了editor组件

在其他页面使用组件

  1. <template>
  2. <div class="app-container">
  3. <div>
  4. <!-- 组件有两个属性 value 传入内容双向绑定 setting传入配置信息 -->
  5. <editor class="editor" :value="content" :setting="editorSetting" @input="(content)=> content = content"></editor>
  6. </div>
  7. </div>
  8. </template>
  9. <script>
  10. import editor from '@/components/editor'
  11. export default {
  12. name: "editor-demo",
  13. data: function () {
  14. return {
  15. content:'我是富文本编辑器的内容',
  16. //tinymce的配置信息 参考官方文档 https://www.tinymce.com/docs/configure/integration-and-setup/
  17. editorSetting:{
  18. height:400,
  19. }
  20. }
  21. },
  22. components:{
  23. 'editor':editor
  24. }
  25. }
  26. </script>
  27. <style scoped>
  28. </style>

此刻我们已经完成了百分之90的配置 ,最后只需将node_modules/_tinymce@4.7.4@tinymce/文件夹下的skins文件夹放置于项目根目录下,这样tinymce才可获取皮肤css文件

下载并解压语言包langs文件夹放置项目根目录,中文下载链接 ,其他语言包选择;

之后在页面轻松使用组件


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

人气教程排行